[Draft] Arc Tracker by 3points method

Added arcBy3Points method to arc tracker
This commit is contained in:
carlopav
2019-06-22 18:56:37 +02:00
committed by Yorik van Havre
parent cdcc647458
commit 04ce90c4fd

View File

@@ -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.