Draft: Fixed regression bug in Rotate
This commit is contained in:
@@ -6117,8 +6117,12 @@ class _ShapeString(_DraftObject):
|
||||
sep_wirelist = []
|
||||
face = Part.Face(wire2Face)
|
||||
face.validate()
|
||||
if face.Surface.Axis.z < 0.0:
|
||||
face.reverse()
|
||||
try:
|
||||
# some fonts fail here
|
||||
if face.Surface.Axis.z < 0.0:
|
||||
face.reverse()
|
||||
except:
|
||||
pass
|
||||
compFaces.append(face)
|
||||
ret = Part.Compound(compFaces)
|
||||
return ret
|
||||
|
||||
@@ -364,6 +364,8 @@ class DraftToolBar:
|
||||
self.x = 0
|
||||
self.y = 0
|
||||
self.z = 0
|
||||
self.radius = 0
|
||||
self.offset = 0
|
||||
self.uiloader = FreeCADGui.UiLoader()
|
||||
self.autogroup = None
|
||||
self.isCenterPlane = False
|
||||
@@ -916,6 +918,12 @@ class DraftToolBar:
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
def taskUi(self,title="Draft",extra=None,icon="Draft_Draft"):
|
||||
# reset InputField values
|
||||
self.x = 0
|
||||
self.y = 0
|
||||
self.z = 0
|
||||
self.radius = 0
|
||||
self.offset = 0
|
||||
if self.taskmode:
|
||||
self.isTaskOn = True
|
||||
todo.delay(FreeCADGui.Control.closeDialog,None)
|
||||
@@ -973,6 +981,9 @@ class DraftToolBar:
|
||||
elif f=="z":
|
||||
self.zValue.setFocus()
|
||||
self.zValue.selectAll()
|
||||
elif f=="radius":
|
||||
self.radiusValue.setFocus()
|
||||
self.radiusValue.selectAll()
|
||||
|
||||
def selectPlaneUi(self):
|
||||
self.taskUi(title=translate("draft", "Working plane setup"),icon="Draft_SelectPlane")
|
||||
@@ -1196,6 +1207,8 @@ class DraftToolBar:
|
||||
self.labelRadius.show()
|
||||
self.radiusValue.setText(FreeCAD.Units.Quantity(0,FreeCAD.Units.Length).UserString)
|
||||
self.radiusValue.show()
|
||||
todo.delay(self.radiusValue.setFocus,None)
|
||||
self.radiusValue.selectAll()
|
||||
|
||||
def textUi(self):
|
||||
self.hideXYZ()
|
||||
@@ -1542,16 +1555,16 @@ class DraftToolBar:
|
||||
try:
|
||||
#rad=float(self.radiusValue.text())
|
||||
rad = self.radius
|
||||
except ValueError:
|
||||
pass
|
||||
except (ValueError, AttributeError):
|
||||
print("debug: DraftGui.validatePoint: AttributeError")
|
||||
else:
|
||||
self.sourceCmd.numericRadius(rad)
|
||||
elif (self.offsetLabel.isVisible()):
|
||||
try:
|
||||
#offset=float(self.offsetValue.text())
|
||||
offset = self.offset
|
||||
except ValueError:
|
||||
pass
|
||||
except (ValueError, AttributeError):
|
||||
print("debug: DraftGui.validatePoint: AttributeError")
|
||||
else:
|
||||
self.sourceCmd.offsetHandler(offset)
|
||||
elif (self.labelx.isVisible()):
|
||||
@@ -1562,8 +1575,8 @@ class DraftToolBar:
|
||||
numy = self.y
|
||||
#numz=float(self.zValue.text())
|
||||
numz = self.z
|
||||
except:
|
||||
pass
|
||||
except (ValueError, AttributeError):
|
||||
print("debug: DraftGui.validatePoint: AttributeError")
|
||||
else:
|
||||
if self.pointcallback:
|
||||
self.pointcallback(FreeCAD.Vector(numx,numy,numz),self.relativeMode)
|
||||
|
||||
@@ -557,6 +557,7 @@ class Line(Creator):
|
||||
self.ui.wireUi(name)
|
||||
else:
|
||||
self.ui.lineUi(name)
|
||||
self.ui.setTitle(translate("draft", "Line"))
|
||||
if sys.version_info.major < 3:
|
||||
if isinstance(self.featureName,unicode):
|
||||
self.featureName = self.featureName.encode("utf8")
|
||||
@@ -2806,7 +2807,7 @@ class Rotate(Modifier):
|
||||
self.center = None
|
||||
self.ui.arcUi()
|
||||
self.ui.modUi()
|
||||
self.ui.setTitle("Rotate")
|
||||
self.ui.setTitle(translate("draft","Rotate"))
|
||||
self.arctrack = arcTracker()
|
||||
self.call = self.view.addEventCallback("SoEvent",self.action)
|
||||
msg(translate("draft", "Pick rotation center:")+"\n")
|
||||
@@ -2882,7 +2883,7 @@ class Rotate(Modifier):
|
||||
self.ui.radiusUi()
|
||||
self.ui.radiusValue.setText(FreeCAD.Units.Quantity(0,FreeCAD.Units.Angle).UserString)
|
||||
self.ui.hasFill.hide()
|
||||
self.ui.labelRadius.setText("Base angle")
|
||||
self.ui.labelRadius.setText(translate("draft","Base angle"))
|
||||
self.arctrack.setCenter(self.center)
|
||||
for ghost in self.ghosts:
|
||||
ghost.center(self.center)
|
||||
@@ -2892,7 +2893,7 @@ class Rotate(Modifier):
|
||||
self.planetrack.set(self.point)
|
||||
|
||||
def set_start_point(self):
|
||||
self.ui.labelRadius.setText("Rotation")
|
||||
self.ui.labelRadius.setText(translate("draft","Rotation"))
|
||||
self.rad = DraftVecUtils.dist(self.point,self.center)
|
||||
self.arctrack.on()
|
||||
self.arctrack.setStartPoint(self.point)
|
||||
@@ -3007,34 +3008,36 @@ class Rotate(Modifier):
|
||||
DraftVecUtils.toString(self.center),
|
||||
DraftVecUtils.toString(plane.axis),
|
||||
is_copy
|
||||
)])
|
||||
),
|
||||
'FreeCAD.ActiveDocument.recompute()'])
|
||||
|
||||
def numericInput(self,numx,numy,numz):
|
||||
"this function gets called by the toolbar when valid x, y, and z have been entered there"
|
||||
self.center = Vector(numx,numy,numz)
|
||||
self.node = [self.center]
|
||||
self.arctrack.setCenter(self.center)
|
||||
if self.ghost:
|
||||
self.ghost.center(self.center)
|
||||
for ghost in self.ghosts:
|
||||
ghost.center(self.center)
|
||||
self.ui.radiusUi()
|
||||
self.ui.hasFill.hide()
|
||||
self.ui.labelRadius.setText("Base angle")
|
||||
self.ui.labelRadius.setText(translate("draft","Base angle"))
|
||||
self.step = 1
|
||||
msg(translate("draft", "Pick base angle:")+"\n")
|
||||
|
||||
def numericRadius(self,rad):
|
||||
"this function gets called by the toolbar when valid radius have been entered there"
|
||||
if (self.step == 1):
|
||||
self.ui.labelRadius.setText("Rotation")
|
||||
self.ui.labelRadius.setText(translate("draft","Rotation"))
|
||||
self.firstangle = math.radians(rad)
|
||||
self.arctrack.setStartAngle(self.firstangle)
|
||||
self.arctrack.on()
|
||||
if self.ghost:
|
||||
self.ghost.on()
|
||||
for ghost in self.ghosts:
|
||||
ghost.on()
|
||||
self.step = 2
|
||||
msg(translate("draft", "Pick rotation angle:")+"\n")
|
||||
else:
|
||||
self.rotate(math.radians(rad),self.ui.isCopy.isChecked())
|
||||
self.angle = math.radians(rad)
|
||||
self.rotate(self.ui.isCopy.isChecked())
|
||||
self.finish(cont=True)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user