[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt [Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

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

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

8. Okt 2010, 01:59
Beitrag # 1 von 16
Bewertung:
(9818 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 ANLASS-THEMA: "Pfeilspitzen in Indesign ändern" http://www.hilfdirselbst.ch/...i?post=453467#453467

Zitat von Stephan_M ...
Laut DIN406-T2 (die inzwischen überholt ist, glaube ich) sollen die Pfeilspitzenschenkel in technischen Zeichnungen 5-mal so lang sein wie die Liniendicke und der Winkel 15° spitz.
Das Skript "line_arrowheads01.jsx"fügt für jede selektierte gerade Linie (horizontal oder vertikale) DIN-Pfeilspitzen an ihre Enden.
...


--------------------------------------------------------------
Hier der Thread zur Weiterentwicklung des Skriptes.
--------------------------------------------------------------

Beschreibung::
Das Skript erzeugt dreieckige Pfeilspitzen an den Enden der selektierten Linien-Objekte. Das Skript setzt die Pfeilspitzen, und optional eine Kopie der Linie, auf eine eigene Ebene. Mit der Pfeilform kann experimentiert werden. Dafür müssen im Skript die Konstanten editiert werden. Die Grundeinstellung richtet sich nach der alten DIN-Norm 406 für technisches Zeichen. Es kann die Pfeilspitzen aussen oder innen an die Linien setzen. Es kann die Linien um die Länge der Pfeilenden kürzen, oder nicht. Es kann die Pfeilspitzen zusammen mit den Linien gruppieren oder nicht. Auch für diese Einstellungen müssen die Konstanten am Anfang des Skriptes editiert werden.

Der Vorteil des Skriptes liegt in der Freiheit, die man mit den Liniendicken gewinnt. Man kann sich recht einfach unterschiedlich dicke Linien mit unterschiedlich großen, oder sogar unterschiedlich geformten Pfeilspitzen basteln. Anders herum ermöglicht das Skript auch einen einfachen Weg zur Vereinheitlichung aller Pfeilspitzen.

UPDATE: DINPfeilspitzen011.jsx
- Funktionen wesentlich besser strukturiert.
- kann jetzt auch rotierte Linien (90°, 180°, 270°) verarbeiten.
- kann jetzt auch Kopien der Linien auf der Pfeilspitzen-Ebene erzeugen. Diese sind mit ihren jeweiligen Pfeilspitzenden gruppiert.
- kann auch 0pt Linien verarbeiten.

(getestet in InDesign CS4, Windows)

(Dieser Beitrag wurde von Stephan_M am 8. Okt 2010, 02:11 geändert)

Anhang:
DINPfeilspitzen011.jsx (8.07 KB)   arrowheads_example.gif (17.3 KB)
X

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

8. Okt 2010, 11:57
Beitrag # 2 von 16
Beitrag ID: #453540
Bewertung:
(9772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube ich kriege das mittels Skalarprodukt (Orthogonalen-Vektor etc..) hin, mit den gegebenen Grössen, auchdie Punkte eines Dreiecks am Ende jeder beliebigen, auch schrägen Linie zu berechnen. Boah, mein mathematisches Denkvermögen ist sowas von eingerostet.

Das gehe ich am Wochenende an.


als Antwort auf: [#453508]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Hans Haesler
  
Beiträge gesamt: 5822

8. Okt 2010, 22:03
Beitrag # 3 von 16
Beitrag ID: #453598
Bewertung:
(9738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

das ist schon eine recht brauchbare Lösung. Und nur so "zum Üben und Spaß gebastelt" ... Respekt!

Aber etwas gemeckert muss auch werden ;-)

Eigenartig: Das Gemisch von englischen und deutschen Variablen-Namen und Kommentaren.

Ein paaar Tippfehler:
STANDART --> sollte am Schluss ein "D" haben: STANDARD
arrorheads --> mit "w" statt "r": arrowheads
usefull --> nur mit einem "l": useful

Als Uwe im Beitrag #5 nach einem Script fragte, habe ich das sofort an meine Liste von Projekten angefügt.

Ich werde versuchen, eine eigene Lösung zu entwickeln. Und ein paar Optionen draufzupacken. Details verrate ich noch nicht, weil ich nicht sicher bin, ob es klappen wird.

Aber soviel weiss ich schon jetzt:
Die überflüssige Funktion "main()" wird nicht vorkommen. Und keine einzige my-Vorsilbe. :-)

Gruss, Hans


als Antwort auf: [#453540]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

8. Okt 2010, 23:28
Beitrag # 4 von 16
Beitrag ID: #453610
Bewertung:
(9727 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

die Tippfehler sind beseitigt. Die von Ihnen als überflüssig geschimpfte Funktion "main()" hat aber den hygienischen Vorteil das manche Variablen nicht global werden, wenn sie es auch nicht sollten. ;) Bin sehr gespannt auf Ihre Lösung. Ich knabbere noch sehr an den Pfeilspitzen an schrägen Linien. Es scheitert an der Mathematik.

herzlichen Gruß,
Stephan


als Antwort auf: [#453598]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Hans Haesler
  
Beiträge gesamt: 5822

9. Okt 2010, 08:24
Beitrag # 5 von 16
Beitrag ID: #453622
Bewertung:
(9708 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

nun, meine Lösung wird nicht in den nächsten Tagen kommen. Vielleicht auch nicht vor Ende November.

Bei schrägen Linien würde ich die Pfeilspitze zuerst senkrecht (oder waagerecht) erzeugen. Und sie dann drehen. Vorgängig natürlich den Bezugspunkt in der Mitte auswählen.

[Edit:] Ach ja, noch eine Frage: Funktioniert bei Dir die "BESCHREIBUNG:"?

Mit Funktionieren ist gemeint: Der Beschreibungstext erscheint in einem Quick-Info-Fensterchen, wenn der Mauszeiger auf den Namen des Scripts im Skriptenbedienfeld gerichtet wird.

Unter Mac OS klappt das nur mit "DESCRIPTION:"

Gruss, Hans


als Antwort auf: [#453610]
(Dieser Beitrag wurde von Hans Haesler am 9. Okt 2010, 08:32 geändert)

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

11. Okt 2010, 02:24
Beitrag # 6 von 16
Beitrag ID: #453695
Bewertung:
(9656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ZWISCHENVERSION: DINPfeilspitzen012.jsx
----------------------------------------------------------
+ kann jetzt auch schräge Linien und Polygone (Linienzüge) mit Pfeilen versehen (siehe Screenshot)

- hat zur Zeit die Funktion verloren, außen Pfeile anzusetzen
- hat zur Zeit die Funktion verloren zu gruppieren, weil mysteriöserweise nach einer matrixtransformation das Object nicht mehr RETURNed wird. ???
- und für viele Spezialfälle müssen (z.B. Bezier-Linien, geschlossene Polygone/Rahmen etc...) jetzt noch intelligente Ausnahmen programmiert werden.

ACHTUNG: Das Skript kürzt in dieser Version auf alle Fälle die Original-Linien, man sollte sich selber Duplikate machen.
----------------------------------------------------------

Zitat Ach ja, noch eine Frage: Funktioniert bei Dir die "BESCHREIBUNG:"?

Ach, daher kommt das! Ich hab keinen Mac. Danke für die Erklärung. Es heißt jetzt wieder DESCRIPTION:
Ich habe auch die myXXX-Variablen, und überhaupt die ganze Benamung überarbeitet. Sie haben Recht, wirklich schöner ohne "my".
Zitat Bei schrägen Linien würde ich die Pfeilspitze zuerst senkrecht (oder waagerecht) erzeugen. Und sie dann drehen.

Genauso wird's gemacht. Hätte ich Ihren Beitrag schon gehabt bevor ich sechs Stunden an einer Lösung tüftelte um die Punkte im Raum von der rotation der Linie abgeleitet zu erzeugen, hätte ich ein paar graue Haare weniger. :) Danke.

Mit freundlichen Grüßen,
Stephan

PS.: Alle Pfeile in dem Screenshot über der grauen Linie oben sind mit einem einzeigen Mausklick entstanden.


als Antwort auf: [#453622]
(Dieser Beitrag wurde von Stephan_M am 11. Okt 2010, 02:33 geändert)

Anhang:
DINPfeilspitzen012.zip (2.91 KB)   screenshot_DINpfeilspitzen012.gif (19.0 KB)

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Hans Haesler
  
Beiträge gesamt: 5822

11. Okt 2010, 09:43
Beitrag # 7 von 16
Beitrag ID: #453704
Bewertung:
(9623 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

bitteschön.

Ich habe eine raschen Test gemacht: ja, es funktioniert mit schrägen Linien.

Gruss, Hans


als Antwort auf: [#453695]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

11. Okt 2010, 15:33
Beitrag # 8 von 16
Beitrag ID: #453752
Bewertung:
(9597 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
das heißt auf MacOS in ID CS5 ? Das wäre doch toll.


als Antwort auf: [#453704]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Hans Haesler
  
Beiträge gesamt: 5822

11. Okt 2010, 15:52
Beitrag # 9 von 16
Beitrag ID: #453754
Bewertung:
(9592 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

nein, "nur" mit Mac CS4. Erst heute Abend werde ich es mit Mac CS5 prüfen können.

Übrigens: Die zip-Datei unter Windows XP heruntergeladen, wurde als defekt gemeldet. Aber auf dem Mac klappte es.

Gruss, Hans


als Antwort auf: [#453752]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Quarz
Beiträge gesamt: 3522

11. Okt 2010, 16:38
Beitrag # 10 von 16
Beitrag ID: #453760
Bewertung:
(9570 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die zip-Datei DINPfeilspitzen012 von Stefan
läßt sich auf Win_7 herunterladen und entspacken..


Gruß
Quarz

----------------------------------------------------------
InDesign CS4 6.05 + CS5 7.02 | Win7/64 Prof.



als Antwort auf: [#453754]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Hans Haesler
  
Beiträge gesamt: 5822

11. Okt 2010, 20:00
Beitrag # 11 von 16
Beitrag ID: #453778
Bewertung:
(9549 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

so. Jetzt habe ich auch einen Test mit CS5 unter Mac OS X 10.6.5 (= Snow Leopard) gemacht.

Das unveränderte Script funktioniert wie vorgesehen. Toll! :-)

Gruss, Hans


als Antwort auf: [#453752]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

11. Okt 2010, 20:59
Beitrag # 12 von 16
Beitrag ID: #453784
Bewertung:
(9534 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Klasse! Dann mach ich weiter.


als Antwort auf: [#453778]

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

12. Okt 2010, 00:43
Beitrag # 13 von 16
Beitrag ID: #453794
Bewertung:
(9514 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier ein Nebenprodukt:

Eine Modifikation des Skriptes "addPoints.jsx" von Adobe, welches zwischen je zwei Punkte eines Splines einen Punkt in die Mitte hinzufügt.
"addPointsAt.jsx" ist um einen Faktor t erweitert und kann ein Spline bei Faktor t teilen, ohne das es seine Form verliert. t=0.5 verhält sich natürlich wie "addPoints.jsx". t=0.25 teilt das Spline bei ungefähr einem Viertel. Die Teilung beruht jedoch nicht auf der echten Wegstrecke/Länge, oder dem Umfang des Spline, sondern, wie sagt Adobe?, der "Geschwindigkeit" der Kurve.


als Antwort auf: [#453784]
Anhang:
AddPointsAt.zip (1.88 KB)

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

26. Okt 2010, 12:33
Beitrag # 14 von 16
Beitrag ID: #455166
Bewertung:
(9315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Hier ist die Lösung.
Das Skript setzt an beliebige offene Pfade (auch an krumme Splines) Pfeilpitzen frei definierbarer Grösse an die Linienenden. Es kann gefüllte, dreieckige Pfeile oder V-linienförmige Pfeile zeichnen!

Bei der Such nach Bezier-Funktionen fand ich (WAS FÜR EIN GLÜCK!) ein fertiges und elegantes Illustrator-Skript für Pfeilspitzen von SATO Hiroyuki, das nur noch für Indesign adaptiert werden musste. Ich habe den Funktionsumfang nur noch geringfügig erweitert. SATO Hiroyuki bietet darüberhinaus eine ganze Schatzkiste von Skripten für Illustrator frei an, die man eigentlich auch noch adaptieren müsste:
http://park12.wakwak.com/.../en_aics_script.html

Das Pfeilspitzen-Skript ist im Kopfteil des Skriptes hinreichend dokumentiert und erläutert. Es funktioniert so praktisch und gut, das für meinen Teil die Aufgabe erledigt ist.

Beschreibung:
Code
Original: 
- Draws arrows for each selected end (anchor) of the selected pathes.
- Can draw filled triangular arrows if _arrow.fill = true;_ and V-shaped arrows if _arrow.fill = false;_
- The visible peaks of arrows exactly locate at each visible end of the selected pathes.
- The end of pathes are trimmed in order to avoid sticking out from the head of the arrow.

Adapted versions modifications:
- Draws arrows for each path in each selected object.
- Selected objects are filtered to be groups, polygons, graphiclines or compoundpaths.
- Introduced copiing of the original paths, so the selected objects do not get altered.
- Introduced the use of a seperate layer for the arrows and copied paths.
- Paths with projecting-end-caps are not modified anymore, but the copies - the arrows measures are taken from paths with endcaps removed.
- (You best work with paths without endcaps to begin with.)


Original JavaScript Script for Adobe Illustrator CS3
Tested with Adobe Illustrator CS3 13.0.3, Windows XP SP2 (Japanese version).

Adapted Version Javascript Script for Adobe Indesign CS4
Tested with Adobe Indesign CS4 6.0.5, Windows XP SP2 (German version). Other Creative Suites might work. CS5 too.


(Ich poste später noch Beispielbilder.)

Liebe Grüße,
Stephan


als Antwort auf: [#453794]
(Dieser Beitrag wurde von Stephan_M am 26. Okt 2010, 12:36 geändert)

Anhang:
Arrow-A-ID.jsx (13.0 KB)

[Javaskript, CS4] DIN-Pfeilspitzen an Linien-Enden

Stephan_M
Beiträge gesamt: 480

26. Okt 2010, 15:15
Beitrag # 15 von 16
Beitrag ID: #455203
Bewertung:
(9296 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Beispielbild für das letzte Skript im Anhang.

Gruß,
Stephan


als Antwort auf: [#455166]
Anhang:
Arrow-A-ID-Example.gif (25.1 KB)
X