48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from dataclasses import dataclass
|
|
from typing import List, Dict, Any, TypeVar, Callable, Type, cast
|
|
from extensions.list import CoreList
|
|
|
|
from models.var import from_str, from_float
|
|
|
|
|
|
@dataclass
|
|
class EnvModel:
|
|
cadFilePath: str
|
|
outPath: str
|
|
solidBodyPadding: float
|
|
firstDetail: str
|
|
sequencesFixed: list[list[str]]
|
|
|
|
@staticmethod
|
|
def from_dict(obj: Any) -> "EnvModel":
|
|
assert isinstance(obj, dict)
|
|
cadFilePath = from_str(obj.get("cadFilePath"))
|
|
outPath = from_str(obj.get("outPath"))
|
|
solidBodyPadding = from_float(obj.get("solidBodyPadding"))
|
|
firstDetail = from_str(obj.get("firstDetail"))
|
|
sequencesFixed = []
|
|
sequencesFixedParse = CoreList(obj.get("sequencesFixed"))
|
|
for el in sequencesFixedParse:
|
|
sequencesFixed.append(el)
|
|
|
|
restrictionsOnFasteners = CoreList(obj.get("restrictionsOnFasteners"))
|
|
|
|
for el in restrictionsOnFasteners:
|
|
for part in el["parts"]:
|
|
sequencesFixed.append([part, el["fastener"]])
|
|
return EnvModel(
|
|
cadFilePath,
|
|
outPath,
|
|
solidBodyPadding,
|
|
firstDetail,
|
|
sequencesFixed,
|
|
)
|
|
|
|
def to_dict(self) -> dict:
|
|
result: dict = {}
|
|
result["cadFilePath"] = from_str(self.cadFilePath)
|
|
result["outPath"] = from_str(self.outPath)
|
|
result["solidBodyPadding"] = from_float(self.solidBodyPadding)
|
|
result["firstDetail"] = from_str(self.firstDetail)
|
|
result["sequencesFixed"] = self.sequencesFixed
|
|
return result
|