Eagle cad reemplaza el comando usando la línea de comando

Estoy usando Eagle Cad y cambié mis bibliotecas a otra carpeta. Necesitaba un acceso más rápido. Ahora tengo que actualizar mis componentes en mi esquema y quería usar el comando de reemplazo desde la línea de comandos.

Leí el manual pero le falta proporcionar sintaxis para este comando. He probado muchas variaciones diferentes y obtengo muchos errores diferentes. Me preguntaba si alguien conocía la sintaxis correcta y podría publicar una referencia de trabajo.

Ps Además, hay espacios y comillas en algunos de mis componentes. Ejemplo de intentos fallidos: REPLACE C "BUTTON-CONDUCTIVESMD-0.1" (BUTTON-CONDUCTIVE)@MyLibrary" BUTTON-TRACE@000_Mylib"

Error:Invalid point:(BUTTON-CONDUCTIV...

Pps También he mirado el comando set como una posible alternativa, pero no lo he probado. ¿Es una opción viable? En caso afirmativo, proporcione también una referencia de trabajo.

Respuestas (2)

Dado que los archivos brd y sch están en XML, me gustaría sugerir editarlos y cambiarlos directamente, ¡pero tal vez no siempre sea una buena idea! ¡Podrías intentarlo con una copia si fueras lo suficientemente valiente!

Parece que Reemplazar tiene dos opciones:

REPLACE device_name[@library_name] •..
REPLACE part_name device_name[@library_name] ..

El primero simplemente escribe REEMPLAZAR "mycomponent@mylibrary" y haz clic en los componentes apropiados.

El segundo es el mismo pero primero le dio el nombre de la parte.

Tampoco son opciones particularmente buenas. Pensé que sería fácil, por ejemplo, agrupar todos los componentes de un paquete en particular y reemplazarlos, pero no veo cómo. Es probable que tengas que usar un script para hacerlo. Esto no es realmente una respuesta, supongo.

Estoy investigando esto. He realizado algunos eventos de edición en el xml y me gusta usar mi editor de texto (N ++) para todo lo que es capaz de hacer. --Volveré a publicar si esto funciona como se esperaba...
Bueno, pude editar las partes de la biblioteca en el archivo xml y obtener el esquema para cargar; hay algunos elementos diferentes para cambiar para que finalmente se cargue, pero luego aparece el error 'no se realizará ninguna anotación hacia adelante/hacia atrás'. Eso me impedirá seguir adelante y marcaré su respuesta como funcional porque brinda una mejor referencia sobre cómo usar el comando REEMPLAZAR que cómo lo interpreté. ¡Gracias!
Eso tampoco es ideal: supongo que los archivos .sch y .brd deben coincidir exactamente. Simplemente no estoy lo suficientemente familiarizado con los ULP para saber cómo hacerlo correctamente en la interfaz de usuario. Google encontró la misma pregunta que has hecho en otros sitios, ¡pero sin respuestas! ¡Argh! Todo lo que uso son archivos .scr que son solo una lista de los comandos que escribe de todos modos. Como dice gbulmer, puede generarlos muy fácilmente.
Creo que tienes razón sobre los archivos .sch y .brd. Leí que debe tenerlos abiertos al mismo tiempo cuando realiza cambios en uno o, de lo contrario, los cambios no se realizan en el otro.

La forma en que he hecho cosas repetitivas en Eagle es mediante la creación de un script de instrucciones de línea de comandos. Luego hago copias de los archivos del proyecto, abro las copias del archivo del proyecto y ejecuto el script. Suele tener errores, que hay que corregir, por lo que siempre trabajo en copias.

Puede crear scripts en un editor de texto a mano si tiene sentido.

Mis usos son ligeramente diferentes, son muy repetitivos e implican algunos cálculos. Entonces lo hago usando un programa Python o Go lang. El programa crea los scripts de línea de comandos. Luego ejecuto el script como de costumbre dentro de Eagle. (Este es un enfoque muy UNIX :-)

Como ha señalado carveone, los archivos sch y brd son XML en Eagle 6 en adelante.

Entonces, si conoce un lenguaje de programación con capacidades razonables de manejo de texto, XSLT o un potente editor de texto, puede extraer los nombres antiguos de todos los componentes existentes en esos archivos Eagle.

Utilizo un programa que inserta saltos de línea para que XML sea mucho más fácil de leer y trabajar con él. Al dividir XML en líneas, se vuelve más fácil manipular el archivo utilizando editores de texto con potentes capacidades de coincidencia de expresiones regulares (por ejemplo, vi, vim, ...)

Entonces, si tiene el conocimiento y las habilidades, podría seguir ese enfoque.

Enfoque :
copie los archivos sch y brd, luego edítelos hasta que contengan solo la información suficiente para identificar las partes del nombre anterior.

Una vez que tenga ese archivo que contiene los nombres de los componentes antiguos, debería poder crear un archivo de comandos, uno por componente, para reemplazar los nombres de las piezas antiguas con los nombres de las piezas nuevas.

Estaría muy tentado a corregir los nombres en las bibliotecas para eliminar espacios de sus nombres para facilitar todo este proceso.

Esto también es útil ... más para la referencia a la creación de comandos en otros procesos (N ++ tiene NppCalc, que no cae exactamente en una categoría de idioma pero funciona ...) y luego ejecutarlos en un script ... Todavía tengo que averigüe cuándo tendré que escribir un script: ¡este es mi primer PCB!
Como escribí, para el tipo de problema que tiene, si solo se trata de uno o dos archivos, podría convertir el archivo XML en un formato de una línea por declaración xml y usar algunas expresiones regulares en un editor de texto para crear una secuencia de comandos . Sin embargo, si hubiera muchos archivos para procesar, escribiría un programa para copiar cada archivo XML sch y brd, y reemplazaría el nombre de la parte anterior con el nuevo, sin ejecutar Eagle en absoluto. Me decepcionaría si eso fallara, y no me sorprendería si funcionara perfectamente. Eagle tiene un lenguaje de programación integrado, pero es más fácil escribir un programa en un lenguaje que conozco.
+1 Hice esto en el lenguaje de procesamiento de texto "gawk" para crear un archivo .scr. Cualquier idioma serviría, pero gawk es más fácil. ¡Estaba condenado si iba a colocar 200 pads SMD a mano cuando tengo una CPU que lo hará por mí!