2023-07-04 07:19:55 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
|
2023-09-12 19:09:33 +00:00
|
|
|
# shutil.make_archive(directory, 'zip', directory)
|
2023-07-04 07:19:55 +00:00
|
|
|
|
2023-09-12 19:09:33 +00:00
|
|
|
# shutil.rmtree(directory)
|
2023-07-04 07:19:55 +00:00
|
|
|
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',)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|