hilfdirselbst.ch
Facebook Twitter gamper-media
pixel66 p
Beiträge: 2
16. Mai 2017, 21:24
Beitrag #1 von 6
Bewertung:
(563 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo zusammen

Ich hab da ein Java Kode-Schnipsel, das ich öfters verwende.
Alle im InDesign positionierten Bilder werden auf die effektive Grösse «zugeschnitten».
Nun möchte ich, dass der Rahmen eine Linienstärke 0.5Pt in blauer Farbe bekommt.
Hab was im Internet recherchiert; aber leider nichts passendes gefunden.
Hab mir jemand eine Empfehlung oder Sprunghilfe – bin euch dankbar.

Code
myScale = 100/100; // Skalierungsfaktor 
myPics = app.documents[0].allGraphics
for (onePic = 0; onePic < myPics.length; onePic++){
myPics[onePic].horizontalScale = myPics[onePic].horizontalScale * myScale;
myPics[onePic].verticalScale = myPics[onePic].verticalScale * myScale;
myPics[onePic].fit(FitOptions.frameToContent); // schmiegt den Rahmen wieder an's Bild an.
}


Vielen Dank
Peter
Top
 
X
Hans Haesler  M  p
Beiträge: 5452
17. Mai 2017, 16:40
Beitrag #2 von 6
Beitrag ID: #557501
Bewertung:
(524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo Peter,

herzlich willkommen in der Skriptwerkstatt auf HilfDirSelbst! :-)

Den Rahmen, welcher das Bild enthält, ist der parent von myPics[onePic].
Die Kontur wird stroke genannt. Die Konturstärke ist strokeWeight; die Konturfarbe ist strokeColor; der Tonwert ist strokeTint und schliesslich die Ausrichtung: strokeAlignment.

Diese Begriffe kann man auf einmal, dank der Ergänzug properties (= Eigenschaften) zuweisen.
Diese 'properties' werden mit geschweiften Klammern umgeben.

Das Farbfeld "Blau" muss definiert sein.

Code
myScale = 100/100; // Skalierungsfaktor 
myPics = app.documents[0].allGraphics;
for (onePic = 0; onePic < myPics.length; onePic++) {
myPics[onePic].horizontalScale = myPics[onePic].horizontalScale * myScale;
myPics[onePic].verticalScale = myPics[onePic].verticalScale * myScale;
myPics[onePic].parent.properties = {strokeWeight:0.5, strokeColor:"Blau", strokeTint:100, strokeAlignment:StrokeAlignment.INSIDE_ALIGNMENT};
myPics[onePic].fit(FitOptions.frameToContent); // schmiegt den Rahmen wieder an's Bild an.
}

Das StrokeAlignment.INSIDE_ALIGNMENT ergibt "innen". Für "mittig": StrokeAlignment.CENTER_ALIGNMENT

Alles klar?

Gruss, Hans
als Antwort auf: [#557480] Top
 
pixel66 p
Beiträge: 2
19. Mai 2017, 15:17
Beitrag #3 von 6
Beitrag ID: #557564
Bewertung:
(437 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo Hans

Vielen Dank die Anpassung und der Beschreibung der Attribute.
So kann ich’s nach Gusto anpassen.
Vielleich blick ich da auch bald durch; möcht’s auf jeden Fall erlernen.
Das UrSkript ist glaub vom fachhefte.ch; dazu hatte wir schon mal Kontakt.

Vielen Dank und nen ganz schönes Wochenende

Peter
als Antwort auf: [#557501] Top
 
Hans Haesler  M  p
Beiträge: 5452
19. Mai 2017, 19:38
Beitrag #4 von 6
Beitrag ID: #557580
Bewertung:
(415 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo Peter,

bitte sehr.

Allerdings: Das "Ur-Script" ist bestimmt nicht von mir. In keinem der 1147 JavaScripts, welche sich in der Sammlung befinden, wird die unsägliche Vorsilbe my verwendet.

Das ist possessive Baby-Sprache ("Mein Biskuit" :-).

Zum besseren Verständnis: Als die ersten Beta-Versionen von InDesign verfügbar waren (so um 1999), konnte man nur AppleScript einsetzen. Die Beispiel-Scripts, welche vom damaligen Verantwortlichen zur Verfügung gestellt wurden, strotzten nur so vor my. Dabei war dieses Wort obligatorisch für den Aufruf eines Handlers aus einem "tell-app-Block" heraus.

Und das ergab solch' grausliche Gebilde: set myText to my myGetText()

Auf meine Proteste hin sagte der erwähnte Script-Designer nur: "Man muss in Betracht ziehen, dass viele Anwender Anfänger sind."

Beim Portieren aller AppleScripts nach JavaScript war ich froh, das my nur dort verwendet zu haben, wo es wirklich notwendig war.

Gruss, Hans
als Antwort auf: [#557564] Top
 
Uwe Laubender S
Beiträge: 3798
20. Mai 2017, 10:01
Beitrag #5 von 6
Beitrag ID: #557588
Bewertung:
(356 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo Hans,

alle von Adobe mitgelieferten ExtendScript-Skripte für InDesign benutzen das my in der Variablenbenennung. Dieser Stil wurde von Skriptern oft kopiert. Auch von mir vor Jahren, der unerfahrene Skripter versucht ja an den Beispielen zu lernen. Und ich lasse das my auch weg seit geraumer Zeit.

Gregor Fellenz beispielsweise benutzt exzessiv anstatt des my einen Unterstrich zu Beginn eines Variablennamens. Darüber könnte man auch streiten, will ich aber nicht. Jedem das Seine.

Baut man generische Funktionen, die sich modular in vielen Skripten einsetzen lassen sollen ( über #include, doScript() oder eval() ), muss man sich eh' erneut die Frage stellen wie man mit Variablennamen umgeht.

Marc Autret ist da ziemlich radikal und hat sich seit geraumer Zeit eine neue Methode zugelegt, wenn es nicht um DOM-Objekte geht:

Why I Do Not Use Meaningful Variable Names (Anymore)
http://www.indiscripts.com/...riable-names-anymore

Kommt immer darauf an, ob man alleine vor sich hinwerkelt oder im Team arbeitet. Dokumentation ist dann ein wichtiger Aspekt, damit man seinen eigenen Code auch noch nach Monaten und Jahren verstehen kann ohne sich stunden- oder tagelang wieder einzuarbeiten.

Ich kann mich da auch selbst an die eigene Nase fassen :-)
Hatte mir mal angewöhnt das DOM-Objekt document nur mit dem Variablennamen d zu bezeichnen. Mittlerweile bin ich wieder auf ein besser verständliches doc umgeschwenkt. Und Kommentare im Code schreibe ich fast ausschließlich in Englisch, da ich mich viel mit internationalen Kollegen austausche.

Aber wie bereits gesagt: Jedem das Seine…
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#557580] Top
 
Kai Rübsamen  M  p
Beiträge: 4302
20. Mai 2017, 11:33
Beitrag #6 von 6
Beitrag ID: #557591
Bewertung: |||
(342 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Objekt-Rahmen mit Linienstärke ergänzen


Hallo Uwe,

neulich bin ich da auf einen schönen Beitrag gestoßen:
https://blog.risingstack.com/...es-node-js-at-scale/

Hier insbesondere solche Aussagen wie: "Clean coding means that in the first place you write code for your later self and for your co-workers and not for the machine. Your code must be easily understandable for humans."

Die Ergebnisse u. Schilderungen von Marc Autret sind schon beeindruckend. Ich für mich habe jedoch beschlossen, dass Marc derjenige ist, der den am schlechtesten lesbaren Code von allen schreibt. Was soll daran toll sein? Ich werde mir daran kein Beispiel nehmen und scheue mich auch nicht, dass öffentlich zuzugeben.

Gruß Kai
_______________________


Neu: "GREP für Grafiker – S&E mit regulären Ausdrücken in InDesign": Video2Brain
als Antwort auf: [#557588] Top
 
X