Update Draft.py

This commit is contained in:
DinoMesina
2019-04-04 01:34:01 +02:00
committed by Yorik van Havre
parent d259a17b16
commit 7b5d6d2944

View File

@@ -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):