Posté le 16 novembre 2024 - 21:17 |
Bonjour,
Je souhaite ajouter des formes en svg dans l'éditeur de diagramme, pouvoir modifier le contour et le fond puis enregistrer mes formes dans un svg.
Pour faire mes "expériences" j'utilise l'exemple BibliothèqueDynamiquePourDiagramme fourni avec la LST 127.
1ère expérience : On ajoute une forme fournie par défaut dans la bibliothèque informatique et on change son contour et son fond
Ensuite on enregistre le diagramme en svg
Adresse est une chaîne = "C:\Users\Gerry\Desktop\" soit bufSVG = DiagrammeVersSVG(EDIAG_Exemple) SI ErreurDétectée ALORS Erreur() RETOUR FIN fSauveBuffer(Adresse+"exportDuDiagramme.svg", bufSVG)
On ouvre le svg exporté et l'on remarque : => un rectangle blanc ajouté de la taille de la viewbox, sans doute le fond => la forme associée en plusieurs chemins avec la propriété style="fill:#F8CECC" et style="stroke-width:1;stroke:#B85450 modifiées Donc tout va bien
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg viewBox="0 0 724 740" xmlns="http://www.w3.org/2000/svg"> <rect x="0" y="0" width="724" height="740" style="fill:#FFFFFF"/> <path d="M356.75,402.29166666666668561447295360267L367.25,402.29166666666668561447295360267L367.25,418.95833333333337122894590720534L356.75,418.95833333333337122894590720534L356.75,402.29166666666668561447295360267L356.75,402.29166666666668561447295360267Z" style="fill:#F8CECC"/> <path d="M356.75,402.29166666666668561447295360267L367.25,402.29166666666668561447295360267L367.25,418.95833333333337122894590720534L356.75,418.95833333333337122894590720534L356.75,402.29166666666668561447295360267L356.75,402.29166666666668561447295360267Z" style="stroke-width:1;stroke:#B85450;stroke-miterlimit:10" fill="none"/> <path d="M329.4499999999999886313162278384,418.95833333333337122894590720534L394.5500000000000113686837721616,418.95833333333337122894590720534" style="fill:#F8CECC"/> <path d="M329.4499999999999886313162278384,418.95833333333337122894590720534L394.5500000000000113686837721616,418.95833333333337122894590720534" style="stroke-width:1;stroke:#B85450;stroke-miterlimit:10" fill="none"/> <path d="M402.95000000000004547473508864641,361.66666666666668561447295360267C402.95000000000004547473508864641,384.10323462854267972943489439785,384.61606050557099933939753100276,402.29166666666668561447295360267,362,402.29166666666668561447295360267C339.38393949442900066060246899724,402.29166666666668561447295360267,321.0500000000000113686837721616,384.10323462854267972943489439785,321.04999999999995452526491135359,361.66666666666668561447295360267C321.04999999999995452526491135359,339.23009870479069149951101280749,339.38393949442900066060246899724,321.04166666666668561447295360267,362,321.04166666666668561447295360267C384.61606050557099933939753100276,321.04166666666668561447295360267,402.9499999999999886313162278384,339.23009870479069149951101280749,402.95000000000004547473508864641,361.66666666666668561447295360267Z" style="fill:#F8CECC"/> </svg>
2ème expérience :
On crée une bibliothèque personnalisée et l'on ajoute des SVG en tant que diagImage. Remarque n°1 : on ne peut pas modifier le contour et le fond de l'image
Remarque n°2 : On exporte le diagramme et le svg ne contiens rien...
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg"> <rect x="0" y="0" width="900" height="900" style="fill:#FFFFFF"/> </svg>
A partir de la, comme on dit dans le sud, ça se corse
1 ère idée : Je remarque que diagRectangle, diagOvale, diagChemin reprenne la structure des différentes formes d'un svg. Donc ouvrir en XML le svg, repérer le type de forme, convertir en diagForm, et la fin mettre tout le monde dans un diagGroup. Sauf que ce n'est pas possible car diagChemin n'a pas de paramètre "d" pour fournir les données du chemin et s'avère donc inutile.
2 ème idée : Retrouver ou sont stockées les bibliothèques des formes de base pour les remplacer par ses formes et être sûr du fonctionnement. Sauf qu'elles sont bien cachée et si PC SOFT propose d'ajouter une diagBibliothèque c'est pour ne pas toucher aux autres...
3ème idée : Manipuler le SVG par XML pour changer les contours et fonds et mettre a jour les données du diagImage après chaque modification d'image. Puis pour l'export en SVG, récupérer position, dimensions et rotation pour les répercuter dans une matrice du svg et assembler les SVG par XML puis sauvegarder le XML.
Je ne vois pas de solutions plus simple que la 3ème idée a moins que je sois passé a côté de quelque chose. Le coté easy to use du champs se retrouve fortement réduit dans ce cas d'usage.
Si quelqu'un a une meilleure solution a proposer je suis preneur !
Cordialement, Gerry |
| |
| |
|