"""Point cloud generation errors."""
from abc import ABC
from layerview.common.mixins import MixinMarkdown
[docs]class EffectorDescentError(Exception, MixinMarkdown, ABC):
"""Generic effector descent error."""
def __init__(self, cur_layer_z: float, prev_layer_z: float):
"""
Parameters
----------
cur_layer_z : float
Current layer Z position (after the invalid descent).
prev_layer_z : float
Previous layer Z position (before the invalid descent).
"""
self._cur_layer_z: float = cur_layer_z
self._prev_layer_z: float = prev_layer_z
super().__init__()
def __repr__(self) -> str:
return (
f"{self.__class__.__name__}("
f"cur_layer_z={self.cur_layer_z}, "
f"prev_layer_z={self.prev_layer_z}"
f")"
)
@property
def cur_layer_z(self) -> float:
return self._cur_layer_z
@property
def prev_layer_z(self) -> float:
return self._prev_layer_z
[docs]class LateEffectorDescentError(EffectorDescentError):
"""Late effector descent error."""
def __init__(self, cur_layer_z: float, prev_layer_z: float, prev_layer_count: int):
"""
Parameters
----------
cur_layer_z : float
Current layer Z position (after the invalid descent).
prev_layer_z : float
Previous layer Z position (before the invalid descent).
prev_layer_count : int
Layer count before the invalid effector descent.
"""
super(LateEffectorDescentError, self).__init__(
cur_layer_z=cur_layer_z, prev_layer_z=prev_layer_z
)
self._prev_layer_count: int = prev_layer_count
def __repr__(self) -> str:
return (
f"{self.__class__.__name__}("
f"cur_layer_z={self.cur_layer_z}, "
f"prev_layer_z={self.prev_layer_z}, "
f"prev_layer_count={self.prev_layer_count}"
f")"
)
def __str__(self) -> str:
return (
f"Effector descended after printing "
f"{self.prev_layer_count} layers "
f"(from {self.prev_layer_z}mm to {self.cur_layer_z}mm)."
)
[docs] def as_markdown(self) -> str:
return str(self)
@property
def prev_layer_count(self) -> int:
return self._prev_layer_count
[docs]class PostPrimingDescentError(EffectorDescentError):
"""Post-priming effector descent error."""
def __str__(self) -> str:
return (
f"Effector descended after post priming descent "
f"(from {self.prev_layer_z}mm to {self.cur_layer_z}mm)."
)
[docs] def as_markdown(self) -> str:
return str(self)