pixelanstalt
New member
Hallo Community,
kaum registriert, schon die erste Frage, die es möglicherweise schon in sich hat. Ich habe jedenfalls noch nichts dazu gefunden…
Eines vorweg: Ich bin KEIN Programmierer, aber so den einen oder anderen Zusammenhang in Code kann ich schon verstehen und ggf. zusammenstückeln.
Folgende Situation:
Für einen Templating-Job in Indesign habe ich sehr viel mit benannten Objekten auf unterschiedlichen Ebenen zu tun (Textrahmen, Grafikrahmen und auch nicht zugewiesene Inhalte). Diese haben alle bestimmte Präfixe in ihrer Benennung (Bsp. 002P_1_R01_14_blablabla) und müssen meistens nochmal umbenannt werden, wenn sich im Projekt etwas ändert (z.B. in 004L_2_R00_00_blablabla).
Wenn ich ein Objekt auf einer Ebene umbenennen möchte, klappt das leider nicht per Doppelklick, sondern ich muss draufklicken, kurz warten, bis der Name editierbar ist und dann kann ich umbenennen. Bei teilweise bis zu 80 Objekten kostet das mächtig Zeit und Nerven...
Per Javascript lassen sich Ebenen-Namen global umbenennen. Allerdings auch NUR die Ebenen-Namen, nicht Elemente, die sich auf der Ebene befinden und einen bestimmten Namen haben. Dazu habe ich folgendes Skript gefunden:
Findet sich hier: Ebenen umbenennen mit Suchen + Ersetzen - Adobe InDesign Skriptwerkstatt - HilfDirSelbst.ch - Forum
Das funktioniert soweit auch super.
Außerdem habe ich herausgefunden, dass ich mir mit folgendem Code-Schnipsel den Namen eines ausgewählten Elements auf einer Ebene ausgeben lassen kann.:
Was mir jetzt fehlt, ist den Inhalt(die Variable) des Code-Schnipsels in das o.g. Skript so einzuarbeiten, damit ich ebenfalls über das gesamte Dokument alle Elemente einfach umbenennen kann.
Kann mir dabei vielleicht jemand hier unter die Arme greifen? Das würde mir wirklich enorm helfen.
Vielen Dank schonmal vorab
Ralf
kaum registriert, schon die erste Frage, die es möglicherweise schon in sich hat. Ich habe jedenfalls noch nichts dazu gefunden…
Eines vorweg: Ich bin KEIN Programmierer, aber so den einen oder anderen Zusammenhang in Code kann ich schon verstehen und ggf. zusammenstückeln.
Folgende Situation:
Für einen Templating-Job in Indesign habe ich sehr viel mit benannten Objekten auf unterschiedlichen Ebenen zu tun (Textrahmen, Grafikrahmen und auch nicht zugewiesene Inhalte). Diese haben alle bestimmte Präfixe in ihrer Benennung (Bsp. 002P_1_R01_14_blablabla) und müssen meistens nochmal umbenannt werden, wenn sich im Projekt etwas ändert (z.B. in 004L_2_R00_00_blablabla).
Wenn ich ein Objekt auf einer Ebene umbenennen möchte, klappt das leider nicht per Doppelklick, sondern ich muss draufklicken, kurz warten, bis der Name editierbar ist und dann kann ich umbenennen. Bei teilweise bis zu 80 Objekten kostet das mächtig Zeit und Nerven...
Per Javascript lassen sich Ebenen-Namen global umbenennen. Allerdings auch NUR die Ebenen-Namen, nicht Elemente, die sich auf der Ebene befinden und einen bestimmten Namen haben. Dazu habe ich folgendes Skript gefunden:
Code:
main();
function main()
{
var doc = app.documents.firstItem(),
_search = '', _replace = '', tg_name = '', reg_exp = null;
_error = [];
var input = get_input();
reg_exp = new RegExp (input.search, 'g');;
for (var i = 0; i < doc.layers.length; i++)
{
tg_name = doc.layers.item(i).name.replace(reg_exp, input.replace);
if (!doc.layers.itemByName(tg_name).isValid)
{
try
{
doc.layers.item(i).name = tg_name;
}
catch(e)
{
_error.push(doc.layers.item(i).name + '\t' + tg_name + '\t' + e.message)
}
}
}
if (_error.length > 0)
alert('Achtung!\n' + _error.join('\n'));
function get_input()
{
var win = null, search_field= null, replace_field = null, gs = null, gr = null, btn_gr = null,
search_text = '', replace_text = '';
win = new Window ('dialog', 'Ersetzen in Ebenennamen');
win.alignChildren = ['left', 'top'];
gs = win.add("group");
gs.add("statictext {text: 'Suchen: ' , characters: 8}");
search_field = gs.add ("edittext {text: 'Ebene ', characters: 8, active: true}");
gr = win.add("group");
gr.add("statictext {text: 'Ersetzen: ' , characters: 8}");
replace_field = gr.add ("edittext {text: 'xx-', characters: 8}");
btn_gr = win.add ("group");
btn_gr.alignment = "right";
btn_gr.add ("button", undefined, "Cancel");
btn_gr.add ("button", undefined, "OK");
if (win.show () == 1)
{
search_text = search_field.text;
replace_text = replace_field.text;
return {search: search_text, replace: replace_text};
}
else
exit ();
}
}
Findet sich hier: Ebenen umbenennen mit Suchen + Ersetzen - Adobe InDesign Skriptwerkstatt - HilfDirSelbst.ch - Forum
Das funktioniert soweit auch super.
Außerdem habe ich herausgefunden, dass ich mir mit folgendem Code-Schnipsel den Namen eines ausgewählten Elements auf einer Ebene ausgeben lassen kann.:
Code:
var meinObjekt = app.selection[0].name;
alert(meinObjekt);
Was mir jetzt fehlt, ist den Inhalt(die Variable) des Code-Schnipsels in das o.g. Skript so einzuarbeiten, damit ich ebenfalls über das gesamte Dokument alle Elemente einfach umbenennen kann.
Kann mir dabei vielleicht jemand hier unter die Arme greifen? Das würde mir wirklich enorm helfen.
Vielen Dank schonmal vorab
Ralf