From 7b5d6d294425bcd669e5b23ae26bb72cc225b993 Mon Sep 17 00:00:00 2001 From: DinoMesina Date: Thu, 4 Apr 2019 01:34:01 +0200 Subject: [PATCH] Update Draft.py --- src/Mod/Draft/Draft.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 3bc156f6bb..50ea595a9f 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -727,15 +727,23 @@ def makeCircle(radius, placement=None, face=None, startangle=None, endangle=None placement = FreeCAD.Placement(edge.Placement) delta = edge.Curve.Center.sub(placement.Base) placement.move(delta) + # Rotation of the edge + rotOk = FreeCAD.Rotation(edge.Curve.XAxis, edge.Curve.YAxis, edge.Curve.Axis, "ZXY") + placement.Rotation = rotOk if len(edge.Vertexes) > 1: - # ref = placement.multVec(FreeCAD.Vector(1,0,0)) ## INCORRECT - ref = FreeCAD.Vector(1,0,0) + #ref = placement.multVec(FreeCAD.Vector(1,0,0)) + #ref = ref.sub(edge.Curve.Center) v1 = (edge.Vertexes[0].Point).sub(edge.Curve.Center) v2 = (edge.Vertexes[-1].Point).sub(edge.Curve.Center) - a1 = -math.degrees(DraftVecUtils.angle(v1,ref)) - a2 = -math.degrees(DraftVecUtils.angle(v2,ref)) - obj.FirstAngle = a1 - obj.LastAngle = a2 + #a1 = -math.degrees(DraftVecUtils.angle(v1,ref)) + #a2 = -math.degrees(DraftVecUtils.angle(v2,ref)) + v0 = (edge.Curve.XAxis).normalize() + v1.normalize() + v2.normalize() + # Angle between edge.Curve.XAxis and the vector from center to start of arc + obj.FirstAngle = math.degrees(math.acos((v0.x*v1.x)+(v0.y*v1.y)+(v0.z*v1.z))) + # Angle between edge.Curve.XAxis and the vector from center to end of arc + obj.LastAngle = math.degrees(math.acos((v0.x*v2.x)+(v0.y*v2.y)+(v0.z*v2.z))) else: obj.Radius = radius if (startangle != None) and (endangle != None):