Added support for bezier curves for isHorizontal/isVertical.
This commit is contained in:
@@ -154,10 +154,13 @@ class PathGeom:
|
||||
PathLog.error(translate('PathGeom', "face isVertical(%s) not supported") % type(obj.Surface))
|
||||
return None
|
||||
if obj.ShapeType == 'Edge':
|
||||
if type(obj.Curve) == Part.Line:
|
||||
if type(obj.Curve) == Part.Line or type(obj.Curve) == Part.LineSegment:
|
||||
return cls.isVertical(obj.Vertexes[1].Point - obj.Vertexes[0].Point)
|
||||
if type(obj.Curve) == Part.Circle or type(obj.Curve) == Part.Ellipse:
|
||||
return cls.isHorizontal(obj.Curve.Axis)
|
||||
if type(obj.Curve) == Part.BezierCurve:
|
||||
# the current assumption is that a bezier curve is vertical if its end points are vertical
|
||||
return cls.isVertical(obj.Curve.EndPoint - obj.Curve.StartPoint)
|
||||
PathLog.error(translate('PathGeom', "edge isVertical(%s) not supported") % type(obj.Curve))
|
||||
return None
|
||||
PathLog.error(translate('PathGeom', "isVertical(%s) not supported") % obj)
|
||||
@@ -180,10 +183,12 @@ class PathGeom:
|
||||
PathLog.error(translate('PathGeom', "face isHorizontal(%s) not supported") % type(obj.Surface))
|
||||
return None
|
||||
if obj.ShapeType == 'Edge':
|
||||
if type(obj.Curve) == Part.Line:
|
||||
if type(obj.Curve) == Part.Line or type(obj.Curve) == Part.LineSegment:
|
||||
return cls.isHorizontal(obj.Vertexes[1].Point - obj.Vertexes[0].Point)
|
||||
if type(obj.Curve) == Part.Circle or type(obj.Curve) == Part.Ellipse:
|
||||
return cls.isVertical(obj.Curve.Axis)
|
||||
if type(obj.Curve) == Part.BezierCurve:
|
||||
return cls.isRoughly(obj.BoundBox.ZLength, 0)
|
||||
PathLog.error(translate('PathGeom', "edge isHorizontal(%s) not supported") % type(obj.Curve))
|
||||
return None
|
||||
PathLog.error(translate('PathGeom', "isHorizontal(%s) not supported") % obj)
|
||||
|
||||
@@ -119,6 +119,27 @@ class TestPathGeom(PathTestBase):
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(Part.makeCircle(4, Vector(), Vector(1, 0, 1)))))
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(Part.makeCircle(4, Vector(), Vector(1, 1, 1)))))
|
||||
|
||||
# bezier curves
|
||||
# ml: I know nothing about bezier curves, so this might be bollocks
|
||||
bezier = Part.BezierCurve()
|
||||
bezier.setPoles([Vector(), Vector(1,1,0), Vector(2,1,0), Vector(2,2,0)])
|
||||
self.assertTrue(PathGeom.isHorizontal(Part.Edge(bezier)))
|
||||
self.assertFalse(PathGeom.isVertical(Part.Edge(bezier)))
|
||||
bezier.setPoles([Vector(), Vector(1,1,1), Vector(2,1,0), Vector(2,2,0)])
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(bezier)))
|
||||
self.assertFalse(PathGeom.isVertical(Part.Edge(bezier)))
|
||||
bezier.setPoles([Vector(), Vector(1,1,0), Vector(2,1,1), Vector(2,2,0)])
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(bezier)))
|
||||
self.assertFalse(PathGeom.isVertical(Part.Edge(bezier)))
|
||||
bezier.setPoles([Vector(), Vector(1,1,0), Vector(2,1,0), Vector(2,2,1)])
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(bezier)))
|
||||
self.assertFalse(PathGeom.isVertical(Part.Edge(bezier)))
|
||||
|
||||
bezier.setPoles([Vector(), Vector(1,1,1), Vector(2,2,2), Vector(0,0,3)])
|
||||
self.assertFalse(PathGeom.isHorizontal(Part.Edge(bezier)))
|
||||
self.assertTrue(PathGeom.isVertical(Part.Edge(bezier)))
|
||||
|
||||
|
||||
def test04(self):
|
||||
"""Verify isVertical/isHorizontal for faces"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user