[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

Kai Rübsamen
Beiträge gesamt: 4659

15. Jan 2018, 11:02
Beitrag # 16 von 31
Beitrag ID: #561838
Bewertung:
(6054 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wo ist dein Beispieldokument als .idml-Datei?

Gruß Kai Rübsamen


als Antwort auf: [#561835]
X

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

15. Jan 2018, 11:52
Beitrag # 17 von 31
Beitrag ID: #561839
Bewertung:
(6038 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

im Anhang ist jetzt eine idml Datei als Beispiel.

Es sollen quasi die Linien automatisch per Skript gezeichnet werden...

LG
faxinger


als Antwort auf: [#561838]
Anhang:
test.idml (33.7 KB)

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4659

15. Jan 2018, 12:21
Beitrag # 18 von 31
Beitrag ID: #561842
Bewertung:
(6034 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Versuch es mal so:

Code
var _doc = app.activeDocument;  

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat= "(?<=statt\\s)\\d+\\.(\\d+|-)";
var _found = _doc.findGrep();

for (j = 0; j < _found.length; j++) {
var curFound = _found[j];
var x1 = curFound.horizontalOffset;
var y1 = curFound.baseline;
var x2 = curFound.endHorizontalOffset;
var y2 = curFound.baseline - 3;
var graphicLine = _doc.graphicLines.add();
graphicLine.properties = {
fillColor : "None" ,
strokeColor : "Magenta" ,
strokeWeight : "0.25 mm"
}
graphicLine.paths[0].pathPoints[0].anchor = [x1, y1];
graphicLine.paths[0].pathPoints[1].anchor = [x2, y2];
}


oder so:
Code
var _doc = app.activeDocument;  

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat= "(?<=statt\\s)\\d+\\.(\\d+|-)";
var _found = _doc.findGrep();

for (var j = 0; j < _found.length; j++) {
var curFound = _found[j];
var x1 = curFound.horizontalOffset;
var y1 = curFound.baseline;
var x2 = curFound.endHorizontalOffset;
var y2 = curFound.baseline - 3;
var graphicLine = _doc.graphicLines.add();
graphicLine.properties = {
fillColor : "None" ,
strokeColor : "Magenta" ,
strokeWeight : "1",
name: "Preislinie"
}
graphicLine.paths[0].entirePath = [[x1, y1], [x2, y2]];
}

app.findGrepPreferences = app.changeGrepPreferences = null;


Dein Vorgehen ist gefährlich! Was machst du, wenn sich der Umbruch nachträglich verschiebt? Wie willst du die Linien wieder löschen? Ich würde zumindest noch ein Objektformat, Namen oder eigene Ebene vergeben.

Gruß Kai Rübsamen


als Antwort auf: [#561839]
(Dieser Beitrag wurde von Kai Rübsamen am 15. Jan 2018, 12:27 geändert)

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

15. Jan 2018, 12:39
Beitrag # 19 von 31
Beitrag ID: #561844
Bewertung:
(6024 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Perfekt.

Danke sehr


als Antwort auf: [#561842]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

18. Jan 2018, 11:39
Beitrag # 20 von 31
Beitrag ID: #561912
Bewertung:
(5811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

danke für den Hinweis. Aber die Linien werden mit einem Skript gelöscht und dann neu gezeichnet.

Objektformate würden mir da nix helfen. Aber es kommen ohnehin nur solche Linien im Dokument vor und somit ist das Löschen per Skript der schnellste Weg.


LG
faxinger


als Antwort auf: [#561842]

Linie an Grep-fundstelle zeichnen

Kai Rübsamen
Beiträge gesamt: 4659

18. Jan 2018, 12:59
Beitrag # 21 von 31
Beitrag ID: #561922
Bewertung:
(5804 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In meiner zweiten Variante hatte ich einen Namen vergeben. Du könntest das Skript dahingehend ergänzen und zuerst alle Linien mit entsprechendem Namen besuchen, löschen u. dann neu zeichnen.

Gruß Kai Rübsamen


als Antwort auf: [#561912]

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4792

18. Jan 2018, 13:13
Beitrag # 22 von 31
Beitrag ID: #561926
Bewertung:
(5798 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm…
Noch einfacher wäre vielleicht für die Linien eine separate, eigene Ebene zu benutzen. Vor einem zweiten Skriptlauf wird einfach auf die Ebene geprüft und falls vorhanden gelöscht.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#561922]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

18. Jan 2018, 15:24
Beitrag # 23 von 31
Beitrag ID: #561934
Bewertung:
(5774 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

danke aber die Linien müssen auf der gleichen Ebene sein.

Aber wie gesagt da im Dokument sonst keine Linien vorkommen ist es auch kein Problem diese vorab per skript zu löschen und dann neu zeichnen zu lassen.

LG
faxinger


als Antwort auf: [#561926]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

10. Sep 2020, 16:15
Beitrag # 24 von 31
Beitrag ID: #576713
Bewertung:
(2931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

ich muss das Thema noch einmal aufgreifen:

Das Skript funktioniert nur auf einer Seite bzw. Doppelseite.

Wie kann ich aber alle Fundstellen im Dokument mit Linien versehen?

Ich muss ja dann noch alle Seiten durchlaufen, aber mir ist nicht klar wie ich die jeweiligen x und y koordinaten des betroffenen Textrahmens auf der jeweiligen Seite mitberücksichtige.

Aktuell zeichnet ID alle Linien nur auf dem 1. Spread.

Sprich alle Fundstellen werden auf der 1. Seite gezeichnet.

Da hab ich jetzt einen Knoten im Hirn...


als Antwort auf: [#561842]
(Dieser Beitrag wurde von faxinger am 10. Sep 2020, 16:19 geändert)

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4792

10. Sep 2020, 19:56
Beitrag # 25 von 31
Beitrag ID: #576716
Bewertung:
(2913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,
Du könntest die neu gezeichnete Linie am ersten insertionPoint der Fundstelle verankern und den Anker anschließend lösen.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#576713]

Linie an Grep-fundstelle zeichnen

WernerPerplies
Beiträge gesamt: 2525

11. Sep 2020, 06:30
Beitrag # 26 von 31
Beitrag ID: #576717
Bewertung:
(2832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#561469]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

11. Sep 2020, 09:21
Beitrag # 27 von 31
Beitrag ID: #576721
Bewertung:
(2786 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke für deine Antwort.

Müsste es nicht auch über den jeweiligen Textrahmen bzw. dessen parentpage funktionieren?

LG
faxinger


als Antwort auf: [#576716]

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4792

11. Sep 2020, 14:08
Beitrag # 28 von 31
Beitrag ID: #576726
Bewertung:
(2728 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,

weshalb kompliziert, wenn's auch einfach geht?

Keine Ahnung, welchen Code Du benutzt, um die Linien zu bauen.
Davon hängt's doch ab.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#576721]

Linie an Grep-fundstelle zeichnen

faxinger
Beiträge gesamt: 245

11. Sep 2020, 14:32
Beitrag # 29 von 31
Beitrag ID: #576727
Bewertung:
(2720 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

derzeit verwende ich diesen Code:
Code
 
//DESCRIPTION: Löscht vorhandene Linien und zeichnet neue Linien beim Preis nach "statt"
// das aktive Dokument
var curDoc = app.activeDocument;
curDoc.viewPreferences.rulerOrigin = RulerOrigin.pageOrigin;
// die aktive Ebene
var curLayer = curDoc.activeLayer=curDoc.layers.itemByName("Artikel");
// alle Linien auf der aktiven Ebene
var allLinesOnCurLayer = curLayer.graphicLines.everyItem().getElements();

// die Schleife muss rückwärts laufen, da etwas gelöscht wird
for (var i = allLinesOnCurLayer.length-1; i >= 0 ; i--) {
var curLine = allLinesOnCurLayer[i];
// prüfen ob die Linie ohne Pfeile ist
if (curLine.leftLineEnd == ArrowHead.NONE) {
curLine.remove();
}
};

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

var _found = curDoc.findGrep(true);
for (j = 0; j < _found.length; j++)
{
var curFound = _found[j];
var _firstchar = curFound.contents[0];

switch (_firstchar)
{
case "1":
var _wert = -0.2;
break;

case "2":
var _wert = +0.15;
break;

case "3":
var _wert = +0.15;
break;

case "4":
var _wert = +0.25;
break;

case "5":
var _wert = +0.18;
break;

case "6":
var _wert = +0.15;
break;

case "7":
var _wert = +0.02;
break;

case "8":
var _wert = +0.1;
break;

case "9":
var _wert = +0.1;
break;

case "0":
var _wert = +0.05;
break;
};



var x1 = curFound.horizontalOffset -_wert;
var y1 = curFound.baseline - 0.15;
var x2 = curFound.endHorizontalOffset +0.2;
var y2 = curFound.baseline - 1.9;
var graphicLine = curDoc.graphicLines.add();
graphicLine.properties = {
fillColor : "None" ,
strokeColor : "Black" ,
strokeWeight : "1pt"
}
graphicLine.paths[0].pathPoints[0].anchor = [x1, y1];
graphicLine.paths[0].pathPoints[1].anchor = [x2, y2];

};


Das Problem dabei ist wie gesagt, dass nur die erste Seite bzw. der erste Druckbogen mit den Streichlinien umgesetzt wird. Die weiteren Linien (GREP-Fundstellen) werden alle auf der 1. Seite gezeichnet.


als Antwort auf: [#576726]

Linie an Grep-fundstelle zeichnen

Uwe Laubender
Beiträge gesamt: 4792

11. Sep 2020, 15:56
Beitrag # 30 von 31
Beitrag ID: #576732
Bewertung: ||
(2709 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Na, dann ermittelst Du über den ersten insertionPoint des gefundenen Textes den zugehörigen Textrahmen und dessen parentPage und baust die Linie dort.

Das dürfte in Deinem Code das hier sein:

Code
var graphicLine = curFound.insertionPoints[0].parentTextFrames[0].parentPage.graphicLines.add(); 


Du solltest aber vorab noch den aktuellen Wert von parentPage prüfen. Kann ja sein, dass sich eine Fundstelle auf dem Pasteboard befindet. Dann gibt parentPage den Wert null zurück. Im Erfolgsfall aber das Seitenobjekt.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#576727]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.10.2020

Ortsunabhängig
Donnerstag, 29. Okt. 2020, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen in diesem kostenlosen ca. 30-minütigen Webinar das neueste Produkt aus dem Hause Enfocus vor. Enfocus bringt mit BoardingPass eine pfiffige Lösung auf den Markt, welche eingehende Daten auf die wichtigsten druckrelevanten Kriterien hin gleich im Mail-Browser prüfen lässt. Mit BoardingPass sind auch Kundenberater und Avor-/Vertriebs-Mitarbeiter in der Lage, eingegangene Druckdaten innerhalb ihres Mail-Programmes sofort zu prüfen und dem Auftraggeber eine leicht verständliche Rückmeldung über diese zu geben. Die Druckdaten müssen also gar nicht erst über den internen Workflow des Druckdienstleisters laufen, sondern können direkt auf druckrelevante Kriterien geprüft und auch begutachtet werden.

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=292

Enfocus BoardingPass
Veranstaltungen
02.11.2020 - 03.11.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Montag, 02. Nov. 2020, 08.30 Uhr - Dienstag, 03. Nov. 2020, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Preis: CHF 1'400.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/desktop-publishing/adobe-indesign-cc/kurs-indesign-cc-basic

Neuste Foreneinträge


Scripting DOM API Documentation für InDesign CC 2021

Textrahmen - Unterteilte Spalte funktioniert nicht

Warum kommt Fehlermeldung "Wacom-Treiber" beim Start?

Affinity Designer Objekte auswählen

Bestimmte PDF-Kommentare löschen

Affinity Photo und Photoshop: HSL-Farbbereich als Maske speichern

Buchdateien kopieren

Werkzeugleiste und Bedienfelder sind verschwunden

Wie importiere ich eine Word Datei mit Fussnoten in Indesign?

PDF Export mit Briefpapier einfügen
medienjobs