From fc5b6288c6eb4fe89192f63f1fbdf4a43c0fad27 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 16 Nov 2018 18:28:01 -0200 Subject: [PATCH] Draft: re-added missing arcFrom2Pts function in DraftGeomUtils --- src/Mod/Draft/DraftGeomUtils.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index 94fa596ce6..289339e388 100755 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -2438,6 +2438,27 @@ def circleFrom2PointsRadius(p1, p2, radius): else: return None +def arcFrom2Pts(firstPt,lastPt,center,axis=None): + + '''Builds an arc with center and 2 points, can be oriented with axis''' + + radius1 = firstPt.sub(center).Length + radius2 = lastPt.sub(center).Length + if round(radius1-radius2,4) != 0 : # (PREC = 4 = same as Part Module), Is it possible ? + return None + + thirdPt = Vector(firstPt.sub(center).add(lastPt).sub(center)) + thirdPt.normalize() + thirdPt.scale(radius1,radius1,radius1) + thirdPt = thirdPt.add(center) + newArc = Part.Edge(Part.Arc(firstPt,thirdPt,lastPt)) + if not axis is None and newArc.Curve.Axis.dot(axis) < 0 : + thirdPt = thirdPt.sub(center) + thirdPt.scale(-1,-1,-1) + thirdPt = thirdPt.add(center) + newArc = Part.Edge(Part.Arc(firstPt,thirdPt,lastPt)) + return newArc + #############################33 to include