hilfdirselbst.ch
Facebook Twitter gamper-media
peterhenrich S
Beiträge: 123
29. Nov 2013, 18:26
Beitrag #1 von 12
Bewertung:
(3691 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo zusammen,

mit diesem Befehl setze ich die Strichstärke auf 10 und das funktioniert:

Code
var _bar = __doc.pages[0].polygons.add(__doc.layers.itemByName("_bars") , 6, undefined, undefined, undefined, {strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT,fillColor :"_blau",nonprinting:false,strokeWeight:10}); 


Setze ich den Wert aber auf 0, steht im Dokument eine 1.

Code
var _bar = __doc.pages[0].polygons.add(__doc.layers.itemByName("_bars") , 6, undefined, undefined, undefined, {strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT,fillColor :"_blau",nonprinting:false,strokeWeight:0.0}); 


Was mache ich falsch?
Top
 
X
Martin Fischer  M  p
Beiträge: 11851
29. Nov 2013, 18:54
Beitrag #2 von 12
Beitrag ID: #520329
Bewertung:
(3676 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo Peter,

wenn ich mich richtig entsinne, dann muss dazu in bestimmten InDesign-Versionen* (erstaunlicherweise) auch die Konturfarbe auf '[Keine]' gesetzt werden.

Kannst Du's mal ausprobieren?




--------
* Unter InDesign CS6 funktioniert bei mir Deine Befehlszeile und erzeugt ein Polygon mit Konturstärke 0.


Viele Grüße
Martin
als Antwort auf: [#520328]
(Dieser Beitrag wurde von Martin Fischer am 29. Nov 2013, 19:01 geändert)
Top
 
Kai Rübsamen  M  p
Beiträge: 4521
29. Nov 2013, 19:11
Beitrag #3 von 12
Beitrag ID: #520330
Bewertung:
(3659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo Martin,
hallo Peter

Antwort auf: * Unter InDesign CS6 funktioniert bei mir Deine Befehlszeile und erzeugt ein Polygon mit Konturstärke 0.

Interessant: Bei mir wird in CS6, 10.6.8, ein Polygon mit 1 Pt erzeugt.

Wenn ich im UI z.B. einem 4 Pt starken Rahmen die Farbe wegnehme, wird die Strichstärke autom. auf 0 gesetzt. Es reicht offensichtlich, wenn man im Skript das gleiche macht:
Code
var curSelection = app.selection[0]; 
curSelection.strokeColor = "None";

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#520329] Top
 
WernerPerplies
Beiträge: 2201
29. Nov 2013, 20:07
Beitrag #4 von 12
Beitrag ID: #520332
Bewertung:
(3625 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo Peter,

prüfe doch mal diesen Code:
Code
var polygon = app.activeDocument.polygons.add(app.activeDocument.layers[0], 6, undefined, undefined, undefined, {strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT, nonprinting:false,strokeWeight:0}); 
polygon.select();
alert(polygon.id+"\n"+polygon.strokeWeight+"\n"+app.selection[0].id+"\n"+app.selection[0].strokeWeight);


Gibt es da auch ein falsches Ergebnis?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#520328] Top
 
peterhenrich S
Beiträge: 123
30. Nov 2013, 07:58
Beitrag #5 von 12
Beitrag ID: #520337
Bewertung:
(3533 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Vielen Dank für die Hilfe. Bei den paar Zeilen habe ich über eine Stunde nach dem Fehler gesucht. Mit dem Setzen der Farbe auf "None" geht es.

Interessant auch, dass man das Alignment erst dann wirksam setzen kann, wenn man der Kontur eine Stärke zugewiesen hat.

1) Funktioniert nicht (Alignment bleibt weiter auf CENTER)
Code
_myrectangle.strokeAlignment = StrokeAlignment.INSIDE_ALIGNMENT; 
_myrectangle.strokeColor = "Paper";
_myrectangle.strokeWeight = 1;


2) Funktioniert (Alignment wird zu INSIDE)
Code
_myrectangle.strokeColor = "Paper"; 
_myrectangle.strokeWeight = 1;
_myrectangle.strokeAlignment = StrokeAlignment.INSIDE_ALIGNMENT;



Und vielleicht auch noch wissenswert, dass es in dieser Schreibweise egal ist, ob das Alignment vorne oder hinten steht - es wird richtig gesetzt:
Code
var _mypolygon = __doc.pages[0].polygons.add(__doc.layers.itemByName("_bars") , 6, undefined, undefined, undefined, {strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT,fillColor :"None",nonprinting:false,strokeWeight:1,strokeColor:"Paper"}); 

als Antwort auf: [#520330] Top
 
peterhenrich S
Beiträge: 123
30. Nov 2013, 08:05
Beitrag #6 von 12
Beitrag ID: #520338
Bewertung:
(3531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Antwort auf [ WernerPerplies ] Hallo Peter,

prüfe doch mal diesen Code:
Code
var polygon = app.activeDocument.polygons.add(app.activeDocument.layers[0], 6, undefined, undefined, undefined, {strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT, nonprinting:false,strokeWeight:0}); 
polygon.select();
alert(polygon.id+"\n"+polygon.strokeWeight+"\n"+app.selection[0].id+"\n"+app.selection[0].strokeWeight);


Gibt es da auch ein falsches Ergebnis?


Leider ja, die Kontur steht auf 1, auch in dem Meldungsfenster. Ich denke, es liegt daran, dass man die Farbe "None" zuweisen muss - und die Reihenfolge der Befehle, zumindest was das Alignment angeht (siehe andere Antwort).

Gibt es ein unterschiedliches Verhalten auf verschiedenen Systemen? Ich habe CS5.5 auf Mavericks - Update auf CC läuft.
als Antwort auf: [#520332] Top
 
Uwe Laubender S
Beiträge: 4109
30. Nov 2013, 11:43
Beitrag #7 von 12
Beitrag ID: #520343
Bewertung:
(3487 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Antwort auf [ peterhenrich ] Gibt es ein unterschiedliches Verhalten auf verschiedenen Systemen? …


Ich glaube mich zu erinnern, dass es da verschiedenes Verhalten unter den einzelnen InDesign-Versionen geben könnte.
Müsste das mal testen. Habe noch CS3, CS4, CS5 und CS5.5 unter OSX 10.6.8 auf dem Rechner installiert.

Ist aber mühsig; mit der Zuweisung von strokeWeight:0 zusammen mit strokeColor:"None" machst Du jedenfalls nichts falsch. Das beachte ich auch, seitdem mir der Fall vor ein paar Jahren unterkam.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520338] Top
 
Dirk Becker
Beiträge: 157
30. Nov 2013, 17:24
Beitrag #8 von 12
Beitrag ID: #520358
Bewertung:
(3452 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Das unterschiedliche Verhalten lässt sich vermutlich dadurch erklären, dass die nicht spezifizierten Werte aus den Voreinstellungen des Dokuments bezogen werden, ggf. auch indirekt aus dem Objektformat.

NB: wenn man später am Objekt mehrere Eigenschaften gleichzeitig ändern möchte, sollte man das durch eine Zuweisung auf das "properties" Feld zusammenfassen, ähnlich dem Parameter-Objekt beim .add() . Also

Code
myPoly.properties = {strokeWeight:0, strokeColor:"None"}; 


Abhängigkeiten wie die hier diskutierte können dann intern in einem Rutsch berücksichtigt werden - es wird im Idealfall nur ein Befehl ausgeführt (siehe Undo Historie). Zur Unterstützung von IDML wird hier massiv optimiert, bei einigen Objekten mit Auswirkungen auf den Textumbruch habe ich schon erhebliche Beschleunigung erreicht.

Grüße,
Dirk Becker
als Antwort auf: [#520343] Top
 
Martin Fischer  M  p
Beiträge: 11851
4. Dez 2013, 06:29
Beitrag #9 von 12
Beitrag ID: #520506
Bewertung:
(3339 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo Dirk,

Antwort auf: NB: wenn man später am Objekt mehrere Eigenschaften gleichzeitig ändern möchte, sollte man das durch eine Zuweisung auf das "properties" Feld zusammenfassen


Es gibt Situationen, wo sich das Nacheinander der Zuweisung einzelner Eigenschaften statt der Zuweisung auf einen Schlag durchaus als Vorteil erweisen kann. ;-)

Hier ein Beispiel beim Stürzen eines Textrahmens, über das ich gestern gestolpert bin.

Variante 1 (nacheinander):
Code
var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10], contents: 'Test' }); 
// ...
var gb = tf.geometricBounds;
tf.rotationAngle = 90;
tf.geometricBounds = gb;


Variante 2 (auf einen Schlag):
Code
var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10], contents: 'Test' }); 
// ...
var gb = tf.geometricBounds;
tf.properties = {rotationAngle: 90, geometricBounds: gb};


Viele Grüße
Martin
als Antwort auf: [#520358] Top
 
WernerPerplies
Beiträge: 2201
4. Dez 2013, 07:26
Beitrag #10 von 12
Beitrag ID: #520507
Bewertung:
(3325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Guten Morgen Herr Fischer,

wie so oft:

Es hängt von den Umständen und dem gewünschten Ergebnis ab.

Der einfachste Fall des auf einen Schlag wäre wohl dieser:
Code
var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10],  contents: 'Test' , rotationAngle: 90}); 

und bedeutet wohl:

Erzeuge einen Textrahmen der Höhe 100 und der Breite 10 um 90° gedreht.

Alle notwendigen Aktionen werden in der vom Programmierer vorgesehenen Reihenfolge im Constructor des Objektes abgearbeitet.

Als Variante nacheinander sähe das dann so aus:
Code
var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10], contents: 'Test' });  
tf.rotationAngle = 90;

Ihre Variante 1 (nacheinander):
Zitat var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10], contents: 'Test' });
// ...
var gb = tf.geometricBounds;
tf.rotationAngle = 90;
tf.geometricBounds = gb;


ändert aber nach der Rotation noch einmal Breite und Höhe.

Ihre Variante 2 (auf einen Schlag):
Code
var tf = app.documents.firstItem().textFrames.add({geometricBounds:[0,0,100,10], contents: 'Test' });  
// ...
var gb = tf.geometricBounds;
tf.properties = {rotationAngle: 90, geometricBounds: gb};


ändert die Breite und Höhe nicht, weil sich die Rahmenabmessungen nicht ändern.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#520506] Top
 
Martin Fischer  M  p
Beiträge: 11851
4. Dez 2013, 08:11
Beitrag #11 von 12
Beitrag ID: #520510
Bewertung:
(3302 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Guten Morgen Herr Perplies,

vielen Dank für Ihre Ausführungen.

Die Erzeugung der Textrahmen im Schnipsel war nur als Behelf für's sofortige Nachvollziehen der Beispiele gedacht. Die auskommentierte Ellipse sollte dies andeuten.
Sie können sich statt dessen auch einen bereits vorhandenen Textrahmen, der ausgewählt oder adressiert ist und vom Skript gestürzt werden soll, vorstellen.

Wie Sie sagen: "Es hängt von den Umständen und dem gewünschten Ergebnis ab."

In dem hier dargestellten Fall ist das Ergebnis von Variante 1, das Stürzen des Textes, gewünscht, nicht das, was über die Auf-einen-Schlag-Methode entsteht.

Viele Grüße
Martin
als Antwort auf: [#520507] Top
 
WernerPerplies
Beiträge: 2201
4. Dez 2013, 08:29
Beitrag #12 von 12
Beitrag ID: #520513
Bewertung:
(3295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

strokeWeight auf Null setzen funktioniert nicht


Hallo Herr Fischer,

ok, ich muss gestehen, dass ich Ihrem Gedankengang nicht folgen konnte. ;-)

Aber es ist völlig klar, die Wirkung von Einzelzuweisungen hängen immer von de gerade gegebenen Situation ab, während die Zuweisung auf einen Schlag in der Reihenfolge der Constructor-Routine erfolgt.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#520510] Top
 
X