Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2010, à 11:36

Mani-01

"nettoyer" les tranform dans fichier SVG avec Inkscape

Bonjour,

Je m'adresse aux pros du SVG, j'ai un fichier SVG très simple :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100"
   height="100"
   id="svg2">
  <defs
     id="defs4" />
  <g
     transform="translate(0,-952.36218)"
     id="layer1">
    <path
       d="m 77.625687,32.067242 c -2e-6,36.885306 -8.309722,8.670998 -40.253334,27.113651 C 5.4287431,77.623545 25.708187,98.927129 -6.2354221,80.484475 -38.179033,62.041821 -9.5898666,68.952546 -9.5898666,32.06724 c 0,-36.8853037 -28.5891664,-29.9745817 3.3544445,-48.417232 31.9436131,-18.442652 11.6641658,2.86093 43.6077781,21.3035834 31.94361,18.4426516 40.253332,-9.7716535 40.253331,27.1136506 z"
       transform="matrix(0.90086661,0,0,0.90086661,19.240406,973.47387)"
       id="path2816"
       style="color:#000000;fill:#d7d700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
  </g>
</svg>

Je souhaiterais "nettoyer" ou transformer ce fichier pour faire disparaitre les "transform" afin de garder uniquement le path, aux coordonnées 0,0 avec Inkscape (ou autre méthode).

Si quelqu'un à compris ma question ou s'intéresse au sujet, j'essayerais d'apporter des précisions sur demande.

Merci à ceux qui auront pris la peine de me lire !

Bonne journée !

Hors ligne

#2 Le 15/10/2010, à 16:53

Papy Octet

Re : "nettoyer" les tranform dans fichier SVG avec Inkscape

Bonjour Mani-01,
Dans ton "petit bout de code", tu as 2 instructions SVG "transform".

C'est la première qui te pose problème et c'est elle qu'il faut "faire sauter" pour rétablir le système de coordonnée d'origine dans Inkscape.

Seulement voilà, quand on supprime simplement cette ligne de code, patatras ! Il n'y a plus rien d'affiché dans le dessin et dans Inkscape. Et c'est bien normal puisqu'on n'indique pas comment dessiner.
En se rapportant à la norme W3C pour le code SVG, on s'aperçoit qu'il faut absolument, dans le système de coordonnée système, spécifier les caractéristiques de base pour dessiner : le remplissage, la couleur du trait et l'épaisseur du trait.
La norme W3C pour SVG

Donc, en remplaçant simplement la ligne de code

    transform="translate(0,-952.36218)"

par celle-ci

    fill="none" stroke="black" stroke-width="3">

et le dessin se retrouve dans le coin inférieur gauche, dans la feuille de dessin Inkscape conformément à la norme W3C pour le SVG.

mad Attention à ne pas oublier l'indentation dans le code ! mad

Mais si tu veux que l'objet se place selon le système de coordonnées de Inkscape, alors tu dois supprimer l'autre "transform" :

       transform="matrix(0.90086661,0,0,0.90086661,19.240406,973.47387)"

et le dessin se retrouvera dans le coin supérieur gauche.

Ton code devient :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="1000"
   height="1000"
   id="svg2">
  <defs
     id="defs4" />
  <g  
    fill="none" stroke="black" stroke-width="3">
    id="layer1">
    <path
       d="m 77.625687,32.067242 c -2e-6,36.885306 -8.309722,8.670998 -40.253334,27.113651 C 5.4287431,77.623545 25.708187,98.927129 -6.2354221,80.484475 -38.179033,62.041821 -9.5898666,68.952546 -9.5898666,32.06724 c 0,-36.8853037 -28.5891664,-29.9745817 3.3544445,-48.417232 31.9436131,-18.442652 11.6641658,2.86093 43.6077781,21.3035834 31.94361,18.4426516 40.253332,-9.7716535 40.253331,27.1136506 z"
       id="path2816"
       style="color:#000000;fill:#d7d700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
  </g>
</svg>

Voilà. J'espère avoir répondu à ta question.

A+

PS : la modification du code se fait via un traitement de texte tout simple : Gedit, Vim, par exemple.

Dernière modification par Papy Octet (Le 15/10/2010, à 17:07)


AMD A6-3500 HD6530D 2.1 ghz Triple core FM1 3mb - CM GIGABYTE GA-A75M-UD2H - 8 GiO ram DDR3 - HDD 1TO WD GREEN + WD Gaviar Black 1TO + externe IOMEGA 500GiO - Carte écran nvidia GeForce 210 Silent avec 1GiO cache DDR3 - Ubuntu
Portable HP - Intel Centrino - 1 Go DDR2 - DD 120 Go - Mint 14
Imprim. Samsung ML-1670 et CLP-315, scanner Epson Perfection V30, ... Linuxgraphic.org, LibreOffice.org

Hors ligne

#3 Le 15/10/2010, à 17:15

Mani-01

Re : "nettoyer" les tranform dans fichier SVG avec Inkscape

Bonjour Papy Octet et merci pour ta réponse.

C'est effectivement intéressant et j'en sais un peu plus sur le SVG, mais en fait ma question était un peu différente.

Je voudrais savoir comment générer le fichier "épuré" depuis Inkscape.
En fait, je cherche un moyen de générer le fichier sans aucun tranform, avec un tracé ( le path ) qui débute à 0,0.

Visiblement, en faisant des essais, si je place ma forme à 0,0 et que j'utilise la fonction "simplifier", ça me recalcule le d="..." du path , donc c'est bien ce que je recherche, mais ça m'oblige à simplifier ma forme.

Je continue mes recherches...

Hors ligne

#4 Le 15/10/2010, à 17:24

Papy Octet

Re : "nettoyer" les tranform dans fichier SVG avec Inkscape

Bonsoir,
À ma connaissance, il n'y a pas moyen de le faire de cette façon puisque Inkscape respecte la Norme W3C pour le SVG et que le codage comme il est présenté est parfaitement correct.
Je n'ai pas connaissance d'une possibilité, via Inscape, de modifier le code comme tu le souhaites.

Il faut passer à l'édition du fichier SVG via un traitement de texte.

A+


AMD A6-3500 HD6530D 2.1 ghz Triple core FM1 3mb - CM GIGABYTE GA-A75M-UD2H - 8 GiO ram DDR3 - HDD 1TO WD GREEN + WD Gaviar Black 1TO + externe IOMEGA 500GiO - Carte écran nvidia GeForce 210 Silent avec 1GiO cache DDR3 - Ubuntu
Portable HP - Intel Centrino - 1 Go DDR2 - DD 120 Go - Mint 14
Imprim. Samsung ML-1670 et CLP-315, scanner Epson Perfection V30, ... Linuxgraphic.org, LibreOffice.org

Hors ligne

#5 Le 15/10/2010, à 17:48

Mani-01

Re : "nettoyer" les tranform dans fichier SVG avec Inkscape

J'ai trouvé une solution !

il me suffi d'ajuster la taille du document au tracé ( Fichier > Propriété du document > Ajuster la page à la sélection )
Et j'obtiens ce que je recherche, un SVG sans transform, avec un path recalculé à 0,0.

Merci d'avoir étudié la question et d'avoir pris du temps pour me répondre.

Bonne soirée !

Hors ligne

#6 Le 15/10/2010, à 19:53

Mani-01

Re : "nettoyer" les tranform dans fichier SVG avec Inkscape

Bon après plusieurs essais , je me rends compte que le résultat est aléatoire...
Je n'ai donc pas de solution pour recalculer le path sans changer l'affichage en supprimant tous les "transform".

Je suis pourtant convaincu que c'est possible, ça me parait être une fonctionnalité plutôt basique.

Hors ligne