Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Grep Ergebnis cut&paste

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

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

11. Dez 2013, 14:58
Beitrag # 1 von 10
Bewertung:
(2837 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
ich möchte per script in einem ausgewählte Textrahmen mit GREP bestimmten Text suchen, diesen ausschneiden und in einen neuen Textrahmen einsetzen..

Hat jemand einen Tipp für mich?
Gruß


Code
app.findGrepPreferences = null; 
app.findGrepPreferences.findWhat = "(DIN )?(EN )?( )?\\d+(-)?\\d+";
numberList = app.activeDocument.findGrep(true);

for (i=0; i<numberList.length; i++)
{

}

X

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

11. Dez 2013, 17:45
Beitrag # 2 von 10
Beitrag ID: #520881
Bewertung:
(2787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Wenn du etwas ausführlicher beschreiben würdest, was du machen möchtest, gäbe es viell. auch eine Antwort …

1. Wo ist der Sinn das rahmenweise zu machen?
2. Was bedeutet "neuen Textrahmen"?
a) Er ist schon da u. hat einen Namen im Ebenenbedienfeld?
b) Nein, ich sprech den sonstwie an …
c) Er muss erst noch erzeugt werden und soll xy liegen …

Und: Gibt es ein Beispiel-IDML? Vorher/Nachher?


als Antwort auf: [#520868]

Grep Ergebnis cut&paste

WernerPerplies
Beiträge gesamt: 2760

11. Dez 2013, 18:24
Beitrag # 3 von 10
Beitrag ID: #520883
Bewertung:
(2773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo imagica,

wenn ich Dich richtig verstanden habe, macht mein Skript etwas ähnliches:

Weise per Grep Deinen Fundstellen ein eindeutiges Zeichenformat zu.
Erzeuge einen einen Musterrahmen.
Dann erzeugt mein Skript an allen Fundstellen neue Rahmen und setzt bei entsprechender Einstellung den gefundenen Text in den neuen Rahmen ein.
Der Rahmen wird verankert und entsprechend dem Musterrahmen positioniert:

WpsCreateAnchoredFrames – Adobe InDesign Skript zur automatischen Erzeugung verankerter Rahmen

Oder habe ich da etwas falsch verstanden?


als Antwort auf: [#520868]

Grep Ergebnis cut&paste

Martin Fischer
  
Beiträge gesamt: 12779

11. Dez 2013, 19:00
Beitrag # 4 von 10
Beitrag ID: #520888
Bewertung:
(2746 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

Kai hat Recht.

Wenn die Aufgabenstellung etwas klarer wäre, könnte ggf. auf die eine oder ander fertige Lösung hier in der Skriptwerkstatt oder im Skriptarchiv hingewiesen werden.

Möglicherweise kostet es auch nur 5 Minuten ein vorhandenes Schnipsel auf die konkreten Anforderungen hin anzupassen.

Hast Du Lust, selbst scripten zu lernen?

Wenn es bei Deinem Anliegen z.B. um verankerte Rahmen geht, dann könntest Du in dem alten Thread Verankertes Objekt per Script erzeugen? einen Ausgangspunkt finden.

Oder recherchiere selbst nach verankert anchored o. Ä.


als Antwort auf: [#520881]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

11. Dez 2013, 19:04
Beitrag # 5 von 10
Beitrag ID: #520889
Bewertung: ||
(2741 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab deswegen nachgefragt, weil ich bereits hier sowas ähnliches veröffentlicht habe:
http://www.hilfdirselbst.ch/..._P518330.html#518330

Nach Anpassen von wenigen Zeilen hätte ich schon mal das:
Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") { 
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN |EN | )\\d+-?\\d+";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
var a = curResult.insertionPoints[0];
var newTf = a.textFrames.add({geometricBounds: [ "0p", "0p", "6mm", "24mm"]});
newTf.appliedObjectStyle = app.activeDocument.objectStyles.itemByName("Marginalien");
curResult.move(LocationOptions.AFTER, newTf.insertionPoints[0]);
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;


Evtl. muss im GREP am Schluss noch ein Leerzeichen rein und das mit dem neuen Rahmen ist mir eben nicht klar.


als Antwort auf: [#520888]

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

12. Dez 2013, 13:21
Beitrag # 6 von 10
Beitrag ID: #520932
Bewertung:
(2632 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Erstmal großes Danke an alle, nettes Forum!

Das von Kai ist schon (fast) das was ich suche.

Ich erkläre am besten den komplette Hintergrund:

Aufgabe war es, in einem Printwerk einen zusätzlichen Index nur von DIN-Normen zu erstellen, die im Text vorkommen.

Dies habe ich ja schon erfolgreich umgesetzt, bei denen mit GREP den gefundenen DIN-Normen (DIN, DIN EN, EN) ein Zeichenformat zugewiesen wird und dann (mit Hilfe des Scriptes von Martin Fischer) diese automatisch in den Index aufgenommen werden.

Soweit, so gut. Nur dann stehen diese, wenn man den Index generiert an der entsprechenden alphabetischen Stelle.

Z.B:

D
Dämmstoff 62, 64, 70, 144
Deckeneinbauten 91, 177
DIN 4108-1 55, 124, 204

usw.

Da die DIN-Normen aber separat in einem Textrahmen auf einer Seite stehen sollen, wollte ich mit einem Script per GREP nach diesen Normen im erstellten Index suchen, diese dort ausschneiden, und in den neuen Textrahmen einfügen.

Im Prinzip funktioniert das mit dem Script von Kai Rübsamen, nur dort werden die Treffer an der Fundstelle als verankerter Rahmen eingesetzt, Sie sollen aber untereinander (am besten noch sortiert) in einem einzigen Textrahmen untereinander stehen..

Vielleicht kann mir noch jemand einen Tipp geben, wie ich dies am Script ändern muss?

Danke für eure Hilfe!

Gruß Marco



P.S: da fällt mir noch etwas ein, eigentlich würde es ja auch reichen, wenn die Fundstellen von GREP nicht in den Index aufgenommen werden, sondern einfach nur in die Zwischenablage, dann könnte ich diese einfach in meinen gewünschten Textrahmen einfügen, ohne meinen geplanten cut&paste Vorgang....


als Antwort auf: [#520889]
(Dieser Beitrag wurde von imagica am 12. Dez 2013, 13:29 geändert)

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 14:09
Beitrag # 7 von 10
Beitrag ID: #520941
Bewertung:
(2606 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marco, was soll mit deinen Seitenzahlen passieren?
Mach mal einen Screen vorher / nachher.

Anbei schon mal die nächste Version. Dein Zieltextrahmen auswählen u. über das Ebenenbedienfeld den Namen "ziel" vergeben. Dann Skript starten. Es kann sein, dass der GREP noch nicht ganz passt.

Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") {  
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+.+\\r";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
//~ var str = curResult;
var targetFrame = app.activeDocument.textFrames.itemByName("ziel");
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[0]);
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;



als Antwort auf: [#520932]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 14:21
Beitrag # 8 von 10
Beitrag ID: #520944
Bewertung:
(2595 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn es nur um die Normen geht, diese Zeilen tauschen:
Code
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+"; 

Code
    var targetFrame = app.activeDocument.textFrames.itemByName("ziel");     
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[-1]);
targetFrame.insertionPoints[-1].contents = "\r";


Das -1 könnte man wohl auch in der o.g. Version noch ändern.


als Antwort auf: [#520941]

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

12. Dez 2013, 14:31
Beitrag # 9 von 10
Beitrag ID: #520945
Bewertung:
(2590 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey Kai,

super, es funktioniert so perfekt, wie in Deinem vorherigen Posting, die Seitenzahl soll ja mitgenommen werden!

Noch mal herzlichen Dank, hat mir auch zum Verständnis des scriptens generell geholfen.

Gruß Marco


als Antwort auf: [#520944]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 15:05
Beitrag # 10 von 10
Beitrag ID: #520948
Bewertung:
(2557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das freut mich. In der aktuellen Version hab ich noch eine einfache Sortierung drangehängt. Teste mal, ob dir das so reicht.
Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") {  
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+.+\\r";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
var targetFrame = app.activeDocument.textFrames.itemByName("ziel");
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[-1]);
}
var curCont = targetFrame.parentStory.contents.split("\r");
curCont.sort();
var newCont = curCont.join("\r");
targetFrame.contents = newCont;



als Antwort auf: [#520945]
(Dieser Beitrag wurde von Kai Rübsamen am 12. Dez 2013, 15:07 geändert)
X