[GastForen Programmierung/Entwicklung JavaScript Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

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

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

jekyll
Beiträge gesamt: 2047

29. Jan 2016, 14:49
Beitrag # 1 von 6
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Allerseits,
ich habe mir einen Skript gebastelt welche in einer Illu Datei die Farben von die Pfaden als Vollton zu den Farbfelder
hinzufügt etc. .

Code
datRef=activeDocument 
spotFarbNamen=new Array()
for (einSpot=0;einSpot<datRef.spots.length;einSpot++){
if (datRef.spots[einSpot].name!="[Passermarken]"&&datRef.spots[einSpot].name !="[Registration]")spotFarbNamen.push(datRef.spots[einSpot].name)}
for(einObj=datRef.pageItems.length-1;einObj>=0;einObj--){
obj=datRef.pageItems[einObj]
if(String(obj)=="[PathItem ]") {
pfadFuellOps=checkColor(obj.fillColor,spotFarbNamen)
try{
obj.fillColor=pfadFuellOps[0]}
catch(e){}
pfadKontOps=checkColor(obj.strokeColor,spotFarbNamen)
try{
obj.strokeColor=pfadKontOps[0]}
catch(e){}
if(String(pfadFuellOps[1])!=String(undefined))spotFarbNamen.push(pfadFuellOps[1])
if(String(pfadKontOps[1])!=String(undefined))spotFarbNamen.push(pfadFuellOps[1])}}
function checkColor(objCol,spotFarbNamen){
if(String(objCol)=="[CMYKColor]"){
neuSN="C="+String(Math.round(objCol.cyan))+"; M="+String(Math.round(objCol.magenta))+"; Y="+String(Math.round(objCol.yellow))+"; B="+String(Math.round(objCol.black))+";"
neuSNTest=new RegExp(neuSN)
if (neuSNTest.test(spotFarbNamen)!=true){
meinSpot=addNeuSpot(objCol,neuSN)
neueSpotName=neuSN}
else {meinSpot=new SpotColor()
meinSpot.spot=checkSpot(neuSN)}}
else if(String(objCol)=="[RGBColor]"){
neuSN="R="+String(Math.round(objCol.red))+"; G="+String(Math.round(objCol.green))+"; B="+String(Math.round(objCol.blue)+";")
neuSNTest=new RegExp(neuSN)
if (neuSNTest.test(spotFarbNamen)!=true){
meinSpot=addNeuSpot(objCol,neuSN)
neueSpotName=neuSN}
else {meinSpot=new SpotColor()
meinSpot.spot=checkSpot(neuSN)}}
else if(String(objCol)=="[GrayColor]"){
neuSN="G="+String(Math.round(objCol.gray)+";")
objColT=new CMYKColor()
objColT.cyan=0
objColT.magenta=0
objColT.yellow=0
objColT.black=objCol.gray
neuSNTest=new RegExp(neuSN)
if (neuSNTest.test(spotFarbNamen)!=true){
meinSpot=addNeuSpot(objColT,neuSN)
neueSpotName=neuSN}
else {meinSpot=new SpotColor()
meinSpot.spot=checkSpot(neuSN)}}
else{meinSpot=undefined
neueSpotName=undefined}
retour=new Array()
retour[0]=meinSpot
retour[1]=neueSpotName
return retour}
function addNeuSpot(objCol,neuSN){
neuSpot=app.activeDocument.spots.add()
neuSpot.name=neuSN
neuSpot.color=objCol
neuSpot.colorType=ColorModel.SPOT
neuSpot.tint=100
neueFarbe=new SpotColor()
neueFarbe.spot=neuSpot
neueFarbe.tint=100
return neueFarbe}
function checkSpot(neuSN){
datRefSp=app.activeDocument.spots
einSpot=0
check=0
while(check==0&&einSpot<datRefSp.length){
if (datRefSp[einSpot].name==neuSN){
check=1
meinspot=datRefSp[einSpot]}
einSpot++}
return meinspot}


Jetzt würde ich gerne 2 aufeinander folgende gleich farbigen Pfaden zusammen fügen oder wenn die nicht die gleichen Farben haben dann die oberen duplizieren und von den unteren abziehen.

Hat jemand eine Idee wie sich dies lösen lässt?
Von mir aus auch in Applescript :)

Hier 2 Dateien raute1 ist die ausgangs Datei raute2 ist wie es werden sollte.

http://www.download.siscosep.com/raute.zip

Danke
X

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

pixxxelschubser
Beiträge gesamt: 1708

30. Jan 2016, 16:23
Beitrag # 2 von 6
Beitrag ID: #546498
Bewertung:
(3336 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry jekyll,
ein produktionssicheres Ergebnis zu bekommen, scheint bei diesen Anforderungen extrem schwierig bis unmöglich zu sein.

Fakt 1)
Pathfinderoperationen sind in Illu (bislang) nicht skriptbar. Abhilfe könnte hier eventuell einige per app.doScript aufgerufene Aktionen schaffen. Eventuell sind Teile auch über den seit CS6 neu hinzugekommenen Skriptbefehl executeMenuCommand implementierbar, aber zu Pathfinderoperationen kann ich im Augenblich keine zuverlässige Aussage treffen.

Vielleicht könnte auch das Hinzufügen eines weissen Rechteckes (mit 1% Deckkraft) in Größe der Gesamtgrafik helfen und anschließend per Skript die Transparenz reduzieren. Doch das erzeugt u.U. doppelte Objekte.

Fakt 2)
Das Auslesen der Farben ist mehr als unsicher. Bis heute sind zusätzliche Flächen und Konturen in der Aussehenpalette per Skript nicht auslesbar. Jede einzelne dieser Flächen/Konturen kann aber zusätzliche Farben/Transparenzmodi und oder Transparenzen beinhalten.
(Eventuell könnte man aber auch hier eine Aktion --> verwendete Farben hinzufügen per app.doScript anwenden.)

Fakt 3)
Deckkraftmasken nicht nicht per Skript erfassbar. Und damit sind wir wieder bei Fakt 1.


als Antwort auf: [#546487]

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

jekyll
Beiträge gesamt: 2047

30. Jan 2016, 17:01
Beitrag # 3 von 6
Beitrag ID: #546499
Bewertung:
(3319 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
danke für Dein Antwort.

Es geht bei mir nur um Pfaden welche weder transparenzen oder verläufe enthalten noch Gitter Objekten sind etc.

Die Konturen werden am Anfang gleich von mir bis jetzt zur Pfaden gewandelt.

Wo ist die app.doScript in den Javascript Referenzen beschrieben?
Ich finde "do script" nur in den Applescript Referenz.

Den "executeMenuCommand" finde ich auch nicht hast Du da ne anderen Quelle?


als Antwort auf: [#546498]

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

pixxxelschubser
Beiträge gesamt: 1708

30. Jan 2016, 17:24
Beitrag # 4 von 6
Beitrag ID: #546500
Bewertung:
(3303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mittels Transparenz reduzieren kann man in Illu relativ geschickt Pathfinderoperationen per Skipt durchführen – wenn auch mit dem Nachteil von Objektdupletten und dem Erhalt von Originalobjekten behaftet.

Wo ich das beschrieben?
Naja, das ist alles ziemlich schlecht dokumentiert. Und mittlerweile wühle ich mich einfach „quer" die ESTK OMV Objektreferenz.

app.doScript("actionName", "actionSetName")
ist IMHO seit CS5 verfügbar

app.executeMenuCommand seit CS6+ siehe:
https://forums.adobe.com/message/6114502#6114502
Das dürfte diesen ziemlich praktischen Befehl recht ausführlich erklären.


als Antwort auf: [#546499]

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

Uwe Laubender
Beiträge gesamt: 5316

31. Jan 2016, 14:53
Beitrag # 5 von 6
Beitrag ID: #546505
Bewertung:
(3163 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jekyll,
eine Übersicht über die DOM-Objekte, Methoden, Properties und Values von Adobe Illustrator kannst Du hier finden:

http://www.jongware.com/idjshelp.html

Die iChm-Dateien sind sehr leicht durchsuchbar.

Das habe ich dort gefunden:

Code
void executeMenuCommand(menuCommandString: string) 
Executes a menu command using the menu shortcut string.
Parameter Type Description
menuCommandString string Menu command shortcut.



als Antwort auf: [#546499]

Illustrator: Pfaden zusammenfügen oder vorderen Pfad abziehen

jekyll
Beiträge gesamt: 2047

31. Jan 2016, 20:05
Beitrag # 6 von 6
Beitrag ID: #546510
Bewertung:
(3097 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Merci!
Das hilft schon mal weiter.
Aber die komplizierte Teil kommt erst noch.

Ich melde mich wahrscheinlich dazu wieder :)


als Antwort auf: [#546500]
X