| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | import FreeCAD |
| | import Path |
| | from ...shape import ToolBitShapeTap |
| | from ..mixins import RotaryToolBitMixin, CuttingToolMixin |
| | from .base import ToolBit |
| | from ..util import is_imperial_pitch |
| |
|
| |
|
| | class ToolBitTap(ToolBit, CuttingToolMixin, RotaryToolBitMixin): |
| | SHAPE_CLASS = ToolBitShapeTap |
| |
|
| | def __init__(self, shape: ToolBitShapeTap, id: str | None = None): |
| | Path.Log.track(f"ToolBitTap __init__ called with shape: {shape}, id: {id}") |
| | super().__init__(shape, id=id) |
| | CuttingToolMixin.__init__(self, self.obj) |
| |
|
| | @property |
| | def summary(self) -> str: |
| | diameter = self.get_property_str("Diameter", "?", precision=3) |
| | flutes = self.get_property("Flutes") |
| | cutting_edge_length = self.get_property_str("CuttingEdgeLength", "?", precision=3) |
| | pitch_raw = self.get_property("Pitch") |
| |
|
| | spindle_direction = self.get_property_str("SpindleDirection", "Forward") |
| | if spindle_direction == "Forward": |
| | rotation = "Right Hand" |
| | elif spindle_direction == "Reverse": |
| | rotation = "Left Hand" |
| | else: |
| | rotation = spindle_direction |
| |
|
| | if isinstance(pitch_raw, FreeCAD.Units.Quantity): |
| | pitch_mm = pitch_raw.getValueAs("mm") |
| | else: |
| | pitch_mm = FreeCAD.Units.Quantity(str(pitch_raw)).getValueAs("mm") |
| |
|
| | if pitch_raw: |
| | try: |
| | if is_imperial_pitch(pitch_raw): |
| | tpi = round(25.4 / pitch_mm, 2) |
| | pitch = f"{int(tpi) if tpi == int(tpi) else tpi} TPI" |
| | else: |
| | pitch = f"{pitch_mm} mm" |
| | except Exception: |
| | pitch = str(pitch_raw) |
| | else: |
| | pitch = "?" |
| |
|
| | return FreeCAD.Qt.translate( |
| | "CAM", |
| | f"{diameter} {pitch} {rotation} tap, {flutes}-flute, {cutting_edge_length} cutting edge", |
| | ) |
| |
|