[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt for-schleife | graphicline | pathpoints

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

for-schleife | graphicline | pathpoints

julez
Beiträge gesamt: 15

20. Mai 2016, 17:42
Beitrag # 1 von 4
Bewertung:
(2514 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo zusammen,

ich bin mal wieder nah dran, komme aber weder mit google noch mit der suchfunktion weiter.
beim ausfuehren der untenstehenden zeilen werden mir jeweils vor dem ersten pathpoint zwei – fuer mich mysterioese – punkte gesetzt. interessant aber nicht gewollt! was habe ich nicht bedacht?

mal wieder vielen dank vorab.


gruesse
julian


siehe code:
Code
var posX = 50; 
var posY = 50;

var datenX = 2;
var datenY = [10,30,20,40,30];

var abstandX = 2;


// linine
var linie = app.activeDocument.graphicLines.add();
linie.strokeWeight = 1;

for(var i in datenY) {

// punkt 1
punkt = linie.paths[0].pathPoints.add();
punkt.anchor = [posX, posY + datenY[i]];

posX = posX + abstandX + datenX;

}


// stufen
var stufen = app.activeDocument.graphicLines.add();
stufen.strokeWeight = 1;

for(var i in datenY) {

// punkt 1
punkt = stufen.paths[0].pathPoints.add();
punkt.anchor = [posX, posY + datenY[i]];

// punkt 2
punkt = stufen.paths[0].pathPoints.add();
punkt.anchor = [posX + datenX, posY + datenY[i]];

posX = posX + abstandX + datenX;

}

X

for-schleife | graphicline | pathpoints

Kai Rübsamen
Beiträge gesamt: 4684

20. Mai 2016, 18:14
Beitrag # 2 von 4
Beitrag ID: #549822
Bewertung:
(2500 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julian,

ich hab keine Ahnung, was du da machst. Das Ergebnis sieht jedenfalls interessant aus.

Welche zwei Punkte meinst du? Die oben links in der Ecke?
Falls ja, stell mal dein Lineal auf Punkt um: Der erste liegt bei 0/0, der zweite bei 10/10. Das ist das Verhalten, wenn man ein neues Objekt erzeugt und ihm noch nichts mitgibt.

Du musst also entweder deine beiden Punkte nachträglich verschieben:

Code
var seite = app.documents[0].pages[0]; 
var linie = seite.graphicLines.add();
var pfad = linie.paths[0];
pfad.pathPoints[0].anchor = [10, 10];
pfad.pathPoints[1].anchor = [45, 50];

var neuerPunkt = pfad.pathPoints.add();
neuerPunkt.anchor = [50, 75];


oder den Stand direkt beim Erzeugen der Linie mitteilen:
Code
var seite = app.documents[0].pages[0]; 
var linie = seite.graphicLines.add({geometricBounds: [10, 10, 50, 45]});



als Antwort auf: [#549821]
(Dieser Beitrag wurde von Kai Rübsamen am 20. Mai 2016, 18:20 geändert)

for-schleife | graphicline | pathpoints

Uwe Laubender
Beiträge gesamt: 5316

22. Mai 2016, 13:33
Beitrag # 3 von 4
Beitrag ID: #549831
Bewertung:
(2275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julian,

Du könntest auch ein Array von x/y-Array-Werten benutzen, um den entirePath zeichnen zu lassen:

Code
var myGraphicLine = app.documents[0].graphicLines.add(); 

myGraphicLine.properties =
{
fillColor : "None" ,
strokeColor : "Black" ,
strokeWeight : "0.25 mm"
}

myGraphicLine.paths[0].entirePath =

[
[30,30] , // x/y values
[32,30] ,
[35,22] ,
[37,22] ,
[41,34] ,
[43,34] ,
[47,28] ,
[49,28] ,
[52,37] ,
[54,37] ,
[56,24] ,
[58,24] ,
[62,35]
]


Die Werte kannst Du vorab in aller Ruhe berechnen und als Gesamtarray ausdrücken.


als Antwort auf: [#549821]

for-schleife | graphicline | pathpoints

julez
Beiträge gesamt: 15

23. Mai 2016, 15:59
Beitrag # 4 von 4
Beitrag ID: #549849
Bewertung:
(2168 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo kai, hallo uwe,

vielen dank fuer eure nachrichten. exakt die beiden punkte meine ich. mir ist trotzdem nicht ganz klar, warum die dort auftauchen. kann ich das auch verhindern? die beiden punkte unter den ersten x/y-punkt aus meinem array zu schieben oder zu loeschen, ist nicht unbedingt eine edle loesung... ich bin dann noch auf folgenden ansatz gestoßen:

Code
    var posX = 50; 
var posY = 50;

var datenX = 2;
var datenY = [10,30,20,40,30];

var abstandX = 2;


// linien
var linie = app.activeDocument.graphicLines.add();
linie.strokeWeight = 1;


for(var i in datenY) {

var punkt = linie.paths[0].pathPoints[i];

if (i < 2) {
punkt.anchor = [posX + datenX/2, posY + datenY[i]];

} else {
punkt = linie.paths[0].pathPoints.add();
punkt.anchor = [posX + datenX/2, posY + datenY[i]];
}

posX = posX + abstandX + datenX;
}



// stufen
var stufen = app.activeDocument.graphicLines.add();
stufen.strokeWeight = 1;

for(var i in datenY) {

// punkt 1
punkt = stufen.paths[0].pathPoints.add();
punkt.anchor = [posX, posY + datenY[i]];

// punkt 2
punkt = stufen.paths[0].pathPoints.add();
punkt.anchor = [posX + datenX, posY + datenY[i]];

posX = posX + abstandX + datenX;

}


aber a) verstehe ich nicht so ganz warum die beiden punkte jetzt nicht mehr auftauchen und b) habe ich keinen blassen schimmer, wie der analoge ansatz fuer die stufen-darstellung funktionieren kann. die variante von uwe wirft eigentlich das aus, was angestrebt ist. jedoch muss ich mir das mal noch genauer anschauen, wie ich den array mit den x/y-array-werten automatisch generiert bekomme. scheint mir auch fuer die weiterverarbeitung etwas komplex.


gruesse
julian


als Antwort auf: [#549822]
(Dieser Beitrag wurde von julez am 23. Mai 2016, 16:00 geändert)
X