package org.goko.core.gcode.rs274ngcv3.instruction.builder; import java.util.List; import org.goko.core.common.exception.GkException; import org.goko.core.common.measure.quantity.Length; import org.goko.core.gcode.element.GCodeWord; import org.goko.core.gcode.rs274ngcv3.context.GCodeContext; import org.goko.core.gcode.rs274ngcv3.element.InstructionType; import org.goko.core.gcode.rs274ngcv3.instruction.CutterCompensationLeftInstruction; import org.goko.core.gcode.rs274ngcv3.utils.GCodeWordUtils; public class CutterCompensationLeftInstructionBuilder extends AbstractInstructionBuilder<CutterCompensationLeftInstruction> { /** Constructor */ public CutterCompensationLeftInstructionBuilder() { super(InstructionType.CUTTER_COMPENSATION_LEFT); } /** (inheritDoc) * @see org.goko.core.gcode.rs274ngcv3.instruction.IInstructionBuilder#match(org.goko.core.gcode.rs274ngcv3.context.GCodeContext, java.util.List) */ @Override public boolean match(GCodeContext context, List<GCodeWord> words) throws GkException { return GCodeWordUtils.containsWordRegex("G41", words); } /** (inheritDoc) * @see org.goko.core.gcode.rs274ngcv3.instruction.IInstructionBuilder#toInstruction(org.goko.core.gcode.rs274ngcv3.context.GCodeContext, java.util.List) */ @Override protected CutterCompensationLeftInstruction getInstruction(GCodeContext context, List<GCodeWord> words) throws GkException { GCodeWordUtils.findAndRemoveWordRegex("G41", words); GCodeWord word = GCodeWordUtils.findAndRemoveWordRegex("D", words); Length offset = null; if(word != null){ offset = Length.valueOf(word.getValue(), context.getUnit().getUnit()); } CutterCompensationLeftInstruction instr = new CutterCompensationLeftInstruction(); instr.setOffset(offset); return instr; } }