diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py index b0138f1348..3274aff025 100644 --- a/src/Mod/Draft/DraftTrackers.py +++ b/src/Mod/Draft/DraftTrackers.py @@ -505,7 +505,7 @@ class arcTracker(Tracker): self.recompute() def getAngle(self,pt): - "returns the angle of a given vector" + "returns the angle of a given vector in radians" c = self.trans.translation.getValue() center = Vector(c[0],c[1],c[2]) rad = pt.sub(center) @@ -514,7 +514,7 @@ class arcTracker(Tracker): return(a) def getAngles(self): - "returns the start and end angles" + "returns the start and end angles in degrees" return(self.startangle,self.endangle) def setStartPoint(self,pt): @@ -531,6 +531,21 @@ class arcTracker(Tracker): self.endangle = self.startangle + ap self.recompute() + def setBy3Points(self,p1,p2,p3): + "sets the arc by three points" + import Part + try: + arc=Part.ArcOfCircle(p1,p2,p3) + except: return + e=arc.toShape() + self.autoinvert = False + self.normal = e.Curve.Axis.negative() # axis is always in wrong direction + self.basevector = self.getDeviation() + self.setCenter(e.Curve.Center) + self.setRadius(e.Curve.Radius) + self.setStartPoint(p1) + self.setEndPoint(p3) + def recompute(self): import Part,re if self.circle: @@ -570,7 +585,7 @@ class arcTracker(Tracker): self.sep.addChild(self.circle) else: FreeCAD.Console.PrintWarning("arcTracker.recompute() failed to read-in Inventor string\n") - + class ghostTracker(Tracker): '''A Ghost tracker, that allows to copy whole object representations.