Diagramme sous GNU/Linux

Voir :

Diagrams.net (Aka Draw.IO)

draw io desktop

http://blog.nicolargo.com/2008/04/dia-alternative-a-visio-sous-mac-os-x.html

http://www.paperblog.fr/654264/dia-alternative-a-visio-sous-mac-os-x

utiliser-git-pour-vos-logos-en-svg

PenPlot (SVG) - UX - alternative à Figma et Sketch.

https://cryptpad.fr/diagram/

Logos libres en SVG :

https://www.svgrepo.com/

Voir aussi :

Diagramme en Code avec PlantUML

http://www.softia-systems.net/contribs/dia_split_svg.py

# # Script realise par THOMAS DUBOIS pour SOFTIA SYSTEMS # BSD LICENCE # Merci d'envoyer un mail a tdubois@softia-systems.net # si vous utilisez, transmettez, ou reactualiser le script # (juste pour un suivi du travail :)) # Finalise le 28/08/2007 # # Ce script ne prends pas d'argument. # Il creera dans le repertoire courant un repertoire svg, et shape # Le repertoire svg contiendra les .svg de chaque objet # Le repertoire shape contiendra les .shape correspondant au SVG ainsi # qu'un PNG pour la preview # Un fichier Yourshape.sheet sera creer. # Le fichier .sheet doit etre modifier afin de changer # le nom de la feuille apparaissant dans dia # Le fichier shape est a copier dans votre ~/.dia/shape/Votreshape # Le fichier Yourshape.sheet est a copier dans le repertoire ~/dia/sheets/ # sous le nom Votreshape.sheet # Debut du script from xml.dom import minidom # Fichier SVG d'entree a parser xmldoc = minidom.parse('/path/to/file.svg') # probleme de locale, pas trouve d'autre solution .... # si quelqu'un a qqchose a proposer import locale, sys reload(sys) loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1] # une version Non-Unicode retournera AttributeError... if encoding: sys.setdefaultencoding(encoding) import os import re import popen2 # recuperation des groups d'element, ici les objets reflist = xmldoc.getElementsByTagName('g') shapehead = """<?xml version="1.0"?> <shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg"> """ shapetail = """ </svg:svg> </shape>""" svghead = """<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg"> """ svgtail = "\n</svg>" # Creation du fichier sheet sheetfile = open("YourSheet.sheet", "w") sheetfile.write("""<?xml version="1.0" encoding="iso-8859-1"?> <sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns"> <name>Sample</name> <description>A collection of sample shapes.</description> <contents> """) # Creation de repertoires pour stocker les fichiers os.mkdir("svg") os.mkdir("shape") i = 0 for block in reflist: #ouverture du fichier svg de l'objet courant et ecriture des entetes svgfile = open("svg/" + str(i) + ".svg", 'w') svgfile.write(svghead) svgfile.write("<desc>%i</desc>\n"%(i)) shapefile = open("shape/" + str(i) + ".shape", 'w') shapefile.write(shapehead) shapefile.write("<name>%s</name>\n"%(i)) shapefile.write("<icon>%s.png</icon>\n<svg:svg>\n"%(i)) # Regexp pour enlever nombre de classes qui sont incompatible avec dia p = re.compile('sodipodi:[a-z0-9\-]+=".*?\"') chaine = p.sub(`, block.toxml()) svgfile.write(chaine) chaine = chaine.replace("<a:","") chaine = chaine.replace("<","<svg:") chaine = chaine.replace("<svg:/","</svg:") p = re.compile('i:[a-z\-]+=".*?\"') chaine = p.sub(`, chaine) p = re.compile('inkscape:[a-z\-]+=".*?\"') chaine = p.sub(`, chaine) shapefile.write(chaine) shapefile.write(shapetail) shapefile.close() sheetfile.write("<object name=\"%s\">\n"%(i)) sheetfile.write("<description>%s</description>\n"%(i)) sheetfile.write("</object>\n") # conversion des .svg de chaque objet svg en png popen2.popen3("/usr/bin/inkscape svg/%s.svg -e shape/%s.png -d 90 -z -D"%(i,i)) shapefile.close() svgfile.write(svgtail) svgfile.close() i += 1 sheetfile.write("""</contents> </sheet>""") sheetfile.close()