Tengo un archivo vectorial descargado (formato AI). El archivo contiene imágenes vectoriales simples de varias razas de perros. Cargué el archivo en Inkscape, los desagrupé y quisiera una forma de guardar cada vector de perro como un archivo separado. ¿Hay alguna manera de automatizar esto con Inkscape o alguna otra herramienta OS / Freeware? De lo contrario, tendré que seleccionar cada uno y Guardar como. Cualquier ayuda es muy apreciada!
ACTUALIZACIÓN Gracias a JSBueno por el asesoramiento sobre la edición del archivo SVG real. No me di cuenta de que SVG era solo un archivo XML. Debería poder recorrer fácilmente el archivo y exportar cada perro como un archivo separado. Esto, por cierto, será mucho más rápido que hacerlo a través de la interfaz, que era el objetivo de esta publicación. Gracias a todos por el consejo.
Respuestas:
Hay dos soluciones que he encontrado para exportar múltiples objetos de Inkscape como SVG. Estos métodos tienen la ventaja de ser scripts que pueden ejecutarse automáticamente y no necesitan edición de SVG en editores de texto.
El script svg-objects-export funciona exportando todos los objetos basados en expresiones regulares. En su caso, funcionaría exportando todos los objetos con una ID particular. Para usarlo primero clone o descargue el script desde Github .
En Inkscape, debe cambiar la ID de todos los objetos que desea exportar para que tengan el mismo patrón de nombre de archivo. Para hacerlo, abra el cuadro de diálogo Propiedades del objeto yendo a Objeto> Propiedades del objeto o presionando Ctrl+ Shift+ O. En el campo ID, cámbielos a todos para que tengan el mismo ID de nombre base
Dog_1
, por ejemploDog_2
,Dog_3
etc. (los objetos no pueden tener el mismo ID).Con el archivo guardado y el script descargado, en una terminal ejecute el siguiente comando
python svg-objects-export.py --pattern 'Dog_*' /path/to/your/file.svg
Esto exportará todos los objetos con el ID de nombre base "Dog_".
La extensión inks-exportobjects inkscape simplemente exportará todos los objetos seleccionados. Para usarlo primero clone o descargue la extensión desde Gitlab . Para instalarlo copiar los archivos
export_objects.inx
yexport_objects.py
a.config/inkscape/extensions/
. En Inkscape, tendrá una opción llamada "Objetos a archivos ..." en Extensiones> Exportaciones. Seleccione los objetos que desea instalar y seleccione esta opción.En este cuadro de diálogo, simplemente cambie el Directorio de exportación al lugar donde desea guardar sus archivos y cambie el Nombre base al nuevo nombre de los archivos y luego presione Aplicar.
Los archivos se exportarán a su directorio especificado.
Cada una de las soluciones tiene muchas otras opciones, como la exportación de gifs animados, con los que definitivamente debes experimentar.
fuente
Dependiendo de la condición previa, de que todos sus objetos están agrupados y no combinados en grupos más grandes, a continuación se explica cómo hacerlo. (Usé gatos en el ejemplo, porque los perros no estaban disponibles).
En la parte inferior derecha, verá un gato resaltado, id. De objeto 5358, que es una ruta única, por lo que agregué un piso verde más tarde que lo cambió al objeto 5364 que ocurrirá más tarde, así que no se confunda. :)
Obtiene el editor xml presionando el botón 4 desde la derecha (flecha 1).
Cambié g5358 a g-cat-5358 (campo 4) para facilitar que una herramienta de texto elija estos objetos que funcionan para la mayoría de los elementos que no colisionan con xml-svg-names (color, meta, id, ... )
En la ventana izquierda, verá que ya hay una entidad renombrada, g-cat-5312, cerca de la parte superior en el mismo nivel de sangría.
Inkscape organiza identificadores únicos para grupos, pero no es necesario que tengan la forma gNUMBER, puede mezclar otros caracteres. Simplemente no elija un identificador ya existente.
Después de cambiar el identificador, presione 'setzen (set)' (5) para confirmar su cambio. Ves una interfaz alemana aquí, YMMV.
Guarde el svg (como demo-cats.svg). Ahora pasamos a las secuencias de comandos.
¿Qué hace? Hace greps (busca con grep) para el patrón "g-cat-" que es el comienzo de nuestra interesante sección.
id=${cat//[^0-9]/}
extrae el id en bash de la expresión. Echo lo imprime en la pantalla, lo que debería ayudar a encontrar el error si algo sale mal. head -n 53 demo-cats.svg toma las primeras 53 líneas del svg, que contiene todo el svg-boilerplate. Dependiendo de su configuración con diferentes formatos de svg (inkscape, comprimido, svg normal, inkscape-comprimido) esto puede variar. Connl demo-cats.svg | less
puedes n umerate los l ines, para encontrar el punto de corte adecuado en su caso.^ Hasta esta parte, se deben incluir las líneas.
El siguiente comando se realiza con el comando s tream ed it :
sed -n "/$cat/,/^ <\/g>/p" demo-cats.svg;
dice (-n) no print (but) search para el grupo cat, hasta la etiqueta de cierre g en el nivel de sangría 2, que es 4 espacios antes de</g>
si no lo hizo cambiar las preferencias de Inkscape, que quizás recuerdes si lo hicieras. A continuación, añadir la etiqueta de cierre para SVG:echo "</svg>"
. Escriba la salida en el archivo 'cat- $ id.svg' (esto sobrescribe los archivos silenciosamente existentes).Así que termino con dos archivos: cat-5312.svg y cat-5364.svg.
Una solución más elegante debería ser posible con xmlstarlet o herramientas similares, que están hechas para buscar y editar archivos xml. Desafortunadamente, no estoy acostumbrado y no pude hacerlo funcionar después de leer 10 minutos de documentación. No necesitaría cambiar el nombre de los grupos al principio.
fuente