From 187635aa430331ea2360b98dceb9fa2428673c06 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 14 Dec 2024 16:50:44 -0600 Subject: [PATCH] Make adaptive toolpaths use actual stock outline instead of bounding box --- src/Mod/CAM/Path/Op/Adaptive.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/Mod/CAM/Path/Op/Adaptive.py b/src/Mod/CAM/Path/Op/Adaptive.py index ade9b250ba..dc40299eda 100644 --- a/src/Mod/CAM/Path/Op/Adaptive.py +++ b/src/Mod/CAM/Path/Op/Adaptive.py @@ -42,7 +42,7 @@ __doc__ = "Class and implementation of the Adaptive CAM operation." from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -# TechDraw = LazyLoader('TechDraw', globals(), 'TechDraw') +TechDraw = LazyLoader("TechDraw", globals(), "TechDraw") FeatureExtensions = LazyLoader("Path.Op.FeatureExtension", globals(), "Path.Op.FeatureExtension") DraftGeomUtils = LazyLoader("DraftGeomUtils", globals(), "DraftGeomUtils") @@ -649,19 +649,10 @@ def Execute(op, obj): path2d = convertTo2d(pathArray) - stockPaths = [] - if hasattr(op.stock, "StockType") and op.stock.StockType == "CreateCylinder": - stockPaths.append([discretize(op.stock.Shape.Edges[0])]) - - else: - stockBB = op.stock.Shape.BoundBox - v = [] - v.append(FreeCAD.Vector(stockBB.XMin, stockBB.YMin, 0)) - v.append(FreeCAD.Vector(stockBB.XMax, stockBB.YMin, 0)) - v.append(FreeCAD.Vector(stockBB.XMax, stockBB.YMax, 0)) - v.append(FreeCAD.Vector(stockBB.XMin, stockBB.YMax, 0)) - v.append(FreeCAD.Vector(stockBB.XMin, stockBB.YMin, 0)) - stockPaths.append([v]) + # Use the 2D outline of the stock as the stock + # FIXME: This does not account for holes in the middle of stock! + outer_wire = TechDraw.findShapeOutline(op.stock.Shape, 1, FreeCAD.Vector(0, 0, 1)) + stockPaths = [[discretize(outer_wire)]] stockPath2d = convertTo2d(stockPaths)