Fixed hole detection for bottom faces.
This commit is contained in:
@@ -232,9 +232,15 @@ class ObjectOp(PathOp.ObjectOp):
|
||||
f = shape.getElement(candidateFaceName)
|
||||
if PathUtils.isDrillable(shape, f, tooldiameter):
|
||||
PathLog.debug('face candidate: {} is drillable '.format(f))
|
||||
x = f.Surface.Center.x
|
||||
y = f.Surface.Center.y
|
||||
diameter = f.BoundBox.XLength
|
||||
if hasattr(f.Surface, 'Center'):
|
||||
x = f.Surface.Center.x
|
||||
y = f.Surface.Center.y
|
||||
diameter = f.BoundBox.XLength
|
||||
else:
|
||||
center = f.Edges[0].Curve.Center
|
||||
x = center.x
|
||||
y = center.y
|
||||
diameter = f.Edges[0].Curve.Radius * 2
|
||||
holelist.append({'featureName': candidateFaceName, 'feature': f, 'x': x, 'y': y, 'd': diameter, 'enabled': True})
|
||||
features.append((baseobject, candidateFaceName))
|
||||
PathLog.debug("Found hole feature %s.%s" % (baseobject.Label, candidateFaceName))
|
||||
|
||||
@@ -166,7 +166,12 @@ def isDrillable(obj, candidate, tooldiameter=None, includePartials=False):
|
||||
drillable = True
|
||||
elif type(face.Surface) == Part.Plane and PathGeom.pointsCoincide(face.Surface.Axis, FreeCAD.Vector(0,0,1)):
|
||||
if len(face.Edges) == 1 and type(face.Edges[0].Curve) == Part.Circle:
|
||||
return True
|
||||
center = face.Edges[0].Curve.Center
|
||||
if obj.isInside(center, 1e-6, False):
|
||||
if tooldiameter is not None:
|
||||
drillable = face.Edges[0].Curve.Radius >= tooldiameter/2
|
||||
else:
|
||||
drillable = True
|
||||
else:
|
||||
for edge in candidate.Edges:
|
||||
if isinstance(edge.Curve, Part.Circle) and (includePartials or edge.isClosed()):
|
||||
|
||||
Reference in New Issue
Block a user