CAM - Experimental Waterline Minor Fix

- Offset and None cut Pattern error
-  Ensure the tool is directly above the entry point before plunging,
- Retract to SafeHeight instead of ClearanceHeight between transitions
This commit is contained in:
Dimitris75
2026-01-05 02:26:56 +02:00
parent e1ddc17dc6
commit 29163b0157

View File

@@ -1897,7 +1897,7 @@ class ObjectWaterline(PathOp.ObjectOp):
if cont:
# Identify solid areas in the offset data
if obj.CutPattern == "Offset" or obj.CutPattern == "None":
ofstSolidFacesList = self._getSolidAreasFromPlanarFaces(ofstArea)
ofstSolidFacesList = self._getSolidAreasFromPlanarFaces(ofstArea.Faces)
if ofstSolidFacesList:
clearArea = Part.makeCompound(ofstSolidFacesList)
self.showDebugObject(clearArea, "ClearArea_{}".format(caCnt))
@@ -2014,6 +2014,10 @@ class ObjectWaterline(PathOp.ObjectOp):
startVect = FreeCAD.Vector(V[0].X, V[0].Y, V[0].Z)
commands.append(Path.Command("N (Wire {}.)".format(w)))
# This ensures the tool is directly above the entry point before plunging,
# preventing diagonal moves through the material.
commands.append(Path.Command("G0", {"X": startVect.x, "Y": startVect.y, "F": self.horizRapid}))
(cmds, endVect) = self._wireToPath(obj, wire, startVect)
commands.extend(cmds)
commands.append(Path.Command("G0", {"Z": obj.SafeHeight.Value, "F": self.vertRapid}))
@@ -2303,8 +2307,7 @@ class ObjectWaterline(PathOp.ObjectOp):
pathParams["feedrate"] = self.horizFeed
pathParams["feedrate_v"] = self.vertFeed
pathParams["verbose"] = True
pathParams["resume_height"] = obj.SafeHeight.Value
pathParams["retraction"] = obj.ClearanceHeight.Value
pathParams["retraction"] = obj.SafeHeight.Value
pathParams["return_end"] = True
# Note that emitting preambles between moves breaks some dressups and prevents path optimization on some controllers
pathParams["preamble"] = False