J'ai un fichier vectoriel téléchargé (format AI). Le fichier contient des images vectorielles simples de différentes races de chiens. J'ai chargé le fichier dans Inkscape, les ai dissociés et je voudrais un moyen de sauvegarder chaque vecteur de chien dans un fichier séparé. Existe-t-il un moyen d'automatiser cela avec Inkscape ou un autre outil OS / Freeware? Sinon, je devrai sélectionner chacun et enregistrer sous. Toute aide est très appréciée!
MISE À JOUR Merci à JSBueno pour les conseils sur l'édition du fichier SVG réel. Je ne savais pas que SVG n'était qu'un fichier XML. Je devrais être capable de parcourir facilement le fichier et d'exporter chaque chien dans un fichier distinct. Soit dit en passant, ce sera beaucoup plus rapide que de le faire via l'interface qui était l'objectif de ce post. Merci à tous pour les conseils.
Réponses:
Il y a deux solutions que j'ai trouvées pour exporter plusieurs objets d'Inkscape en tant que SVG. Ces méthodes ont l'avantage d'être des scripts qui peuvent être exécutés automatiquement et n'ont pas besoin d'éditer des SVG dans des éditeurs de texte.
Le script svg-objects-export fonctionne en exportant tous les objets basés sur des expressions régulières. Dans votre cas, cela fonctionnerait en exportant tous les objets avec un ID particulier. Pour l'utiliser, clonez d'abord ou téléchargez le script depuis Github .
Dans Inkscape, vous devez modifier l'ID de tous les objets que vous souhaitez exporter pour qu'ils aient le même modèle de nom de fichier. Pour ce faire, ouvrez la boîte de dialogue Propriétés de l'objet en allant dans Objet> Propriétés de l'objet ou en appuyant sur Ctrl+ Shift+ O. Dans le changement de champ ID tous d'avoir le même exemple d'identification basename
Dog_1
,Dog_2
,Dog_3
etc (objets ne peuvent pas avoir le même ID).Une fois le fichier enregistré et le script téléchargé, dans un terminal, exécutez la commande suivante
python svg-objects-export.py --pattern 'Dog_*' /path/to/your/file.svg
Cela exportera tous les objets avec l'ID de nom de base "Dog_".
L'extension inkscape inx-exportobjects exportera simplement tous les objets sélectionnés. Pour l'utiliser, clonez d' abord ou téléchargez l'extension depuis Gitlab . Pour l'installer copiez les fichiers
export_objects.inx
etexport_objects.py
vers.config/inkscape/extensions/
. Dans Inkscape, vous aurez une option appelée "Objets aux fichiers ..." dans Extensions> Exportations. Sélectionnez les objets que vous souhaitez installer et sélectionnez cette option.Dans cette boîte de dialogue, changez simplement le répertoire d'exportation à l'endroit où vous souhaitez enregistrer vos fichiers et remplacez le nom de base par le nouveau nom des fichiers, puis appuyez sur Appliquer.
Les fichiers seront exportés vers votre répertoire spécifié.
Chacune des solutions a de nombreuses autres options, telles que l'exportation gif animée, que vous devriez certainement expérimenter.
la source
En fonction de la condition préalable, que tous vos objets soient regroupés et non pas eux-mêmes regroupés en plus grands groupes, voici comment procéder. (J'ai utilisé des chats dans l'exemple, car les chiens n'étaient pas disponibles).
En bas à droite, vous voyez un chat en surbrillance, l'objet id 5358, qui est un seul chemin, j'ai donc ajouté un sol vert plus tard qui l'a changé en l'objet 5364 qui se produira plus tard, alors ne vous laissez pas confondre. :)
Vous obtenez l'éditeur xml en appuyant sur le bouton 4 depuis la droite (flèche 1).
J'ai changé g5358 en g-cat-5358 (champ 4) pour qu'il soit facile pour un outil de texte de choisir ces objets qui fonctionnent pour la plupart des éléments qui n'entrent pas en collision avec les noms xml-svg (couleur, méta, id, ... ).
Dans la fenêtre de gauche, vous voyez qu'il existe déjà une entité renommée, g-cat-5312 près du sommet au même niveau d'indentation.
Inkscape organise des identifiants uniques pour les groupes, mais ils n'ont pas besoin d'être de la forme gNUMBER, vous pouvez mélanger d'autres caractères. Ne choisissez tout simplement pas un identifiant déjà existant.
Après avoir changé l'identifiant, appuyez sur 'setzen (set)' (5) pour confirmer votre changement. Vous voyez une interface allemande ici, YMMV.
Enregistrez le svg (comme demo-cats.svg). Nous passons maintenant aux scripts.
Qu'est ce que ça fait? Il greps (recherche avec grep) pour le motif "g-cat-" qui est le début de notre section intéressante.
id=${cat//[^0-9]/}
extrait l'id dans bash de l'expression. Echo l'imprime à l'écran, ce qui devrait aider à trouver le bogue en cas de problème. head -n 53 demo-cats.svg prend les 53 premières lignes du svg, qui contient tous les svg-passe-partout. Selon vos paramètres avec différents formats svg (inkscape, compressé, svg normal, inkscape-compressé), cela peut varier. Avec,nl demo-cats.svg | less
vous pouvez n umer les l ines, pour trouver le bon point de coupe dans votre cas.^ Jusqu'à cette partie, les lignes doivent être incluses.
La commande suivante se fait avec le s ed tr ed ed ou sed:
sed -n "/$cat/,/^ <\/g>/p" demo-cats.svg;
dit (-n) pas d'impression (mais) recherche pour le groupe cat, jusqu'à la balise de fermeture g au niveau d'indentation 2 qui est 4 espaces avant le</g>
si vous ne l'avez pas modifier les préférences d'Inkscape, dont vous vous souviendrez peut-être si vous l'avez fait. Ensuite , ajoutez la balise de fermeture pour svg:echo "</svg>"
. Écrivez la sortie dans le fichier 'cat- $ id.svg' (cela écrase les fichiers existants en silence).Je me retrouve donc avec deux fichiers: cat-5312.svg et cat-5364.svg.
Une solution plus élégante devrait être possible avec xmlstarlet ou des outils similaires, qui sont faits pour rechercher et éditer des fichiers xml. Malheureusement, je n'y suis pas habitué et je ne l'ai pas fait fonctionner après avoir lu 10 minutes de documentation. Vous n'auriez pas besoin de renommer les groupes au début.
la source