Hallo zusammen, ich stehe gerade bei einem Script auf dem Schlauch und komme nicht weiter.
Innerhalb eines InDesign-Dokumentes sind mehrere InDesign Dateien als modulare Texte eingebunden. Da es diese Texte auf Deutsch und Englisch gibt, hat jede eingebundene Datei die Ebenen "DE" und "EN". Natürlich ist immer nur eine von den beiden Ebenen sichtbar.
Mit einem Script möchte ich jetzt die Sichtbarkeit dieser Ebenen umschalten. Also von Deutsch nach Englisch und entgegengesetzt. So zu sagen hin und her toggeln.
Bei meinem Script funktioniert das Einblenden der nicht sichtbaren Ebenen und auch das Ausblenden der sichtbaren. Allerdings nur, wenn ich nur eine Sache von beiden im Script aktiviere und die andere auskommentiere. Sind beide aktiv kommt es immer zu einem Fehler "Fehlernummer 30476 - Die angeforderte Aktion konnte nicht ausgeführt werden, da das Objekt nicht mehr existiert" Zeile 57.
Und genau hier komme ich nicht weiter. Für Tipps und Hilfe bin ich sehr dankbar.
Grüße Marcel
Hier das Script:
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Hab es mir nur grob(!) angesehen. 1.) Die "k"-Schleife muss doch sicherlich VOR dem Toggeln beendet sein/werden?! 2.) Das Toggeln würde ich mittels des Not-Operators lösen, der schaltet von True auf False und umgekehrt.
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
danke für die Hilfe. Nicht schlecht die Idee mit dem Not-Operator. Macht es auch etwas kürzer. Allerdings läuft das Script genau so weit wie meins.
In dem Testdokument habe ich drei InDesign Dateien mit den "DE" und "EN" Ebenen eingebunden.
Beim Test sind die "DE" Ebenen sichtbar. Beim Ausführen des Scripts wird bei der Ersten Datei die "DE" Ebene ausgeblendet und dann kommt der Fehler "... da das Objekt nicht mehr existiert" Zeile 38.
Das ist dann in Deinem Script hier:
und bei mir ist das hier:
Der Fehler kommt, wenn innerhalb einer Datei die Sichtbarkeit der nächste Ebene umgeschaltet werden soll. Ich frage mich, welches Objekt in dem Moment nicht mehr existiert. Die Ebene ist ja noch da.
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Durch rumtesten ist mir aufgefallen, dass das Script nur mit der letzten (untersten) Ebene einer eingebundenen Datei funktioniert.
Die Ebene "DE" befindet sich unterhalb der Ebene "EN". DE geht, EN gibt den Fehler. Befinden sich oberhalb DE weitere Ebenen, so erscheint der Fehler sobald eine dieser Ebenen umgeschaltet werden sollen.
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Das habe ich bereits an allen möglichen Stellen gemacht. Ansprechen kann man die anderen (oberen) Ebenen immer und alle möglichen Informationen abrufen/ausgeben. Nur bei .CurrentVisibility geht es schief.
...
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Hallo zusammen, mit InDesign-Scripting habe ich mich schon lange nicht mehr beschäftigt. Und die VBS-Syntax beherrsche ich auch nicht.
Wenn ich allerdings von der Javascript-Syntax in Illustrator ausgehe, dann sollte doch eine Vorgehensweise in der folgenden Art zielführend sein:
stelle eine definierte Ausgangslage her Prüfe ob Layer DE existiert schalte Layer DE sichtbar Prüfe ob Layer EN existiert schalte Layer EN sichtbar
wähle den Layer der sichtbar bleiben soll schalte den Layer (nochmals) sichtbar schalte den anderen Layer unsichtbar
Der nachfolgende [JS] Code ist zwar für Illustrator aber vielleicht könnt ihr den selbst portieren.
Das ist nur ein sehr allgemein gehaltener Code. Er sollte aber zeigen, wie es auf jeden Fall funktionieren muss – unabhängig von der Scriptsprache oder Programm. Das man Teile des Codes weglassen, praktischer programmieren oder auch verfeinern kann ist selbstredend.
Viele Grüße pixxxelschubser
Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean. Isaac Newton
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Auch nur JS, aber man sollte das adaptieren können. Das Problem ist, dass ein Objekt, dass in einer Variable liegt, nach dem Ändern einer Ebene nicht mehr vorhanden ist:
Wenn ich beim zweiten Durchlauf "curItem" prüfe, gibt es das nicht mehr. Frage ich das Objekt jedes Mal erneut ab, geht es:
Gruß Kai Rübsamen
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Ich habe jetzt das Problem gefunden. Ein Eintrag in einem anderen Forum hat mich auf die Spur gebracht.
Bei Indesign ist es so, das sich die ID einer eingebundenen Datei nach dem Ein-/Ausblenden einer Ebene ändert. Die Datei ist danach zwar noch vorhanden, wegen der neuen ID aber plötzlich unbekannt.
Wie ich sehe, hat Kai das Problem auch schon erkannt.
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
wir hatten das Problem mit der sich ändernden ID auch schon hier diskutiert. Allerdings im Hinblick auf platzierte AI-Dateien, die nach dem Platzieren geändert und dann upgedatet wurden. Ist ein paar Jahre her, denke ich… ***** Mit herzlichem Gruß, Uwe Laubender
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
auf eine sich ändernde ID soll man auch mal kommen. Da rechnet man ja eigentlich nicht mit. Wobei InDesign ja immer wieder für Überraschungen und Eigenheiten gut ist.
@Kai Rübsamen Dein Script läuft so wie ich es mir gedacht habe. Danke Ich sollte mich mehr mit JavaScript befassen. VB ist offensichtlich nicht so weit verbreitet und vielleicht auch veraltet". Scheinbar bietet JS auch mehr Möglichkeiten.
@Alle Danke für die vielen Rückmeldungen.
Grüße Marcel
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Nein. VBS ist nicht veraltet. Genausowenig wie Applescript. Und diese beiden plattformspezifischen Sprachen bieten genaugenommen sogar mehr Möglichkeiten als Javascript (genauer: Adobe Extendscript).
Der große Vorteil von Javascript ist einfach der: Diese Sprache ist plattformübergreifend und funktioniert im Großen und Ganzen (mit klitzekleinen Ausnahmen) sowohl unter Windows und MacOS
Viele Grüße pixxxelschubser
Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean. Isaac Newton
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Und nicht zu vergessen, für praktisch jedes Anwendungsproblem gibt es irgendwo eine Library. Deshalb entwickle ich ich heute fast ausschließlich mit JavaScript. Und es ist zusatzlich auch noch die Skriptsprache für Browseranwendungen. -> Nodes, Electron u. ä.
:-) Ok, offensichtlich fand niemand meinen Code interessant genug um ihn auszuprobieren, denn die Umschaltung funktioniert natürlich nur für das Dokument.
Wortsalat möchte hingegen die Ebenen im Dokument ausdrücklich nicht umschalten, denn die englische Ebene ist in seinem Beispieldokument leer.
Ich habe deshalb diesen Teil, im jetzt hoffentlich richtig funktionierenden Skript, auskommentiert.
Es ist übrigens nicht so, dass sich die ID der importierten Seite ändert, sondern es wird beim Umschalten der Sichtbarkeit ein komplett neues Objekt "ImportedPage" erzeugt.
Damit kann man das Objekt nicht über den Namen oder ein eingefügtes Label wiederfinden.
Der Container (Parent), im Beispiel ein Rectangle, bleibt hingegen erhalten und wird im folgenden Skript benutzt.
Hallo Werner, ich möchte noch vor einer "bösen Falle" warnen:
Ein bestimmter Name einer Ebene mag in InDesign nur ein einziges mal vergebbar sein, in beispielsweise PhotoShop oder Illustrator ist das nicht der Fall. Da können beliebige Ebenen den gleichen Namen tragen. ***** Mit herzlichem Gruß, Uwe Laubender
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Und ich halte InDesigns Design dieses Features für einen Fehler.
Aber richtig schlimm es natürlich, dass sich das Design innerhalb einer Produktfamilie unterscheidet.
Natürlich möchte ich mehrere Ebenen gleich benennen können, das zeigt gerade die Verwendung von Länderkennzeichen. Es könnte durchaus gewünscht sein, dass man mehrere Ebenen für ein Land verwenden möchte.
Deshalb wäre es vermutlich sinnvoller, das Skript so zu ändern, dass abgefragt würde, ob ein LKZ enthalten ist.
Generell würde ich allerdings in einem professionellen Skript die Ebenen als Parameter in zwei Arrays ([visible],[invisible]) übergeben und keinesfalls irgendwelche Abfragen hart codieren.
Ich habe es getestet und es ist mir auch aufgefallen ;-)
@Kai Rübsamen Ich habe versucht, das Script in VBS zu schreiben. Komme aber mit "parent" nicht klar. Dafür programmiere ich dann doch zu selten.
Dafür habe ich jetzt noch eine andere Variante in VBS geschrieben. Vielleicht etwas umständlich aber es funktioniert. In diesem Script lese ich die IDs der eingebundenen InDesign Dateien in ein Array ein (separate Funktion). Das Ansprechen der Dateien erfolgt über die IDs. Nach jedem Umschalten einer Ebene wird das Array mit den IDs aktualisiert.
(Dieser Beitrag wurde von Wortsalat am 11. Dez 2017, 11:42 geändert)
Zustand der Sichtbarkeit bei Ebenen hin und her toggeln
Mein letztes Script führt zu einem Fehler, wenn in einer eingebundenen Datei die Ebene "DE" oder "EN" nicht vorhanden ist. Hier noch eine Erweiterung, in der geprüft wird, ob die Ebenen vorhanden sind.