Merge pull request #4905 from Roy-043/Draft_fix_trimex_wrong_units

Draft: Draft_Trimex: Fix wrong angle units in task panel
This commit is contained in:
Yorik van Havre
2021-08-16 16:22:47 +02:00
committed by GitHub
2 changed files with 20 additions and 12 deletions

View File

@@ -1095,7 +1095,7 @@ class DraftToolBar:
self.taskUi(title, icon="Draft_Trimex")
self.radiusUi()
self.labelRadius.setText(translate("draft","Distance"))
self.radiusValue.setToolTip(translate("draft", "Trim distance"))
self.radiusValue.setToolTip(translate("draft", "Offset distance"))
self.radiusValue.setText(FreeCAD.Units.Quantity(0,FreeCAD.Units.Length).UserString)
todo.delay(self.radiusValue.setFocus,None)
self.radiusValue.selectAll()

View File

@@ -203,9 +203,21 @@ class Trimex(gui_base_original.Modifier):
if self.extrudeMode:
dist = self.extrude(self.shift)
else:
dist = self.redraw(self.point, self.snapped,
self.shift, self.alt)
self.ui.setRadiusValue(dist, unit="Length")
# If the geomType of the edge is "Line" ang will be None,
# else dist will be None.
dist, ang = self.redraw(self.point, self.snapped,
self.shift, self.alt)
if dist:
self.ui.labelRadius.setText(translate("draft", "Distance"))
self.ui.radiusValue.setToolTip(translate("draft",
"Offset distance"))
self.ui.setRadiusValue(dist, unit="Length")
else:
self.ui.labelRadius.setText(translate("draft", "Angle"))
self.ui.radiusValue.setToolTip(translate("draft",
"Offset angle"))
self.ui.setRadiusValue(ang, unit="Angle")
self.ui.radiusValue.setFocus()
self.ui.radiusValue.selectAll()
gui_tool_utils.redraw3DView()
@@ -301,6 +313,7 @@ class Trimex(gui_base_original.Modifier):
# modifying active edge
if DraftGeomUtils.geomType(edge) == "Line":
ang = None
ve = DraftGeomUtils.vec(edge)
chord = v1.sub(point)
n = ve.cross(chord)
@@ -313,9 +326,6 @@ class Trimex(gui_base_original.Modifier):
dist = v1.sub(self.newpoint).Length
ghost.p1(self.newpoint)
ghost.p2(v2)
self.ui.labelRadius.setText(translate("draft", "Distance"))
self.ui.radiusValue.setToolTip(translate("draft",
"The offset distance"))
if real:
if self.force:
ray = self.newpoint.sub(v1)
@@ -323,16 +333,14 @@ class Trimex(gui_base_original.Modifier):
self.newpoint = App.Vector.add(v1, ray)
newedges.append(Part.LineSegment(self.newpoint, v2).toShape())
else:
dist = None
center = edge.Curve.Center
rad = edge.Curve.Radius
ang1 = DraftVecUtils.angle(v2.sub(center))
ang2 = DraftVecUtils.angle(point.sub(center))
_rot_rad = DraftVecUtils.rotate(App.Vector(rad, 0, 0), -ang2)
self.newpoint = App.Vector.add(center, _rot_rad)
self.ui.labelRadius.setText(translate("draft", "Angle"))
self.ui.radiusValue.setToolTip(translate("draft",
"The offset angle"))
dist = math.degrees(-ang2)
ang = math.degrees(-ang2)
# if ang1 > ang2:
# ang1, ang2 = ang2, ang1
# print("last calculated:",
@@ -384,7 +392,7 @@ class Trimex(gui_base_original.Modifier):
if real:
return newedges
else:
return dist
return [dist, ang]
def trimObject(self):
"""Trim the actual object."""