# Exporte en SVG de plusieurs Sketchs

# On charge le module d'importation/exportation SVG :
import importSVG

# Racine des noms de fichiers SVG, les nom de fichiers de sortie seront construits
# sous la forme : outputRacine + '--<Sketch_Label>.svg.
# Ou <Sketch_Label> est le label du Sketch exporté.
outputRacine = App.activeDocument().getFileName().rpartition('.')[0]

# Initialise la liste des objets à exporter
__objets__ = []

'''
On peux également n'exporter qu'une liste de label définis comme ceci :
Remplacer la boucle "for __O__ in App.ActiveDocument.findObjects('Sketcher::SketchObject'):"
par le bloc ci dessous:
'''
'''
# Retrouve les objets Sketch FreeCAD à partir d'une liste de labels
for __label__ in ["fond", "hauteur", "largeur", "carton-blanc", "plot"]:
	for __obj__ in App.ActiveDocument.getObjectsByLabel(__label__):
		__objets__.append(__obj__)

# Boucle sur la liste des objets trouvés :
for __obj__ in __objets__:
'''

# Boucle sur tous les objets Sketch du fichier :
for __O__ in App.ActiveDocument.findObjects('Sketcher::SketchObject'):

	__obj__ = []
	__obj__.append(__O__)

	print('Export SVG de : ' + __obj__[0].Label)

	# Mémorise le placement du Sketch
	oldPlace  = __obj__[0].Placement

	# Force le Sketch dans le plan XY, l'export SVG ne fonctionne que dans ce plan !
	__obj__[0].Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(1,0,0),0), App.Vector(0,0,0))

	# Construction du nom de fichier
	fichierSVG = u"" + outputRacine + '--' + __obj__[0].Label + '.svg'

	# Exporte en SVG
	importSVG.export(__obj__, fichierSVG)

	# Restore la position du Sketch
	__obj__[0].Placement = oldPlace

# Force un recalcul de tous les objets du fichier
# après réinitialisation des positions des Sketchs
App.activeDocument().recompute()