private void AddEdge(ProbingViewModel probing, char axisletter, bool negative, double XYClearance) { int axis = GrblInfo.AxisLetterToIndex(axisletter); af[axis] = negative ? -1d : 1d; axisflags = GrblInfo.AxisLetterToFlag(axisletter); var rapidto = new Position(probing.StartPosition); rapidto.Values[axis] -= XYClearance * af[axis]; rapidto.Z -= probing.Depth; probing.Program.AddRapidToMPos(rapidto, axisflags); probing.Program.AddRapidToMPos(rapidto, AxisFlags.Z); probing.Program.AddProbingAction(axisflags, negative); rapidto.Values[axis] = probing.StartPosition.Values[axis] - XYClearance * af[axis]; probing.Program.AddRapidToMPos(rapidto, axisflags); probing.Program.AddRapidToMPos(probing.StartPosition, AxisFlags.Z); }
// G10 L1 P- axes <R- I- J- Q-> Set Tool Table // L10 - ref G5x + G92 - useful for probe (G38) // L11 - ref g59.3 only // Q: 1 - 8: 1: 135, 2: 45, 3: 315, 4: 225, 5: 180, 6: 90, 7: 0, 8: 270 void saveOffset(string axis) { string axes; Position newpos = new Position(offset); newpos.X = GrblWorkParameters.ConvertX(GrblWorkParameters.LatheMode, GrblParserState.LatheMode, selectedTool.X); switch (axis) { case "R": axes = "R{4}"; break; case "All": axes = newpos.ToString(GrblInfo.AxisFlags); break; default: axes = newpos.ToString(GrblInfo.AxisLetterToFlag(axis)); break; } Comms.com.WriteCommand(string.Format("G10L1P{0}{1}", selectedTool.Code, axes)); }
// G10 L1 P- axes <R- I- J- Q-> Set Tool Table // L10 - ref G5x + G92 - useful for probe (G38) // L11 - ref g59.3 only // Q: 1 - 8: 1: 135, 2: 45, 3: 315, 4: 225, 5: 180, 6: 90, 7: 0, 8: 270 void saveOffset(string axis) { string cmd; Position newpos = new Position(Offset); newpos.X = GrblWorkParameters.ConvertX(GrblWorkParameters.LatheMode, GrblParserState.LatheMode, selectedOffset.X); if (selectedOffset.Id == 0) { string code = selectedOffset.Code == "G28" || selectedOffset.Code == "G30" ? selectedOffset.Code + ".1" : selectedOffset.Code; if (axis == "ClearAll" || IsPredefined) { cmd = selectedOffset.Code + ".1"; } else { cmd = string.Format("G90{0}{1}", code, newpos.ToString(axis == "All" ? GrblInfo.AxisFlags : GrblInfo.AxisLetterToFlag(axis))); } } else { cmd = string.Format("G90G10L2P{0}{1}", selectedOffset.Id, newpos.ToString(axis == "All" || axis == "ClearAll" ? GrblInfo.AxisFlags : GrblInfo.AxisLetterToFlag(axis))); } Comms.com.WriteCommand(cmd); }