@ -1,15 +1,13 @@
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					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  os  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  FreeCAD  as  App  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  Import  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  ImportGui  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					script_folder  =  os . path . dirname ( __file__ )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					project_folder  =  os . path . realpath ( script_folder  +  ' /.. ' )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					#script_folder = os.path.dirname(__file__)  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					#project_folder = os.path.realpath(script_folder + '/..')  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					project_folder  =  os . getcwd ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					output_folder  =  project_folder  +  ' -STEP '  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					def  convert_file ( file_name ,  output_format ) :  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -64,6 +62,49 @@ def convert_file(file_name, output_format):
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						while  len ( FreeCAD . listDocuments ( ) . values ( ) )  >  0 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							FreeCAD . closeDocument ( list ( FreeCAD . listDocuments ( ) . values ( ) ) [ 0 ] . Name )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					def  convert_assembly ( file_name ,  output_format ) :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						print ( file_name )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						doc  =  App . open ( project_folder  +  ' / '  +  file_name )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						root_objects  =  [ ]   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						main_object  =  None   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# remove all objects that are not visible, or not in the TypeId whitelist, because we don't want to export those   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						need_check_objects  =  True   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						while  need_check_objects :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							need_check_objects  =  False   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							for  obj  in  doc . Objects :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								if  not  obj . Visibility  or  obj . TypeId  not  in  [ ' Part::Feature ' ,  ' Part::FeaturePython ' ,  ' PartDesign::Body ' ,  ' Part::Mirroring ' ,  ' Part::Cut ' ,  ' Part::Part2DObjectPython ' ,  ' Part::MultiFuse ' ,  ' Part::Loft ' ,  ' Part::Torus ' ,  ' Part::Cylinder ' ,  ' App::DocumentObjectGroup ' ,  ' App::Part ' ,  ' App::Link ' ] :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									#print('removing ' + obj.Name + ' ('+obj.Label+')')   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									doc . removeObject ( obj . Name )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									need_check_objects  =  True   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						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   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						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 assembly in file  "  +  file_name  +  "  (found  "  +  str ( len ( root_objects ) )  +  "  root object(s), none named like the document  "  +  doc . Name  +  " ) " )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						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 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ImportGui . export ( [ main_object ] ,  output_path )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# close all documents   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						while  len ( FreeCAD . listDocuments ( ) . values ( ) )  >  0 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							FreeCAD . closeDocument ( list ( FreeCAD . listDocuments ( ) . values ( ) ) [ 0 ] . Name )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					folders  =  [  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						' chaudronnerie ' ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						' tubes '   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -77,3 +118,8 @@ for folder in folders:
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							print ( source_path )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							convert_file ( source_path ,  ' step ' )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					convert_assembly ( ' vheliotech.FCStd ' ,  ' step ' )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# exit FreeCAD  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					FreeCADGui . getMainWindow ( ) . close ( )