53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
import argparse
|
|
import shutil
|
|
from src.model.enum import Enum
|
|
from helper.fs import FS
|
|
from src.usecases.urdf_sub_assembly_usecase import UrdfSubAssemblyUseCase
|
|
from src.model.sdf_geometry import GeometryModel
|
|
from src.usecases.sdf_sub_assembly_usecase import SdfSubAssemblyUseCase
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
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 + Enum.folderPath):
|
|
shutil.rmtree(outPath + Enum.folderPath)
|
|
Path(outPath + Enum.folderPath).mkdir(parents=True, exist_ok=True)
|
|
|
|
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,
|
|
)
|