Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt graphiclines löschen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

graphiclines löschen

faxinger
Beiträge gesamt: 246

4. Dez 2017, 14:08
Beitrag # 1 von 5
Bewertung:
(1944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

wenn ich das folgende Skript ausführe werden mir nicht alle Linien auf einmal gelöscht sondern es bleibt immer eine übrig:
Code
var _doc = app.activeDocument.activeLayer; 
var _linien = _doc.graphicLines;

//.leftLineEnd.ArrowHead.NONE;


for (k = 0; k < _linien.length; k++) {

_linien[k].remove()

};


Außerdem möchte ich nur jene Linien löschen die keine Spitzen oder Dreiecke haben - ist noch auskommentiert.

Habt ihr eine Idee warum nicht alle Linien auf einmal gelöscht werden bzw. wie ich nur die Linien ohne Spitzen löschen kann?

(Dieser Beitrag wurde von faxinger am 4. Dez 2017, 14:10 geändert)
X

graphiclines löschen

Martin Fischer
  
Beiträge gesamt: 12779

4. Dez 2017, 14:39
Beitrag # 2 von 5
Beitrag ID: #561166
Bewertung:
(1938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mit Deiner Schleife von vorne nach hinten ändern sich mit jeder gelöschten Linie die Indexe (Indices) der noch zu löschenden Linien: eine weg, dann ist die vormals zweite die erste - die wird aber übersprungen, weil jetzt die zweite dran ist und nicht mehr die erste ....

Kehre die Reihenfolge der Schleife um (von hinten nach vorne) und das Problem sollte gelöst sein.


Du könntest alternativ auch mal Folgendes versuchen (ungetestet):
Code
app.activeDocument.activeLayer.graphicLines.everyItem().remove(); 



als Antwort auf: [#561162]

graphiclines löschen

faxinger
Beiträge gesamt: 246

4. Dez 2017, 15:01
Beitrag # 3 von 5
Beitrag ID: #561171
Bewertung:
(1932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin,

ja mit evry item funktioniert es wunderbar.

Aber ich möchte nur diese Linien löschen die keine Spitze haben. (kein Dreieck, Kreis etc)

Da muss ich doch noch die graphiclines unterscheiden..
die mit spitze sollen bleiben die ohne gelöscht. Bzw. nur die ohne Spitze löschen.

Aber so wie ich es auskommentiert hatte funktionierte es nicht.


als Antwort auf: [#561166]

graphiclines löschen

Kai Rübsamen
Beiträge gesamt: 4684

4. Dez 2017, 16:05
Beitrag # 4 von 5
Beitrag ID: #561176
Bewertung:
(1913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

1. "_doc = activeLayer" ist verwirrend. Gewöhn dir solche Namen besser nicht an.
2. Wenn du die Linien unterscheiden willst, brauchst du auch den entsprechenden Befehl dafür und nicht nur die Eigenschaft
3. Martin hat es bereits geschrieben: Wenn du etwas löschen willst, funktioniert vorwärts manchmal, rückwärts aber immer. Daher immer rückwärts nehmen!

Code
// das aktive Dokument 
var curDoc = app.activeDocument;
// die aktive Ebene
var curLayer = curDoc.activeLayer;
// alle Linien auf der aktiven Ebene
var allLinesOnCurLayer = curLayer.graphicLines.everyItem().getElements();

// die Schleife muss rückwärts laufen, da du etwas löschen willst
for (var i = allLinesOnCurLayer.length-1; i >= 0 ; i--) {
var curLine = allLinesOnCurLayer[i];
// prüfen ob die Linie ohne Pfeile ist
if (curLine.leftLineEnd == ArrowHead.NONE) {
curLine.remove();
}
}



als Antwort auf: [#561171]

graphiclines löschen

faxinger
Beiträge gesamt: 246

4. Dez 2017, 16:36
Beitrag # 5 von 5
Beitrag ID: #561183
Bewertung:
(1905 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Kai,

genau dahin wollte ich.

Perfekt.


als Antwort auf: [#561176]
X