Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Basiljs/ExtendScript_vertices on a layer

Basiljs/ExtendScript_vertices on a layer

ea sy
Beiträge gesamt: 4

17. Mai 2016, 18:26
Bewertung:

gelesen: 1293

Beitrag als Lesezeichen
Hallo Leute,
ich habe eine wirklich sehr spezifische Frage.
Und zwar habe ich Dreiecke mit Hilfe der Basiljs-Funktion b.vertex() erstellt, die ich jetzt gerne auf eine Ebene legen würde.

Bei wirklich definierten Formen, wie zB ein Rechteck ist das nie ein Problem gewesen. Über die Zeilen
Code
myRectangle[i]=b.rect(); myCircle[index1].itemLayer = allLayers[index2]; 

ging das super einfach.

Aber für ein Dreieck gibt es in basiljs (was grundsätzlich ja extendScript erleichtern soll) keine Funktion, deshalb musste ich sogenannte vertices erzeugen und die dann letzten Endes miteinander verbinden.

Siehe Code
Code
if(i==USERINPUT_numberStrokes){ //the last/largest ellipse must be filled 
b.fill(0,0,0,0); //white color for the last ellipse
b.beginShape(b.CLOSE);
var radius = 200;
var degree = 120;
var magicNumber = 30; // to turn the triangle upwards
var trianglePoints = [];
for (var j = 0; j < 3; j++) {
var x = (b.cos(b.radians(degree * j + magicNumber)) * scaleCircle*i) + points[c][0];
var y = (b.sin(b.radians(degree * j + magicNumber)) * scaleCircle*i) + points[c][1];
trianglePoints.push([x, y]);
b.vertex(x, y);
}
b.endShape();
...
}
}


Grundsätzlich muss man nicht alles im Detail verstehen... ich würd enur gerne wissen wie ich nun auch diese Pfade in eine Ebene(Layer) bekomme?

Ich bin am Verzweifeln. Kann mir jemand helfen?

(Dieser Beitrag wurde von ea sy am 17. Mai 2016, 18:30 geändert)

Basiljs/ExtendScript_vertices on a layer

Uwe Laubender
Beiträge gesamt: 5004

18. Mai 2016, 06:07
Bewertung:

gelesen: 1215

Beitrag als Lesezeichen
Hallo ea sy,
mal Basiljs außen vor gelassen.

Du kannst einem pageItem eine Ebene zuweisen, indem Du der Eigenschaft itemLayer einen Wert zuweist.

Den Namen der Ebene:

Code
myRectangle.itemLayer = app.documents[0].layers.itemByName("Meine Ebene"); 


Oder den Index der Ebene:
Code
myRectangle.itemLayer = app.documents[0].layers[0]; 

*****
Mit herzlichem Gruß,
Uwe Laubender

Basiljs/ExtendScript_vertices on a layer

mdomino
Beiträge gesamt: 76

18. Mai 2016, 09:31
Bewertung:

gelesen: 1165

Beitrag als Lesezeichen
Hallo ea sy,

laut basil.js-Referenz gibt die b.endShape()-Funktion den erstellten Pfad zurück (siehe http://basiljs.ch/reference/#endShape). Das heißt in deinem Beispiel musst du eigentlich nur mittels
Code
var myTriangle = b.endShape(); 

deinen Pfad in einer Variable zwischenspeichern und dann kannst du wie gewohnt das Objekt mit
Code
myTriangle.itemLayer = allLayers[index2]; 

auf die andere Ebene befördern.

Grüße,
md

Basiljs/ExtendScript_vertices on a layer

ea sy
Beiträge gesamt: 4

19. Mai 2016, 19:11
Bewertung:

gelesen: 1086

Beitrag als Lesezeichen
Vielen Dank md :)

hat so geklappt!
Sehr cool

(Dieser Beitrag wurde von ea sy am 19. Mai 2016, 19:12 geändert)