[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Linie an Grep-fundstelle zeichnen

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

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

15. Dez 2017, 13:48
Beitrag # 1 von 23
Bewertung:
(9360 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich möchte gerne folgendes Ergebnis erzielen:
Mit einem Skript soll nachgeshen werden wo im Text ein Preis nach einem "statt" + Leerzeichen vorkommt.
An dieser Stelle soll der Preis durchgestrichen werden, aber nicht mit einem Zeichenformat sondern mit einer graphicline von links unten (Grundlinie) bis rechts oben (Versalhöhe) über die ganze Breite des Preises = Fundstelle.

Die Fundstelle kann ich mit GREP so ermitteln:
(?<=statt\s)\d+\.(\d+|-)

Aber wie kann ich die Linie an dieser Stelle diagonal zeichnen lasen?

Bitte um eure Mithilfe.

Vielen Dank
X

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4563

15. Dez 2017, 15:40
Beitrag # 2 von 23
Beitrag ID: #561474
Bewertung:
(9340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du denkst zu kompliziert. Dafür braucht es kein Skript!

Du machst dir eine Linie und vergibst ihr ein Objektformat. Dann fügst du sie an deiner Fundstellen über die Zwischenablage ein und richtest sie dann (oder schon vorher) als benutzerdefiniertes verankertes Objekt ein.

Gruß Kai Rübsamen


als Antwort auf: [#561469]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

18. Dez 2017, 13:21
Beitrag # 3 von 23
Beitrag ID: #561502
Bewertung:
(8953 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Kai für deine Antwort.
Aber ich denke leider nicht zu kompliziert. Der Text selbst darf nicht verändert werden. Also dürfen auch keine verankerten Objekte im Text vorkommen. (Der Text ist mit einer Datenbank verbunden und wird auch von daher aktualisiert)
Ergo muss die "Durchstreichlinie" als eigenes Objekt über dem Text liegen.

Und daher wollte ich das per Skript erledigen.

Um eine Linie zeichnen zu können müsste ich jedoch die Koordinaten von meiner Fundstelle irgendwie auf die der Linie übertragen. Und genau hier fehlt mir der Ansatz.

Aber für Beiträge bin ich dankbar.

LG
faxinger


als Antwort auf: [#561474]

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4563

18. Dez 2017, 13:47
Beitrag # 4 von 23
Beitrag ID: #561504
Bewertung:
(8944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dann würde ich den Strich trotzdem verankert einfügen u. nachträglich alle verankerten Objekte lösen. Wenn sich später dein Layout verschiebt, kannst du alle Objekte mit Objektformat x löschen und machst die Schritte einfach noch einmal.

Gruß Kai Rübsamen


als Antwort auf: [#561502]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

18. Dez 2017, 14:21
Beitrag # 5 von 23
Beitrag ID: #561505
Bewertung:
(8937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Kai,

aber es muss doch möglich sein, an den Fundstellen eine Linie zeichnen zu lassen?

LG
faxinger


als Antwort auf: [#561504]

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4563

18. Dez 2017, 14:33
Beitrag # 6 von 23
Beitrag ID: #561506
Bewertung:
(8935 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also: Hast du die Mitteilung von Martin gelesen. So könnte man das machen. Es gibt im Forum auch einige Beispiele dazu. Ich bin allerdings von deinem Skripting-Wissenstand ausgegangen und fände diese teilautomatisierte Lösung für dich momentan einfacher …

Was spricht gegen das Einfügen u. nachträgliche Lösen eines Objekts?

Edit: Nein, hast du vermutlich nicht, denn Martin hat seinen guten Ansatz leider wieder gelöscht?!

Es wäre übrigens so, dass du per Skript generell unterschiedliche Neigungen in Abhängigkeit der Länge deiner Preise kriegen wirst. Das würde MIR nicht gefallen.

Gruß Kai Rübsamen


als Antwort auf: [#561505]
(Dieser Beitrag wurde von Kai Rübsamen am 18. Dez 2017, 14:37 geändert)

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

18. Dez 2017, 15:31
Beitrag # 7 von 23
Beitrag ID: #561509
Bewertung:
(8921 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Kai.

Dass ich unterschiedliche Neigungen erhalte ist erwünscht. Daher ist auch die Lösung per Objektformat nicht machbar. -> Hier müsste ich händisch nachjustieren. Das will ich aber vermeiden.

Ich werde mal das Forum durchsuchen, vielleicht werde ich ja fündig.

Danke

LG
faxinger


als Antwort auf: [#561506]

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4165

18. Dez 2017, 15:56
Beitrag # 8 von 23
Beitrag ID: #561510
Bewertung:
(8904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,
ich hätte da noch einen Ansatz, der ohne eine Verankerung auskommt.

1. Wandle jede Fundstellen in eine Outline als Duplikat.
Also Schleife durch die Fundstellen mit Zähler n . Innerhalb der Schleife dann:
Code
var outline = foundTextOfGrep[n].createOutlines(false)[0]; 

Warum die [0] ? Weil createOutlines ein Array zurückgibt. Ich gehe hier mal von einer Länge 1 aus.

2. Zeichne im Spread der Outline (das ist der parent von outline) eine graphicLine mit den geometricBounds der Outline. Das gelingt am besten, wenn Du die Eigenschaft rulerOrigin der viewPreferences des Dokuments auf RulerOrigin.SPREAD_ORIGIN stellst.
Code
var gB = outline.geometricBounds; 
var graphicLine = outline.parent.graphicLines.add({ geometricBounds : gB });

An dieser Stelle kannst Du auch Werte für strokeWeight und strokeColor mitgeben. Vielleicht auch noch einen Wert für itemLayer, damit die graphicLine auf eine gesonderte Ebene gelangt.

3. Um von links unten nach rechts oben zu zeichnen, kannst Du den entirePath umdefinieren:
Code
graphicLine.paths[0].entirePath = [ [gB[1],gB[2]] , [gB[3],gB[0]] ]; 


Dann kannst Du das Objekt aus 1. wieder löschen:
Code
outline.remove(); 


Da wir hier kein konkretes Beispiel sehen, ist es etwas schwierig zu entscheiden, ob mein Vorschlag taugt, um von "Grundlinie" zu "Versalhöhe" zu zeichnen. Je nach Typografie der Preise sind "Versalhöhe" und "Grundlinie" vielleicht weniger geeignet.

Bedenke auch, was passieren soll, wenn gefundener Text in Übersatz steht.

Mit horizontalOffset eines der insertionPoints eines gefundenen Texts würde ich übrigens nicht arbeiten. Das ist nicht exakt genug an der Form des Texts dran. Kann sich sogar im Text befinden, wenn mit Unterschneidung gearbeitet wurde.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#561469]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

18. Dez 2017, 16:25
Beitrag # 9 von 23
Beitrag ID: #561511
Bewertung:
(8892 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Uwe,

dieser Ansatz gefällt mir sehr gut.

Werde ich demnächst testen.


Danke

LG
faxinger


als Antwort auf: [#561510]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

18. Dez 2017, 17:12
Beitrag # 10 von 23
Beitrag ID: #561514
Bewertung:
(8887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
nur rein interessenhalber:

Wie ungenau wäre es denn wenn man keine outlines generieren würde?

Es geht hier nämlich nicht um 100tel Millimeter beim zeichnen der Linie.

Vielleicht wäre doch der Ansatz ohne outlines gangbar?

LG
faxinger


als Antwort auf: [#561510]

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4165

18. Dez 2017, 17:32
Beitrag # 11 von 23
Beitrag ID: #561515
Bewertung:
(8883 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich würde sagen: Probier's einfach aus.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#561514]

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4563

18. Dez 2017, 18:02
Beitrag # 12 von 23
Beitrag ID: #561516
Bewertung:
(8841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Daher ist auch die Lösung per Objektformat nicht machbar. -> Hier müsste ich händisch nachjustieren. Das will ich aber vermeiden.

In dem Fall hättest du für unterschiedlich lange Preis versch. Objektformate. Aber versuch das mal mit der Linie. Du wirst zwar etwas länger brauchen, aber auch etwas lernen ;-)

Gruß Kai Rübsamen


als Antwort auf: [#561509]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

12. Jan 2018, 14:45
Beitrag # 13 von 23
Beitrag ID: #561819
Bewertung:
(5509 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

meine ersten Codeschnipsel zu diesem Thema führen schon mal ins Leere:
Code
var _doc = app.activeDocument; 

app.findGrepPreferences = NothingEnum.nothing; // Suchfeld leeren
app.changeGrepPreferences = NothingEnum.nothing; // Ersetzen-Feld leeren
app.findGrepPreferences.findWhat= "(?<=statt\s)\d+\.(\d+|-)";
var _found = app.activeDocument.findGrep();
alert (_found);

Ich erhalte nur ein leeres Hinweisfenster.

Ich habe aber ein ID-Dokument offen, und der Text kann so über die ID interne GREP-Suche gefunden werden.

Was mache ich falsch?

LG
faxinger


als Antwort auf: [#561516]

Linie an Grep-fundstelle zeichnen

Ralf Hobirk
Beiträge gesamt: 5807

12. Jan 2018, 15:19
Beitrag # 14 von 23
Beitrag ID: #561821
Bewertung:
(5501 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

in Javascript muss auch der Backslash escaped werden:

Code
app.findGrepPreferences.findWhat= "(?<=statt\\s)\\d+\\.(\\d+|-)"; 


---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)


als Antwort auf: [#561819]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 191

15. Jan 2018, 10:51
Beitrag # 15 von 23
Beitrag ID: #561835
Bewertung:
(4812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Ralf,

in kleinen Schritt bin ich jetzt weiter, alleerdings funktioniert es noch nicht. Das ist mein Code soweit:
Code
 

var _doc = app.activeDocument;

app.findGrepPreferences = NothingEnum.nothing; // Suchfeld leeren
app.changeGrepPreferences = NothingEnum.nothing; // Ersetzen-Feld leeren
app.findGrepPreferences.findWhat= "(?<=statt\\s)\\d+\\.(\\d+|-)";
var _found = app.activeDocument.findGrep();

var X_first = _found.horizontalOffset;
var X_last = _found.endHorizontalOffset;
var Y_bottom = _found.baseline;
var Y_top = _found.baseline + 12;

for (j = 0; j < _found.length; j++) {

add.graphicLine.paths[i].entirePath = [ [X_first[1],Y_bottom[2]] , [X_last[3],Y_top[0]] ];

};



Ich glaub da fehlt noch was...

LG
faxinger


als Antwort auf: [#561821]
X

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
19.10.2018

München
Freitag, 19. Okt. 2018, 10.36 Uhr

Seminar

Wer digitale Dokumente für PC, Tablet oder Handys erstellen will, der muss umdenken. Die alten Arbeitsweisen und Regeln, die bei Printprodukten die Standards gesetzt haben, die gelten hier nicht mehr. Um nur einige Stichpunkte zu nennen: RGB statt CMYK, 16 zu 9 statt DIN A4, einseitig statt doppelseitig, scrollen und tippen statt umblättern. Dazu kommt die Interaktivität, die das PDF bietet: Automatisch zoomen und verlinken, Seitensprünge, Sound- und Videoeinbettung, Einbettung von 3D-Objekten, Schaltflächen und Formulare, Kommentare.

München, Freitag, 19.10.2018, Teilnahmegebühr 534,31 Euro (incl 19% MwSt), 9.30 bis 17.30 Uhr

Ja

Organisator: Cleverprinting

https://www.cleverprinting.de/pdf-first/

PDF first – Digitale Dokumente für PC, Tablet, mobile Endgeräte
Veranstaltungen
25.10.2018

Hamburg
Donnerstag, 25. Okt. 2018, 10.39 Uhr

Seminar

Viele Funktionen, für die früher Illustrator benötigt wurde, finden sich heute auch in InDesign. Angefangen bei den Pfadwerkzeugen, mit denen sich Linien und Bezier-Pfade zeichnen lassen, über die regulären Zeichenwerkzeuge für Rahmen und Linien bis hin zum Pathfinder, der Vektorobjekte zerschneiden, verbinden und kombinieren kann: InDesign bietet eine Vielzahl von Vektorgrafik-Werkzeugen, mit denen sich auch komplexe Vektorgrafiken erstellen lassen.

München, Donnerstag, 25.10.2018, Seminargebühr 415,31 (inkl. 19% MwSt), 9.30 Uhr bis 17.30 Uhr

Ja

Organisator: Cleverprinting

Vektorgrafik mit Adobe InDesign und Illustrator