Source code for gcode_reader.emulate.machines.hendrick
import logging
from ..machine import Machine
from ..tools import MillingTool
from ..machine_options import HendrickOptions
from ..parsers import GcodeParser
from ..operations import SubtractiveOperation, SubtractiveProcessData
from ..commands import Config, M
from ..registry import register
[docs]
@register("hendrick")
class Hendrick(Machine):
"""Hendrick 5-axis CNC"""
def __init__(self, **options):
super().__init__(parser=GcodeParser(syntax_name="hendrick"))
self._options_cls = HendrickOptions
self.options = options
self.tools = [MillingTool(self.options)]
def _config(
self, command: Config, process_data: SubtractiveProcessData
) -> SubtractiveProcessData:
process_data = super()._config(command, process_data)
if not isinstance(command, M):
return process_data
tool = self.tools[0]
if command.code == 3: # M03: spindle on CW
tool.on = True
spindle = command.settings.get("S") if command.settings else None
if spindle is not None:
tool.spindle_speed = float(spindle)
elif command.code == 5: # M05: spindle stop
tool.on = False
return process_data
[docs]
def gcode_file_to_operation(
self, filepath: str, operation_type=SubtractiveOperation
):
return super().gcode_file_to_operation(filepath, operation_type)