Ich habe ein Javascript, das durch die Ebenen-Liste in Adobe Illustrator geht und ändert den Namen auf der Grundlage der Eingabe durch den Benutzer.Set Fokus von Text bearbeiten in ExtendedScript
Es gibt 2 'editiertext' Textfelder für die Eingabe, der erste ist der Name, den Sie suchen möchten, und der zweite ist derjenige, den Sie ersetzen möchten. Das Skript funktioniert, allerdings möchte ich beim Start des Skripts das erste Textfeld aktiviert haben, damit der Benutzer mit dem ersten Textfeld startet und mit dem zweiten Textfeld fortfahren kann.
Ich möchte auch meine Submit-Taste laufen lassen, wenn die "Enter" -Taste gedrückt wird, um es schneller zu machen.
Ich verwende Adobe ExtendScript TK mit Adobe Illustrator CS6.
#target illustrator
#targetengine main
// JavaScript Document
function renameText(searchText, replaceText) {
if (app.documents.length == 0) return;
var docRef = app.activeDocument;
recurseLayers(searchText, replaceText, docRef.layers);
}
function recurseLayers(searchText, replaceText, objArray) {
try {
$.writeln("Layer length: " + objArray.length);
for (var i = 0; i < objArray.length; i++) {
if (objArray[i].visible == true && objArray[i].locked == false) {
//var searchtext = "/\s*" + searchText + "\s*\d*/";
objArray[i].name = objArray[i].name.replace(searchText, replaceText);
if (objArray[i].layers.length > 0) {
recurseLayers(searchText, replaceText, objArray[i].layers);
}
}
}
} catch (e) {
logger(e);
}
}
startGUI();
function startGUI() {
var win = new Window("dialog", "Replace Layer name", undefined);
win.orientation = "column";
win.alignChildren = ["fill", "fill"];
// Search
var searchGrp = win.add("panel", undefined, "Search and Replace");
searchGrp.orientation = "column";
searchGrp.alignChildren = ["fill", "fill"];
var titleMsgS = searchGrp.add("statictext", undefined, "Layer name to search:");
var searchText = searchGrp.add("edittext { characters: 1, justify: 'center', active: true }");
searchTest.setFocus();
searchText.helpTip = "Input layer name to replace";
var titleMsgR = searchGrp.add("statictext", undefined, "Layer name to replace with:");
var replaceText = searchGrp.add("edittext { characters: 1, justify: 'center', active: true }");
replaceText.helpTip = "Input layer name to replace with";
// Replace button
var replaceBtn = searchGrp.add("button", undefined, "Replace");
replaceBtn.helpTip = "Replace layer name";
replaceBtn.onClick = function() {
renameText(searchText.text, replaceText.text);
app.redraw();
}
// Close button
var quitBtn = win.add("button", undefined, "Close");
quitBtn.helpTip = "Press Esc to Close";
// Event listener for the quit button
quitBtn.onClick = function() {
win.close();
}
// Centering & Show Window
win.center();
win.show();
}
// Prints stack trace
function logger(e) {
var errorMsg = "";
errorMsg = errorMsg.concat("An error has occured:\n", e.line, "\n", e.message, "\n", e.stack);
$.writeln(errorMsg);
}
Arbeitete wie ein Charme, danke! –
Können Sie meine Frage upvote, damit ich Rep erhalten kann? –