from usecases.export_assembly_them_all_usecase import ExportAssemblyThemAllUseCase import FreeCAD from usecases.export_usecase import EXPORT_TYPES, ExportUseCase from usecases.get_sdf_geometry_usecase import SdfGeometryUseCase from usecases.assembly_parse_usecase import AssemblyParseUseCase from usecases.geometry_usecase import GeometryUseCase from model.geometry_part import GeometryPart from model.files_generator import FolderGenerator from helper.fs import FS import os import shutil class RobossemblerFreeCadExportScenario: def call(self, path): directory = path + '/' + 'generation' if os.path.exists(directory): shutil.rmtree(directory) if not os.path.exists(directory): os.makedirs(directory) __objs__ = FreeCAD.ActiveDocument.RootObjects directoryExport = directory + '/' os.makedirs(directoryExport + FolderGenerator.ASSETS.value) os.makedirs(directoryExport + FolderGenerator.SDF.value) os.makedirs(directoryExport + FolderGenerator.SDF.value + '/' + FolderGenerator.MESHES.value) os.makedirs(directoryExport + FolderGenerator.ASSEMBlY.value) f = open(directory + "/step-structure.json", "w") f.write(AssemblyParseUseCase().toJson()) f.close() self.geometry(directory) ExportAssemblyThemAllUseCase().call(directoryExport) # shutil.make_archive(directory, 'zip', directory) # shutil.rmtree(directory) return True def geometry(self, outPutsPath: str): exportUseCase = ExportUseCase.call(outPutsPath,EXPORT_TYPES.OBJ) for el in SdfGeometryUseCase().call(exportUseCase): FS.writeFile(el.toJSON(), outPutsPath + '/' + FolderGenerator.ASSETS.value + '/', el.name + '.json',)