Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung JavaScript Illustrator-Skript: Ausgeblendete Ebenen löschen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Illustrator-Skript: Ausgeblendete Ebenen löschen

q3player
Beiträge gesamt: 70

6. Okt 2015, 12:20
Beitrag # 1 von 4
Bewertung:
(4281 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

nachfolgend ein kurzes Skript, mit dem ich einfach alle ausgeblendeten Ebenen einer AI löschen möchte. Ich weiß, daß das auch im Programm selbst über Menübefehle geht, ich brauche das aber im Rahmen eines größeren Skripts als Bestandteil in JS.

Code
// Ausgeblendete Ebenen löschen 
for (i = 0; i < activeDocument.pageItems.length; i++) {
obj = activeDocument.pageItems[i];
if ((obj.hidden)) {
obj.remove();
}
}

Das Ergebnis ist aber nicht so wie ich mir das gedacht habe (siehe Screenshot).

http://transfer.can-do-design.de/...lete_hidden_prob.jpg

Aus mir unerfindlichen Gründen werden einzelne Ebenen und auch Gruppen nicht gelöscht. Ganz rechts sind die nicht gelöschten (1 Ebene und 1 Gruppe) nochmal blau markiert.

Wo ist da der Fehler im Code?

q3player
X

Illustrator-Skript: Ausgeblendete Ebenen löschen

q3player
Beiträge gesamt: 70

6. Okt 2015, 14:44
Beitrag # 2 von 4
Beitrag ID: #543383
Bewertung:
(4235 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Selbst gelöst per ausgiebiger Google-Suche :-)

Code
var idoc = app.activeDocument;   

for (i = idoc.pageItems.length-1; i>=0; i--){
if (idoc.pageItems[i].hidden == true){
idoc.pageItems[i].remove();
}
}


Das Problem war, daß beim Löschen der Ebenen von oben nach unten sich die Reihenfolge und somit der Index der Ebenen ändert. Deshalb überspringt das Skript einige Ebenen. Die obige Lösung arbeitet sich von unten nach oben durch die Ebenen-Hierarchie und alles klappt wie es soll.


als Antwort auf: [#543370]

Illustrator-Skript: Ausgeblendete Ebenen löschen

pixxxelschubser
Beiträge gesamt: 1708

10. Okt 2015, 11:07
Beitrag # 3 von 4
Beitrag ID: #543506
Bewertung:
(4135 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo @q3player,
beim Löschen sollte man i.d.R. die Schleife immer rückwärts durchlaufen. Und dein Skriptschnipsel scheint ja jetzt auch das zu machen, was du wolltest.

Deshalb nur ein kleiner Hinweis:
Es macht aber nicht das, was du beschrieben hast – es löscht keine Ebenen, nur Objekte (trenne daher bitte künftig die Begrifflichkeiten Ebenen und Objekte voneinander)!

Und genau deshalb wird dein Skript früher oder später Fehlermeldungen werfen. Nämlich dann, wenn die „eigentliche“ Ebene oder Unterebene (auf der sich die ausgeblendeten Objekte befinden) ebenfalls ausgeblendet oder gesperrt ist.
--> Target layer cannot be modified


als Antwort auf: [#543383]

Illustrator-Skript: Ausgeblendete Ebenen löschen

q3player
Beiträge gesamt: 70

11. Okt 2015, 22:14
Beitrag # 4 von 4
Beitrag ID: #543533
Bewertung:
(4044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für den Hinweis. Werde ich nochmal überarbeiten müssen.


als Antwort auf: [#543506]
X