Cela fait un moment que je me débat avec cela et je n'arrive pas à trouver de réponse (qui fonctionne) nulle part. J'ai un fichier SVG qui ressemble à ceci:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
...
width="72.9375"
height="58.21875"
...>
...
<g
...
transform="translate(10.75,-308.96875)"
style="...">
<path
inkscape:connector-curvature="0"
d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
... />
</g>
</svg>
Je souhaite supprimer la transform="..."
ligne, mais mon image reste là où je l'ai placée (dans InkScape). Si je supprime manuellement la transformation, l'image se zippe sur une autre partie de l'écran (comme prévu), mais je dois me débarrasser complètement de la transformation et, en même temps, faire en sorte que l'image reste exactement là où je le veux. Existe-t-il un moyen de supprimer / aplatir les transformations en coordonnées de chemin elles-mêmes? (Les seules transformations que j'ai à gérer sont la translation et la mise à l'échelle, pas de matrices.)
Réponses:
Comment supprimer les transformations dans Inkscape
Comment déplacer tous les objets ensemble sans créer d'autres attributs de transformation
Allez dans Objet -> Transformer
Dans le panneau Transformer
Décochez Déplacement relatif et cochez Appliquer à chaque objet séparément
la source
J'ai découvert quel était le problème. J'espérais ne pas avoir à recourir à la réponse de Robert, même si je suis heureux d'avoir confirmation que cela fonctionnerait! En fin de compte, la réponse de Duopixel était en fait la plus proche, même s'il s'avère que quelque chose d'autre se passait également.
Lorsque vous travaillez avec différents chemins dans des documents Inkscape, je pense que son comportement par défaut est de les regrouper sous une
<svg:g.../>
étiquette. Lors de la modification des chemins dans un groupe, Inkscape ajoutera automatiquement une transformation au groupe pour représenter ces changements. Cependant, si vous ouvrez l'éditeur XML et faites glisser votre chemin en dehors de la<svg:g.../>
balise et en faites sa propre<svg:path.../>
balise, Inkscape est libre de modifier les points individuels à volonté. En fin de compte, cela s'est avéré être un problème de regroupement même si je ne travaillais qu'avec un seul chemin! J'espère que cela aidera les autres dans des situations similaires.la source
la source
Il existe une extension d'Inkscape appelée Apply Transforms qui recalcule les chemins avec leurs transformations. C'est exactement ce que je cherchais.
Après l'avoir installé, vous le trouverez sous Extensions> Modifier le chemin> Appliquer la transformation .
crédits: forum Inkscape> Supprimez toutes les transformations tout en restant en place
la source
Pour les groupes, le regroupement peut faire le travail rapidement. Sélectionnez le groupe et appuyez sur Ctrl + Maj + G (dégroupe) puis sur Ctrl + G (groupe).
Pour certains objets qui ont un problème similaire, les spirales et les étoiles par exemple, le moyen le plus rapide est d'appuyer sur Ctrl + Alt + C (du trait au chemin) - cela convertit cependant l'objet en un chemin pur et supprime tous les attributs supplémentaires, tels que sodipodi: cx, sodipodi: révolutions et ainsi de suite.
la source
Ouvrez votre svg sur Inkscape :
De cette façon, vous vous débarrasserez des transformations appliquées au groupe et elles seront transférées vers les chemins contenus dans ce groupe.
la source
D'après mon expérience, si vous utilisez Inkscape, il suffit de déplacer légèrement l'élément de chemin (par exemple avec les touches de curseur), et Inkscape supprimera l'attribut de transformation et ajustera les données de chemin en conséquence. (Gênant si vous voulez réellement conserver l'attribut de transformation.)
Ainsi, vous pouvez simplement sélectionner le chemin (assurez-vous que c'est le chemin et non le groupe environnant), appuyez sur les touches de curseur droite et gauche, et vous avez terminé.
la source
<g>
et que je souhaite conserver la transformation sur le<g>
.Alors que je préfère Inkscape, Affinity Designer (~ 40 $ / Mac) m'a épargné des heures d'efforts lorsque je travaille avec Android Vector Drawables.
Ouvrez un fichier SVG, fichier -> Exporter -> SVG -> Plus -> Aplatir les transformations fonctionnaient très bien.
la source
SVGO est un excellent outil de ligne de commande open-source pour cela et un tas d'autres optimisations. Il existe une excellente interface utilisateur Web en ligne appelée SVGOMG.
Les options pertinentes dans ce cas sont
moveGroupAttrsToElems
(SVGOMG:Move group attrs to elements
) pour déplacer lestransform
attributs des groupes d'éléments de chemin, plusconvertPathData
(SVGOMG:Round/rewrite paths
) pour aplatirtransform
end
.la source
Il faut mentionner qu'il existe le mode "Optimisé" dans les préférences:
Préférences d'Inkscape> Transformations> Transformation de magasin> Optimisé
Ce qui est censé minimiser
transform
autant que possible l'occurrence des attributs (mais ne le fait pas)Cela semble être activé par défaut de toute façon.
Selon une discussion , un cas où ce mode optimisé manque de zèle est lorsque la page est redimensionnée . Cela entraîne l'application d'une
translate
transformation à l'<g>
élément de couche . Il semble que l'évacuation des enfants vers une autre couche soit la meilleure solution pour le moment.la source
translate
transformations gênantes sur chaque calque, essayez d'ouvrir le.svg
fichier dans un éditeur de texte et de manipuler les attributs de hauteur et de largeur qui apparaissent en haut.Inkscape a la possibilité d'effacer les données de transformation tout en laissant la valeur de l'objet non modifiée.
Dans Inkscape, sélectionnez l'objet et le menu «Chemin», «Simplifier». Maintenant, vous allez supprimer les transformations.
la source
Dans ce cas, ajoutez simplement la translation aux valeurs m pour chaque enfant, donc -10,254587 + 10,75 = -0,504587 et -308,96875 + 345,43597 = 36,46722.
Puisque tous les termes de l'exemple sont relatifs (c'est-à-dire en minuscules), c'est tout. Si certains d'entre eux étaient absolus (majuscules), par exemple M ou C, ils devraient également être ajustés.
Pour l'échelle, vous multipliez essentiellement toutes les valeurs enfants par l'échelle.
la source
la source
<g>
avec l'transform
attribut reste tel qu'il était. De plus, mon objet (tout comme celui montré dans la question ici) est déjà un chemin.Pour supprimer l'attribut de transformation d'un
g
élément (groupe) dans Inkscape, vous pouvez déplacer le groupe vers son emplacement final, le dissocier puis regrouper tous les éléments. Maintenant, un nouveau groupe a été créé et si vous ne le déplacez pas à nouveau, aucun attribut de transformation ne lui sera attaché.la source
Si quelqu'un atterrit ici à la recherche d'une solution pour le faire dans Sketch 3, sélectionnez le calque, puis cliquez sur Calque-> Chemins-> Aplatir.
la source
Je l'ai trouvé:
*: Ou au moins placez les objets là où vous en avez besoin, par rapport au coin supérieur gauche de la page. Il est malheureux que les coordonnées SVG font référence au coin supérieur gauche, tandis qu'Inkscape redimensionne la page par rapport au coin inférieur gauche!
la source
J'ai pu me débarrasser d'une
matrix(...)
transformation (due à la mise en miroir) en combinant le chemin avec un rectangle puis en supprimant les nœuds du rectangle. Latranslate(...)
partie est restée cependant.la source
Dans mon cas, enregistrer en SVG optimisé a résolu le problème. Donc, dans Inkscape, utilisez:
Fichier -> Enregistrer sous ... -> SVG optimisé.
la source
transform
attribut n'était pas pris en charge par Android Studio.Cela fonctionne si vous utilisez Inkscape:
Dans tous les cas que j'ai essayé, cela a supprimé tous les attributs de transformation. Je ne sais pas si cela fonctionne pour des SVG plus complexes.
la source
J'ai essayé la solution publiée ici, à savoir supprimer les balises de groupe dans le fichier SVG et le rouvrir dans Inkscape (0.48.3.1 dans mon cas). Hélas, après avoir traduit à nouveau les chemins en utilisant le mode de sélection et de transformation (F1) et l'avoir sauvegardé, les balises de groupe sont réapparues! Inkscape enregistre toutes les transformations appliquées au chemin dans un élément de groupe environnant. À moins que vous n'utilisiez l'outil de sélection de nœud de chemin (F2), appuyez sur ctrl + a et déplacez les nœuds du chemin à leur bon endroit. Après avoir fait cela à la place et enregistré par la suite, Inkscape n'a pas ajouté les balises de groupe, car cette traduction s'appliquait directement au modèle de chemin. J'espère que cela t'aides.
la source
Dans mon cas, les groupes sont en fait causés par des couches. La suppression de tous les calques du document a supprimé le groupe et la transformation (éventuellement combinés avec le dégroupage d'objets et leur regroupement, etc. comme dans Suppression des transformations dans les fichiers SVG (réponse-35490189 de @Charlie ci-dessus))
la source
Mon problème spécifique concernait les symboles définis en dehors de la page, nécessitant ainsi une transformation à afficher sur la page.
Pour déplacer les symboles sur la page sans nécessiter de transformation, j'ai dû suivre ces étapes dans Inkscape:
la source
Cela semble aléatoire, mais rien d'autre que j'ai essayé n'a fonctionné, alors vous allez au hasard pour une autre personne. Certains de mes chemins avaient une sorte de marge autour d'eux qui ne pouvait être vue qu'en les sélectionnant ( ). Je pense que cela a été créé lorsque j'ai collé un calque à partir d'un autre fichier inkscape et l'ai fait pivoter de 90 degrés. Cela a fait un remplissage de motif sur les formes ont une transformation différente (lignes espacées plus loin). Cela a également rendu les objets d'alignement ne fonctionnant pas comme prévu. L'utilisation de Apply Transform mentionnée par @Piotr_cz a résolu le problème de transformation, mais l'étrange marge est restée. Je me suis accidentellement débarrassé de celui-ci en modifiant le Flou sur le contour sur n'importe quelle valeur et en le remettant à zéro.
la source
D'une manière ou d'une autre, je n'ai eu de chance avec aucune des approches. S'il y a une
<defs>
section dans votre svg et des utilisations comme celle-ci:vous devrez peut-être supprimer toutes les utilisations et tout retirer de la section defs. Ensuite, vous pouvez utiliser inkscape pour tout placer correctement, puis appliquer des transformations à l'aide du plugin mentionné. J'espère que ça aide quelqu'un.
la source
J'ai eu ce problème pendant des années. La solution est clairement de pouvoir jouer dynamiquement avec les transformations dans le navigateur, si cela ne va pas être "corrigé" dans inkscape.
Un utilisateur Mc sur les forums d'Inkscape m'a donné cette solution .
La solution génère la transformation actuelle entre un élément SVG et son élément racine SVG, puis renvoie un ensemble complet d'informations BBox en fonction du total des transformations.
Il serait également possible de changer facilement à quel élément les calculs sont relatifs, si vous souhaitez effectuer un travail de navigateur entre deux parties du même fichier SVG.
Enfin, je peux avoir une fenêtre SVG panoramique.
la source
Inkscape 1.0 sur Kubuntu 20.04
Bien que ce fil soit assez ancien, j'aimerais publier mon expérience / solution. Je suis tombé sur ce problème en essayant de créer un modèle pour l'atelier TechDrawing de FreeCAD. Ces modèles ne doivent contenir aucune transformation.
Dans mon cas, j'ai dû ajouter un logo d'entreprise à partir d'un fichier .svg externe (entièrement réalisé avec Inkscape). Ce logo contient des éléments graphiques et textuels. Lors de la copie de ce logo dans le modèle, des transformations ont été créées, ce qui a empêché le modèle de fonctionner correctement dans FreeCAD.
Premièrement, cette solution proposée sur www.freecadweb.org / ... ne fonctionne pas pour moi. C'est pourquoi j'ai cherché sur le Web et trouvé cette discussion.
Deuxièmement, aucune des solutions suggérées ci-dessus n'a fonctionné pour moi, mais elles m'ont mis sur la bonne voie. La réponse de Charlie était proche, mais Objet> Transformer> Décocher le mouvement relatif> Appliquer ne montrait aucune différence.
Ce qui a fonctionné pour moi était:
Fonctionne très bien lorsque j'utilise ce modèle dans FreeCAD.
Un détail étrange: bien que ma solution suggère que les éléments de texte étaient le problème dans mon cas, cela ne peut pas être aussi simple. En fait, le document de base (celui dans lequel j'ai copié le logo) contient beaucoup d'éléments de texte, et je n'en ai converti aucun. Cela pourrait donc être la combinaison de "source externe" et d' éléments de texte. Je poste simplement ce détail comme un indice aux autres, qui pourraient avoir des problèmes connexes.
la source