Merge pull request #4443 from mlampert/bugfix/deburr-offset-part

[Path]: Added support for Part.OffsetCurve to flipEdge.
This commit is contained in:
sliptonic
2021-02-14 17:36:01 -06:00
committed by GitHub
2 changed files with 18 additions and 1 deletions

View File

@@ -534,13 +534,18 @@ def flipEdge(edge):
flipped.buildFromPolesMultsKnots(poles, mults , knots, perio, degree, weights, ratio)
return Part.Edge(flipped)
elif type(edge.Curve) == Part.OffsetCurve:
return edge.reversed()
global OddsAndEnds # pylint: disable=global-statement
OddsAndEnds.append(edge)
PathLog.warning(translate('PathGeom', "%s not support for flipping") % type(edge.Curve))
PathLog.warning(translate('PathGeom', "%s not supported for flipping") % type(edge.Curve))
Wire = []
def flipWire(wire):
'''Flip the entire wire and all its edges so it is being processed the other way around.'''
Wire.append(wire)
edges = [flipEdge(e) for e in wire.Edges]
edges.reverse()
PathLog.debug(edges)

View File

@@ -530,4 +530,16 @@ class TestPathGeom(PathTestBase):
edge = Part.Edge(Part.BSplineCurve([Vector(-8,4,0), Vector(1,-5,0), Vector(5,11,0), Vector(12,-5,0)], weights=[2,3,5,7]))
self.assertEdgeShapesMatch(edge, PathGeom.flipEdge(edge))
def test76(self):
'''Flip an offset wire'''
e0 = Part.Edge(Part.BSplineCurve([Vector(-8,4,0), Vector(1,-5,0), Vector(5,11,0), Vector(12,-5,0)], weights=[2,3,5,7]))
e1 = Part.Edge(Part.LineSegment(Vector(12,-5,0), Vector(0,-7,0)))
e2 = Part.Edge(Part.LineSegment(Vector(0,-7,0), Vector(-8,4,0)))
w0 = Part.Wire([e0, e1, e2])
w1 = w0.makeOffset2D(1)
w2 = PathGeom.flipWire(w1)
# do some sanity checks
self.assertTrue(w2.isValid())
self.assertTrue(w2.isClosed())