Draft: Fix angular dimension issue caused by #10556
Forum topic: https://forum.freecad.org/viewtopic.php?t=81956 This PR basically reverts PR #10556. The angular offset required for the Draft_Arc command is handled in the gui_arc.py file instead. Also removed the unused `urotated` variable from that file.
This commit is contained in:
@@ -284,10 +284,11 @@ class Arc(gui_base_original.Creator):
|
||||
elif self.step == 2: # choose first angle
|
||||
self.ui.labelRadius.setText(translate("draft", "Aperture angle"))
|
||||
self.ui.radiusValue.setToolTip(translate("draft", "Aperture angle"))
|
||||
ang_offset = DraftVecUtils.angle(self.wp.u,
|
||||
self.arctrack.getDeviation(),
|
||||
self.wp.axis)
|
||||
self.arctrack.setStartAngle(self.firstangle - ang_offset)
|
||||
self.step = 3
|
||||
# scale center->point vector for proper display
|
||||
# u = DraftVecUtils.scaleTo(self.point.sub(self.center), self.rad) obsolete?
|
||||
self.arctrack.setStartAngle(self.firstangle)
|
||||
_msg(translate("draft", "Pick aperture"))
|
||||
else: # choose second angle
|
||||
self.step = 4
|
||||
@@ -449,12 +450,10 @@ class Arc(gui_base_original.Creator):
|
||||
self.ui.labelRadius.setText(translate("draft", "Aperture angle"))
|
||||
self.ui.radiusValue.setToolTip(translate("draft", "Aperture angle"))
|
||||
self.firstangle = math.radians(rad)
|
||||
if DraftVecUtils.equals(self.wp.axis, App.Vector(1, 0, 0)):
|
||||
u = App.Vector(0, self.rad, 0)
|
||||
else:
|
||||
u = DraftVecUtils.scaleTo(App.Vector(1, 0, 0).cross(self.wp.axis), self.rad)
|
||||
urotated = DraftVecUtils.rotate(u, math.radians(rad), self.wp.axis)
|
||||
self.arctrack.setStartAngle(self.firstangle)
|
||||
ang_offset = DraftVecUtils.angle(self.wp.u,
|
||||
self.arctrack.getDeviation(),
|
||||
self.wp.axis)
|
||||
self.arctrack.setStartAngle(self.firstangle - ang_offset)
|
||||
self.step = 3
|
||||
self.ui.radiusValue.setText("")
|
||||
self.ui.radiusValue.setFocus()
|
||||
|
||||
@@ -528,7 +528,7 @@ class bezcurveTracker(Tracker):
|
||||
|
||||
class arcTracker(Tracker):
|
||||
"""An arc tracker."""
|
||||
|
||||
# Note: used by the Arc command but also for angular dimensions.
|
||||
def __init__(self, dotted=False, scolor=None, swidth=None,
|
||||
start=0, end=math.pi*2):
|
||||
self.circle = None
|
||||
@@ -539,10 +539,6 @@ class arcTracker(Tracker):
|
||||
self.sep = coin.SoSeparator()
|
||||
self.autoinvert = True
|
||||
self.normal = FreeCAD.DraftWorkingPlane.axis
|
||||
ang = DraftVecUtils.angle(self.getDeviation(),
|
||||
FreeCAD.DraftWorkingPlane.u,
|
||||
self.normal)
|
||||
self.ang_offset = math.degrees(ang)
|
||||
self.recompute()
|
||||
super().__init__(dotted, scolor, swidth,
|
||||
[self.trans, self.sep], name="arcTracker")
|
||||
@@ -579,7 +575,7 @@ class arcTracker(Tracker):
|
||||
"""Return the angle of a given vector in radians."""
|
||||
c = self.trans.translation.getValue()
|
||||
center = Vector(c[0], c[1], c[2])
|
||||
return DraftVecUtils.angle(self.getDeviation(), pt.sub(center), self.normal)
|
||||
return DraftVecUtils.angle(pt.sub(center), self.getDeviation(), self.normal)
|
||||
|
||||
def getAngles(self):
|
||||
"""Return the start and end angles in degrees."""
|
||||
@@ -587,11 +583,11 @@ class arcTracker(Tracker):
|
||||
|
||||
def setStartPoint(self, pt):
|
||||
"""Set the start angle from a point."""
|
||||
self.setStartAngle(self.getAngle(pt))
|
||||
self.setStartAngle(-self.getAngle(pt))
|
||||
|
||||
def setEndPoint(self, pt):
|
||||
"""Set the end angle from a point."""
|
||||
self.setEndAngle(self.getAngle(pt))
|
||||
self.setEndAngle(-self.getAngle(pt))
|
||||
|
||||
def setApertureAngle(self, ang):
|
||||
"""Set the end angle by giving the aperture angle."""
|
||||
@@ -620,16 +616,12 @@ class arcTracker(Tracker):
|
||||
if self.circle:
|
||||
self.sep.removeChild(self.circle)
|
||||
self.circle = None
|
||||
if self.autoinvert is False:
|
||||
ang_sta = self.endangle
|
||||
ang_end = self.startangle
|
||||
elif self.endangle < self.startangle:
|
||||
ang_sta = self.endangle + self.ang_offset
|
||||
ang_end = self.startangle + self.ang_offset
|
||||
if (self.endangle < self.startangle) or not self.autoinvert:
|
||||
c = Part.makeCircle(1, Vector(0, 0, 0),
|
||||
self.normal, self.endangle, self.startangle)
|
||||
else:
|
||||
ang_sta = self.startangle + self.ang_offset
|
||||
ang_end = self.endangle + self.ang_offset
|
||||
c = Part.makeCircle(1, Vector(0, 0, 0), self.normal, ang_sta, ang_end)
|
||||
c = Part.makeCircle(1, Vector(0, 0, 0),
|
||||
self.normal, self.startangle, self.endangle)
|
||||
buf = c.writeInventor(2, 0.01)
|
||||
try:
|
||||
ivin = coin.SoInput()
|
||||
|
||||
Reference in New Issue
Block a user