[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt 2 immer wiederkehrende Objekte im gesamten Dokument löschen

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

2 immer wiederkehrende Objekte im gesamten Dokument löschen

JoPo
Beiträge gesamt: 534

14. Okt 2014, 14:23
Beitrag # 1 von 38
Bewertung:
(9453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi zusammen,

isr es möglich efolgendes Problem zu scripten?

1. Eine weiße Linie in einer bestimmten Dicke soll aus einem Dokument mit 700 Seiten enfernt werden. Auf etwa 600 Seiten kommt dies Linie 1 bis 15 mal vor.

2. Ein Linie in einer bestimmten Farbe, bestimmten Breite und bestimmten Stärke löschen. Gleiches wie unter Punkt 1.

Leider kann ich unter CS6 solche Objekte zwar suchen und finden, aber bei S&E nur andere Obejktformate zuweisen, nur gänzlih löschen geht nicht. Oder doch? Mit Text funktioniert das, aber leider nicht mit Objekten.

Vielen Dank für Hinweise wie das funktionieren kann.

Salü
Joachim
X

2 immer wiederkehrende Objekte im gesamten Dokument löschen

drerol74
Beiträge gesamt: 507

15. Okt 2014, 01:14
Beitrag # 2 von 38
Beitrag ID: #533017
Bewertung:
(9390 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Joachim,

kommte jetzt auch darauf an, wie dein Dokument aufgebaut ist.

Aber ganz allgemein: Alle Elemente sammeln und dann vergleichen:

Code
GraphicLine.strokeWeight == 2  
GraphicLine.strokeColor.name == "Paper"


Länge müsste man sich ausrechnen.

Schöne Grüße
Roland


als Antwort auf: [#532996]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

JoPo
Beiträge gesamt: 534

15. Okt 2014, 10:45
Beitrag # 3 von 38
Beitrag ID: #533023
Bewertung:
(9338 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,

danke für Deine Antwort.
Leider verstehe ich sie nicht.
Die beiden Codezeilen sollen wohl die Suchhilfe innerhalb eines kompletten Scriptes darstellen?
Und was meinst du mit "Länge müsste man sich ausrechnen"?
Meinst du mit Länge die Häufigkeit des Vorkommens des gesuchten Objektes?

Ich kann nicht scripten. Daher hoffte ich auf ein Script, in dem ich "nur" die Werte für die Farbe, die Linienstärke und die Linienlänge angeben muss.

Ich kann ein Beispieldokument bereitstellen, für CS6.

Salü
Joachim


als Antwort auf: [#533017]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

Kai Rübsamen
Beiträge gesamt: 4684

15. Okt 2014, 11:24
Beitrag # 4 von 38
Beitrag ID: #533024
Bewertung:
(9243 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jo,

versuch es mal so:
Code
var meineFarbe = "meineFarbe"; 
var meineStrichstaerke = 2;

var curDoc = app.activeDocument;
var allLines = curDoc.graphicLines;

for ( var i = allLines.length-1; i>-1; i-- ) {
var curLine = allLines[i];
if ( curLine.strokeWeight == meineStrichstaerke && curLine.strokeColor.name == meineFarbe ) {
curLine.remove();
}
}


@ alle:
Ich wollte eigentlich zuerst so suchen:
Code
var curDoc = app.documents[0];  
var curColor = curDoc.swatches.itemByName("C=15 M=100 Y=100 K=0");

// das Objekt mit entsprechender Formatierung suchen
app.findObjectPreferences = app.changeObjectPreferences = null;
app.findObjectPreferences.strokeWeight = 2;
app.findObjectPreferences.strokeColor = curColor;
var fund = curDoc.findObject();
app.findObjectPreferences = app.changeObjectPreferences = null;

for ( var f = 0; f < fund.length; f++ ) {
var curFund = fund[f];
// die Linien löschen
fund[f].remove();
}


Beim Ausführen der Zeile app.findObjectPreferences.strokeColor = curColor;
erhalte ich einen Fehler, egal ob ich eine Variable oder den String direkt eingebe.
Hans H. konnte in der Zwischenzeit den Fehler bestätigen.

Hat jemand eine Idee, ob es sich hierbei um einen bug handelt oder wo mein Fehler liegt? Danke.


als Antwort auf: [#533023]
(Dieser Beitrag wurde von Kai Rübsamen am 15. Okt 2014, 11:26 geändert)

2 immer wiederkehrende Objekte im gesamten Dokument löschen

mx
Beiträge gesamt: 161

15. Okt 2014, 11:33
Beitrag # 5 von 38
Beitrag ID: #533025
Bewertung:
(9199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich hab auch noch einen Ansatz:
Code
Document.prototype.RemoveLine = function(properties){ 
if(properties == null)
return null;
app.changeObjectPreferences = NothingEnum.nothing;
app.findObjectPreferences = NothingEnum.nothing;
app.findChangeObjectOptions.properties = {includeFootnotes:false, includeMasterPages:true};
app.findObjectPreferences.properties = properties;
var searchResults = this.findObject();
app.changeObjectPreferences = NothingEnum.nothing;
app.findObjectPreferences = NothingEnum.nothing;
for(var i=0; searchResults.length > i; i++)
if(searchResults[i].constructor.name == "GraphicLine")
searchResults[i].remove();
}

app.activeDocument.RemoveLine({strokeColor:"C=0 M=100 Y=0 K=0", strokeWeight:1});
app.activeDocument.RemoveLine({strokeColor:"C=100 M=100 Y=0 K=0", strokeWeight:17});
//usw.

strokeColor ist der Name der Farbe, strokeWeight ist die Dicke in pt.
Was war oben mit Stärke und Breite gemeint?

@Kai:
Die Properties müssen auf einen Rutsch gesetzt werden, einzeln klappt das nicht.

Viele Grüße
Jo


als Antwort auf: [#533024]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

Kai Rübsamen
Beiträge gesamt: 4684

15. Okt 2014, 11:53
Beitrag # 6 von 38
Beitrag ID: #533026
Bewertung:
(9188 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jo,

woher soll man nun das wieder wissen :(

Ich hab aber noch einen Fehler, denn bei mir wird jetzt die Farbe ignoriert. Was stimmt denn an meiner Schreibweise nicht?

Code
var curDoc = app.documents[0];   
var props = { strokeColor: "C=0 M=100 Y=0 K=0", strokeWeight: 1 };

// das Objekt mit entsprechender Formatierung suchen
app.findObjectPreferences = app.changeObjectPreferences = null;
app.findObjectPreferences.properties = props;
var fund = curDoc.findObject();
//~ app.findObjectPreferences = app.changeObjectPreferences = null;

for ( var f = 0; f < fund.length; f++ ) {
var curFund = fund[f];
if ( curFund.constructor.name == "GraphicLine" ) {
// die Linien löschen
fund[f].remove();
}
}



als Antwort auf: [#533025]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

WernerPerplies
Beiträge gesamt: 2762

15. Okt 2014, 12:03
Beitrag # 7 von 38
Beitrag ID: #533027
Bewertung:
(9182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Zitat Hat jemand eine Idee, ob es sich hierbei um einen bug handelt oder wo mein Fehler liegt? Danke.


InDesign verrät Dir meistens, was Du falsch gemacht hast.

Dafür braucht man aber mindestens die Fehlermeldung und die Fehlerzeile.

Diese Informationen findest Du im Fehlerobjekt.

Manchmal, - eher selten -, erhältst Du auch blödsinnige Meldungen wie:
Erwarte Color oder String, habe aber Color erhalten;-).

Aber das ist eher die Ausnahme.


als Antwort auf: [#533024]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

mx
Beiträge gesamt: 161

15. Okt 2014, 12:50
Beitrag # 8 von 38
Beitrag ID: #533030
Bewertung:
(9164 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

dein Code läuft bei mir unter ID CC 2014 und die Farbe passt auch bzw. wird gefunden.
Heißen bei Dir die Farben im Dokument anders oder hast Du die Farbe nicht im Dokument als Farbfeld angelegt?

Oder hast Du nur direkt an der Linie die Farbe eingestellt?
Einmal im Viewlet "Farbfelder" auf die Optionen und "Unbenannte Farben hinzufügen", dann sollte es gehen.
Die StrokeColor-Eigenschaft braucht ein Swatch-Objekt oder einen Namen.

Das mit den Properties hab ich mir gemerkt, als ich da vor langer Zeit mal genau wie du drübergeflogen bin. Die geometricBounds sind ähnlich, die lassen sich auch nicht feldweise ändern, sondern nur am Stück.

Viele Grüße
Jo


als Antwort auf: [#533026]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

Kai Rübsamen
Beiträge gesamt: 4684

15. Okt 2014, 13:30
Beitrag # 9 von 38
Beitrag ID: #533032
Bewertung:
(9108 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jo,

ich habs gerade nur in CS6 getestet. Zur Sicherheit ein Snippet anbei.

Ergebnis hier:
Es werden magenta und schwarze Linien mit einer Strichstärke von 1 pt gelöscht.
Richtig wäre aber nur das Löschen der einen roten Linie. Wenn ich das Script zeilenweise laufen lasse, sehe ich im S&E-Feld, das die Farbe nicht ankommt.


als Antwort auf: [#533030]
Anhang:
Kontur.idml (32.5 KB)

2 immer wiederkehrende Objekte im gesamten Dokument löschen

JoPo
Beiträge gesamt: 534

15. Okt 2014, 13:54
Beitrag # 10 von 38
Beitrag ID: #533033
Bewertung:
(9085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi zusammen,

vielen Dank für die rege Teilnahme.
Ich habe in meiner Dropbox eine zip mit einer indd und einer idml inkl. Beschreibung.
https://dl.dropboxusercontent.com/u/69229719/linien_loeschen_test.zip
Vielleicht ist es gar nicht so kompliziert wie ich mich ausgedrückt habe. Schaut es euch mal an.
Nochmals besten Dank für eueren Einsatz.
Salü
Joachim


als Antwort auf: [#533032]
(Dieser Beitrag wurde von JoPo am 15. Okt 2014, 13:58 geändert)

2 immer wiederkehrende Objekte im gesamten Dokument löschen

Kai Rübsamen
Beiträge gesamt: 4684

15. Okt 2014, 14:07
Beitrag # 11 von 38
Beitrag ID: #533035
Bewertung:
(9072 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jo, hier gibt es doch schon funktionierende Lösungen?!

Wir klären lediglich ein paar Details, bei denen du außen vor bist ;-)


als Antwort auf: [#533033]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

JoPo
Beiträge gesamt: 534

15. Okt 2014, 15:03
Beitrag # 12 von 38
Beitrag ID: #533041
Bewertung:
(9047 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
du hast Recht. Deine Lösung funktioniert.
Zumindest für einen Teil der Aufgabe.
Aber bei dem zweiten Teil stehe ich immer noch auf dem Schlauch. Das liegt aber nicht an Deiner funktionierenden Lösung, sondern an meinem Problem dem Script beizubringen, dass ich Linien in der Farbe "Papier" löschen will. Wenn ich nur "Papier" eintrage, passiert nichts, trage ich "[Papier]" ein, passiert auch nichts. Was muss ich für diese Spezialfarbe eintragen?

Übrigens habe ich in meinen Beispieldateien noch eine "nette" Zusatzaufgabe versteckt. Wer Lust hat darf sich die gerne mal anschauen.

Dank
Joachim


als Antwort auf: [#533035]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

mx
Beiträge gesamt: 161

15. Okt 2014, 15:14
Beitrag # 13 von 38
Beitrag ID: #533042
Bewertung:
(9041 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

du hast Recht, das funktioniert nicht, da hab ich nicht drauf geachtet.
Das muss doch ein echtes Color- oder Swatch-Object sein...


So sollte es jetzt gehen:

Code
Document.prototype.RemoveLine = function(properties){   
if(properties == null)
return null;
if(properties.strokeColor != null && properties.strokeColor.constructor.name == "String" && app.activeDocument.swatches.itemByName(properties.strokeColor) != null)
properties.strokeColor = app.activeDocument.swatches.itemByName(properties.strokeColor);
app.changeObjectPreferences = NothingEnum.nothing;
app.findObjectPreferences = NothingEnum.nothing;
app.findChangeObjectOptions.properties = {includeFootnotes:false, includeMasterPages:true};
app.findObjectPreferences.properties = properties;
var searchResults = this.findObject();
app.changeObjectPreferences = NothingEnum.nothing;
app.findObjectPreferences = NothingEnum.nothing;
for(var i=0; searchResults.length > i; i++)
if(searchResults[i].constructor.name == "GraphicLine")
searchResults[i].remove();
}

app.activeDocument.RemoveLine({strokeColor:"C=0 M=100 Y=0 K=0", strokeWeight:1});
app.activeDocument.RemoveLine({strokeWeight:17});
//usw.


Viele Grüße
Jo


als Antwort auf: [#533032]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

WernerPerplies
Beiträge gesamt: 2762

15. Okt 2014, 15:31
Beitrag # 14 von 38
Beitrag ID: #533043
Bewertung:
(9026 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Joachim,

Zitat Was muss ich für diese Spezialfarbe eintragen?

Die folgenden Möglichkeiten sollten funktionieren:
1. Zugriff über Index, bei mir 2
app.swatches[2]
2. Zugriff über Namen:
app.swatches.itemByName("Paper")

In beiden Fällen gibt es ein Swatch zurück.


als Antwort auf: [#533041]

2 immer wiederkehrende Objekte im gesamten Dokument löschen

mx
Beiträge gesamt: 161

15. Okt 2014, 15:40
Beitrag # 15 von 38
Beitrag ID: #533044
Bewertung:
(9020 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner, Kai und Joachim,

weil es grad so schön in diesem Thread ist:

Es gibt noch die Sonderfarben "Registration" für die Passermarken und "None" für die Farbe "[Ohne]".

Viele Grüße
Jo


als Antwort auf: [#533043]
X