package org.goko.core.gcode.rs274ngcv3.instruction.builder; import java.util.List; import org.goko.core.common.exception.GkException; import org.goko.core.gcode.element.GCodeWord; import org.goko.core.gcode.rs274ngcv3.context.EnumPlane; import org.goko.core.gcode.rs274ngcv3.context.GCodeContext; import org.goko.core.gcode.rs274ngcv3.element.InstructionType; import org.goko.core.gcode.rs274ngcv3.instruction.SelectPlaneInstruction; import org.goko.core.gcode.rs274ngcv3.utils.GCodeWordUtils; public class SelectPlaneBuilder extends AbstractInstructionBuilder<SelectPlaneInstruction> { /** Constructor*/ public SelectPlaneBuilder() { super(InstructionType.SELECT_PLANE); } /** (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.containsWord("G17", words) || GCodeWordUtils.containsWord("G18", words) || GCodeWordUtils.containsWord("G19", words); } /** (inheritDoc) * @see org.goko.core.gcode.rs274ngcv3.instruction.IInstructionBuilder#toInstruction(org.goko.core.gcode.rs274ngcv3.context.GCodeContext, java.util.List) */ @Override protected SelectPlaneInstruction getInstruction(GCodeContext context, List<GCodeWord> words) throws GkException { EnumPlane plane = null; GCodeWord word = GCodeWordUtils.findAndRemoveWord("G17", words); if(word != null){ plane = EnumPlane.XY_PLANE; }else{ word = GCodeWordUtils.findAndRemoveWord("G18", words); if(word != null){ plane = EnumPlane.XZ_PLANE; }else{ word = GCodeWordUtils.findAndRemoveWord("G19", words); plane = EnumPlane.YZ_PLANE; } } return new SelectPlaneInstruction(plane); } }