Ajout d'un script permettant d'exporter toutes les pièces au format STEP
This commit is contained in:
parent
c8ea28993a
commit
e1ff6d83e7
1 changed files with 72 additions and 0 deletions
72
tools/export-all-parts.py
Normal file
72
tools/export-all-parts.py
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
freecad_install_path = '/home/youen/dev/FreeCAD-asm3-Daily-Conda-Py3.10-20221128-glibc2.12-x86_64'
|
||||||
|
|
||||||
|
import sys
|
||||||
|
sys.path.insert(0,freecad_install_path + '/usr/lib')
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import FreeCAD as App
|
||||||
|
import Import
|
||||||
|
|
||||||
|
script_folder = os.path.dirname(__file__)
|
||||||
|
project_folder = os.path.realpath(script_folder + '/..')
|
||||||
|
output_folder = project_folder + '-STEP'
|
||||||
|
|
||||||
|
def convert_file(file_name, output_format):
|
||||||
|
doc = App.open(project_folder + '/' + file_name)
|
||||||
|
|
||||||
|
root_objects = []
|
||||||
|
main_object = None
|
||||||
|
|
||||||
|
for obj in doc.Objects:
|
||||||
|
if len(obj.Parents) == 0:
|
||||||
|
root_objects.append(obj)
|
||||||
|
if obj.Label == doc.Name:
|
||||||
|
main_object = obj
|
||||||
|
|
||||||
|
if main_object is None and len(root_objects) == 1:
|
||||||
|
main_object = root_objects[0]
|
||||||
|
|
||||||
|
if main_object is None:
|
||||||
|
raise Exception("Can't find main object in file " + file_name)
|
||||||
|
|
||||||
|
secondary_objects = []
|
||||||
|
code_obj = doc.getObjectsByLabel('Code_Tube_Draft')
|
||||||
|
if len(code_obj) == 1:
|
||||||
|
code_obj = code_obj[0]
|
||||||
|
#code_obj.Label = 'Code_Tube'
|
||||||
|
#secondary_objects.append(code_obj)
|
||||||
|
|
||||||
|
# engrave code on tube
|
||||||
|
code_pocket = main_object.newObjectAt('PartDesign::Pocket','Pocket', [code_obj])
|
||||||
|
code_pocket.Profile = code_obj
|
||||||
|
code_pocket.Length = 0.2
|
||||||
|
code_pocket.recompute()
|
||||||
|
main_object.recompute()
|
||||||
|
|
||||||
|
if len(secondary_objects) > 0:
|
||||||
|
group = doc.addObject('App::Part', 'Groupe')
|
||||||
|
group.addObject(main_object)
|
||||||
|
for obj in secondary_objects:
|
||||||
|
group.addObject(obj)
|
||||||
|
main_object = group
|
||||||
|
|
||||||
|
output_path = output_folder + '/' + os.path.dirname(file_name) + '/' + Path(file_name).stem + '.' + output_format
|
||||||
|
output_dir = os.path.dirname(output_path)
|
||||||
|
if not os.path.exists(output_dir):
|
||||||
|
os.makedirs(output_dir)
|
||||||
|
|
||||||
|
Import.export([main_object], output_path)
|
||||||
|
|
||||||
|
folders = [
|
||||||
|
'chaudronnerie',
|
||||||
|
'tubes'
|
||||||
|
]
|
||||||
|
|
||||||
|
for folder in folders:
|
||||||
|
files = os.listdir(project_folder + '/' + folder)
|
||||||
|
for source_file in files:
|
||||||
|
source_path = folder + '/' + source_file
|
||||||
|
print(source_path)
|
||||||
|
convert_file(source_path, 'step')
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue