migrate isInside to isPartOfDomain

This commit is contained in:
PhaseLoop
2025-03-13 19:20:12 +01:00
parent 34ab659cd7
commit e4c9484139

View File

@@ -343,7 +343,7 @@ class ObjectVcarve(PathEngraveBase.ObjectOp):
)
obj.Colinear = 10.0
obj.Discretize = 0.1
obj.Discretize = 0.25
obj.Tolerance = Path.Preferences.defaultGeometryTolerance()
self.setupAdditionalProperties(obj)
@@ -359,6 +359,12 @@ class ObjectVcarve(PathEngraveBase.ObjectOp):
wires_by_face = dict()
self.voronoiDebugCache = dict()
def is_exterior(vertex, face):
vector = FreeCAD.Vector(vertex.toPoint(face.BoundBox.ZMin))
(u, v) = face.Surface.parameter(vector)
# isPartOfDomain is faster than face.IsInside(...)
return not face.isPartOfDomain(u, v)
def insert_many_wires(vd, wires):
for wire in wires:
Path.Log.debug("discretize value: {}".format(obj.Discretize))
@@ -402,16 +408,17 @@ class ObjectVcarve(PathEngraveBase.ObjectOp):
else:
e.Color = SECONDARY
# filter our colinear edged so there are fewer ones
# to iterate over in colorExterior which is slow
vd.colorColinear(COLINEAR, obj.Colinear)
vd.colorTwins(TWIN)
vd.colorExterior(EXTERIOR1)
vd.colorExterior(
EXTERIOR2,
lambda v: not f.isInside(
v.toPoint(f.BoundBox.ZMin), obj.Tolerance, True
),
)
vd.colorExterior(EXTERIOR2, lambda v: is_exterior(v, f))
# if colorTwin is done before colorExterior we seem to have
# much more weird exterior edges needed to be filtered out,
# keep it here to be safe
vd.colorTwins(TWIN)
wires = _collectVoronoiWires(vd)
wires = _sortVoronoiWires(wires)