import argparse import shutil from helper.fs import FS from src.usecases.urdf_sub_assembly_usecase import UrdfSubAssemblyUseCase # from src.usecases.sdf_generate_world_usecase import SdfGenerateWorldUseCase from src.model.sdf_geometry import GeometryModel from src.usecases.sdf_sub_assembly_usecase import SdfSubAssemblyUseCase import os if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--generationFolder', help='FreeCad generation folder') parser.add_argument('--outPath', help='save SDF path') parser.add_argument('--world', help='adding sdf world') parser.add_argument('--format', help='urdf,sdf,mujoco') args = parser.parse_args() if args.generationFolder == None or args.outPath == None: parser.print_help() outPath = args.outPath geometryFiles = FS.readFilesTypeFolder(args.generationFolder + '/assets/') assemblyStructure = FS.readJSON( args.generationFolder + '/step-structure.json') geometryModels: list[GeometryModel] = [] for el in geometryFiles: geometryModels.append(GeometryModel.from_dict( FS.readJSON(args.generationFolder + '/assets/' + el))) if os.path.exists(outPath + 'sdf-generation/'): shutil.rmtree(path=outPath + 'sdf-generation/') if (args.format == 'sdf'): SdfSubAssemblyUseCase().call( geometryModels=geometryModels, assembly=assemblyStructure, world=args.world, generationFolder=args.generationFolder, outPath=args.outPath ) if (args.format == 'urdf'): UrdfSubAssemblyUseCase().call( geometryModels=geometryModels, assembly=assemblyStructure, world=args.world, generationFolder=args.generationFolder, outPath=args.outPath )