Draft: Fixed regression bug in Rotate

This commit is contained in:
Yorik van Havre
2019-05-16 14:38:46 -03:00
parent a2d3b12a57
commit bff34a36ec
3 changed files with 39 additions and 19 deletions

View File

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

View File

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

View File

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