diff --git a/src/snapwrap/SEEMeta/assembly.py b/src/snapwrap/SEEMeta/assembly.py index a3f36b9..4a54c10 100644 --- a/src/snapwrap/SEEMeta/assembly.py +++ b/src/snapwrap/SEEMeta/assembly.py @@ -60,10 +60,11 @@ class Assembly: version: ClassVar[int] = 1 components: List[Component] = field(default_factory=list) - comment: Optional[str] = None - model: Optional[str] = None - serialNumber: Optional[str] = None + comment: Optional[str] = "None" + model: Optional[str] = "None" + serialNumber: Optional[str] = "None" orientation: List[float] = field(default_factory=lambda: [0.0, 1.0, 0.0]) + origin: List[float] = field(default_factory=lambda: [0.0, 0.0, 0.0]) stringDescriptor: str = field(init=False) def __post_init__(self) -> None: @@ -226,4 +227,9 @@ def __post_init__(self) -> None: "CylinderCell: cylinders must be adjoining and concentric; " f"{i}: innerDiameter ({cur.innerDiameter.value}{cur.innerDiameter.units}) " f"!= previous outerDiameter ({prev.outerDiameter.value}{prev.outerDiameter.units})" - ) \ No newline at end of file + ) + +@register_assembly +@dataclass(slots=True, kw_only=True) +class empty(Assembly): + kind: ClassVar[str] = "assembly.empty" \ No newline at end of file diff --git a/src/snapwrap/SEEMeta/component.py b/src/snapwrap/SEEMeta/component.py index 05ba6c1..67171e8 100644 --- a/src/snapwrap/SEEMeta/component.py +++ b/src/snapwrap/SEEMeta/component.py @@ -147,13 +147,13 @@ class Component: # Schema version for this specific kind version: ClassVar[int] = 1 - manufacturer: Optional[str] = None - model: Optional[str] = None - serialNumber: Optional[str] = None - location: Optional[str] = None + manufacturer: Optional[str] = "None" + model: Optional[str] = "None" + serialNumber: Optional[str] = "None" + location: Optional[str] = "None" # Optional human-readable description - comment: Optional[str] = None - stlFile: Optional[str] = None + comment: Optional[str] = "None" + stlFile: Optional[str] = "None" # ---- Serialization ---- def to_dict(self) -> Dict[str, Any]: @@ -472,7 +472,7 @@ def __post_init__(self): # derived descriptor (include model/serial if available) model = getattr(self, "model", None) or "unknown" sn = getattr(self, "serialNumber", None) - self.stringDescriptor = f"aux_{model}" + (f"_{sn}" if sn else "") + self.stringDescriptor = f"aux_{self.manufacturer}" + (f"_{sn}" if sn else "") self.stlFile = f"{self.stringDescriptor}.stl" @register