Outils pour utilisateurs

Outils du site


tech:diagramme_gnu_linux

Ceci est une ancienne révision du document !


Diagramme sous GNU/Linux

Voir :

Voir aussi : FIXME

  • 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()
tech/diagramme_gnu_linux.1746016871.txt.gz · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki