Puedo eliminar una capa por su nombre:
var myDoc = app.activeDocument;
var myLayers = myDoc.layers;
var myLayer = myLayers["layer name"];
myLayer.remove();
o por orden de apilamiento:
var myLayer = myLayers[1];
myLayer.remove();
y sé cómo encontrar y reemplazar texto con un script, así que estoy tratando de encontrar una manera de combinar estos dos y encontrar una cadena, luego elimino la capa en la que está la cadena ya que no puedo usar el nombre de la capa o el orden de apilamiento. Estoy tratando de aprender a escribir secuencias de comandos a medida que avanzo, por lo que es posible que esto no sea posible (entonces, alguien que diga que no es posible sería útil) y mi secuencia de comandos probablemente esté llena de problemas... pero esto es lo que traté de armar y no funciona. t trabajo así que aquí estoy pidiendo ayuda.
var myDoc = app.activeDocument;
var search_string = "words I am trying to search for";
var text_frames = myDoc.textFrames;
if (text_frames.length > 0)
{
for (var i = 0 ; i < text_frames.length; i++)
{
var this_text_frame = text_frames[i];
if (this_text_frame = search_string.contents)
{
this_text_frame.remove();
}
}
}
Esto funcionará siempre que haya un fragmento de texto consistente para buscar. Se puede aplicar a una acción y por lotes.
Observe que se repite en orden inverso. Esta es una estrategia común cada vez que se repiten elementos que se eliminarán de la matriz. De lo contrario, la reducción de la longitud de la matriz interferirá con los ciclos futuros a través del ciclo.
Al usar el método de coincidencia, puede ver si una cadena está en algún lugar dentro del contenido.
El método de coincidencia también aceptará un objeto RegExp (expresión regular). Esto será útil si el texto de búsqueda cambia ligeramente pero sigue un patrón.
var doc, texts, i, count, find;
find = "MyString"; // Replace with your own string
doc = activeDocument;
texts = doc.textFrames;
count = texts.length;
for (i=count-1; i>0; i--)
{ if (texts[i].contents.match (find) == find)
{ texts[i].remove ();
}
}
Un método sería simplemente Buscar y reemplazar, reemplazar con nada y ejecutar este script para eliminar todos los marcos de texto vacíos.
Written By Łukasz Wieczorek - hellowoo.com
you can destribute this freely via creative commons(http://creativecommons.org/licenses/by-sa/3.0/)
but leave this message in tact, or give credit to original script.
var numberOfEmptyTextBoxes = 0;
var layersWithNoText = new Array();
if ( app.documents.length > 0 ) {
for ( i = 0; i < app.activeDocument.textFrames.length; i++ ) {
text = app.activeDocument.textFrames[i].textRange;
numWords = app.activeDocument.textFrames[i].words.length;
if (numWords == 0){
layersWithNoText.push(app.activeDocument.textFrames[i]);
numberOfEmptyTextBoxes++;
}
}
if(numberOfEmptyTextBoxes > 0){
alert("You have " + numberOfEmptyTextBoxes + " empty text boxes. They will be deleted.");
}
removeTextLayersWithNoContent(layersWithNoText);
}
function removeTextLayersWithNoContent(layersWithNoText) {
var layersWithNoText = layersWithNoText;
for (var i = 0; i < layersWithNoText.length; i++) {
var currentIndex = layersWithNoText[i];
layersWithNoText[i].remove();
};
}
Copie y pegue esto y guárdelo como .jsx
Lamentablemente, Illustrator no tiene métodos de búsqueda tan sólidos como InDesign.
usuario9447
usuario9447
usuario9447