Fermeture des documents après chaque export de pièce

Evite un bug qui se produit lorsqu'un document est ouvert une seconde fois par le script (freecad change son nom, et donc le script ne trouve pas la pièce à exporter)
This commit is contained in:
Youen 2023-03-31 14:48:24 +02:00
parent 837f611f32
commit e3640f9c9d

View file

@ -18,8 +18,10 @@ def convert_file(file_name, output_format):
root_objects = []
main_object = None
#print("document: " + doc.Name)
for obj in doc.Objects:
if len(obj.Parents) == 0:
#print(obj.Label)
root_objects.append(obj)
if obj.Label == doc.Name:
main_object = obj
@ -28,7 +30,7 @@ def convert_file(file_name, output_format):
main_object = root_objects[0]
if main_object is None:
raise Exception("Can't find main object in file " + file_name)
raise Exception("Can't find main object in file " + file_name + " (found " + str(len(root_objects)) + " root object(s), none named like the document " + doc.Name + ")")
secondary_objects = []
code_obj = doc.getObjectsByLabel('Code_Tube_Draft')
@ -57,6 +59,10 @@ def convert_file(file_name, output_format):
os.makedirs(output_dir)
Import.export([main_object], output_path)
# close all documents
while len(FreeCAD.listDocuments().values()) > 0:
FreeCAD.closeDocument(list(FreeCAD.listDocuments().values())[0].Name)
folders = [
'chaudronnerie',
@ -66,6 +72,7 @@ folders = [
for folder in folders:
files = os.listdir(project_folder + '/' + folder)
for source_file in files:
if not source_file.endswith('.FCStd'): continue
source_path = folder + '/' + source_file
print(source_path)
convert_file(source_path, 'step')