Draft: fixed wrong decimals in dimensions display + minor bugfix
This commit is contained in:
parent
595a5dd2c7
commit
7e310b2444
|
@ -324,19 +324,20 @@ def getGroupContents(objectslist,walls=False,addgroups=False):
|
|||
if not isinstance(objectslist,list):
|
||||
objectslist = [objectslist]
|
||||
for obj in objectslist:
|
||||
if obj.isDerivedFrom("App::DocumentObjectGroup") or ((getType(obj) == "Space") and hasattr(obj,"Group")):
|
||||
if obj.isDerivedFrom("Drawing::FeaturePage"):
|
||||
# skip if the group is a page
|
||||
newlist.append(obj)
|
||||
else:
|
||||
if addgroups:
|
||||
if obj:
|
||||
if obj.isDerivedFrom("App::DocumentObjectGroup") or ((getType(obj) == "Space") and hasattr(obj,"Group")):
|
||||
if obj.isDerivedFrom("Drawing::FeaturePage"):
|
||||
# skip if the group is a page
|
||||
newlist.append(obj)
|
||||
newlist.extend(getGroupContents(obj.Group,walls,addgroups))
|
||||
else:
|
||||
#print("adding ",obj.Name)
|
||||
newlist.append(obj)
|
||||
if walls:
|
||||
newlist.extend(getWindows(obj))
|
||||
else:
|
||||
if addgroups:
|
||||
newlist.append(obj)
|
||||
newlist.extend(getGroupContents(obj.Group,walls,addgroups))
|
||||
else:
|
||||
#print("adding ",obj.Name)
|
||||
newlist.append(obj)
|
||||
if walls:
|
||||
newlist.extend(getWindows(obj))
|
||||
|
||||
# cleaning possible duplicates
|
||||
cleanlist = []
|
||||
|
@ -3611,7 +3612,7 @@ class _ViewProviderDimension(_ViewProviderDraft):
|
|||
elif hasattr(obj.ViewObject,"Decimals"):
|
||||
self.string = DraftGui.displayExternal(l,obj.ViewObject.Decimals,'Length',su)
|
||||
else:
|
||||
self.string = DraftGui.displayExternal(l,getParam("dimPrecision",2),'Length',su)
|
||||
self.string = DraftGui.displayExternal(l,None,'Length',su)
|
||||
if hasattr(obj.ViewObject,"Override"):
|
||||
if obj.ViewObject.Override:
|
||||
self.string = obj.ViewObject.Override.replace("$dim",\
|
||||
|
@ -3899,7 +3900,7 @@ class _ViewProviderAngularDimension(_ViewProviderDraft):
|
|||
if hasattr(obj.ViewObject,"Decimals"):
|
||||
self.string = DraftGui.displayExternal(a,obj.ViewObject.Decimals,'Angle',su)
|
||||
else:
|
||||
self.string = DraftGui.displayExternal(a,getParam("dimPrecision",2),'Angle',su)
|
||||
self.string = DraftGui.displayExternal(a,None,'Angle',su)
|
||||
if obj.ViewObject.Override:
|
||||
self.string = obj.ViewObject.Override.replace("$dim",\
|
||||
self.string)
|
||||
|
|
|
@ -134,17 +134,22 @@ def makeFormatSpec(decimals=4,dim='Length'):
|
|||
fmtSpec = "%." + str(decimals) + "f " + "??"
|
||||
return fmtSpec
|
||||
|
||||
def displayExternal(internValue,decimals=4,dim='Length',showUnit=True):
|
||||
def displayExternal(internValue,decimals=None,dim='Length',showUnit=True):
|
||||
'''return an internal value (ie mm) Length or Angle converted for display according
|
||||
to Units Schema in use.'''
|
||||
from FreeCAD import Units
|
||||
|
||||
if dim == 'Length':
|
||||
return FreeCAD.Units.Quantity(internValue,FreeCAD.Units.Length).UserString
|
||||
q = FreeCAD.Units.Quantity(internValue,FreeCAD.Units.Length)
|
||||
if (decimals == None) and showunit:
|
||||
return q.UserString
|
||||
conversion = q.getUserPreferred()[1]
|
||||
uom = q.getUserPreferred()[2]
|
||||
elif dim == 'Angle':
|
||||
return FreeCAD.Units.Quantity(internValue,FreeCAD.Units.Angle).UserString
|
||||
else:
|
||||
conversion = 1.0
|
||||
if decimals == None:
|
||||
decimals = 2
|
||||
uom = "??"
|
||||
if not showUnit:
|
||||
uom = ""
|
||||
|
@ -234,7 +239,6 @@ class DraftToolBar:
|
|||
self.mask = None
|
||||
self.alock = False
|
||||
self.angle = None
|
||||
self.DECIMALS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("Decimals",2)
|
||||
self.x = 0
|
||||
self.y = 0
|
||||
self.z = 0
|
||||
|
@ -1528,24 +1532,24 @@ class DraftToolBar:
|
|||
# set widgets
|
||||
if dp:
|
||||
if self.mask in ['y','z']:
|
||||
self.xValue.setText(displayExternal(dp.x,self.DECIMALS,'Length'))
|
||||
self.xValue.setText(displayExternal(dp.x,None,'Length'))
|
||||
else:
|
||||
self.xValue.setText(displayExternal(dp.x,self.DECIMALS,'Length'))
|
||||
self.xValue.setText(displayExternal(dp.x,None,'Length'))
|
||||
if self.mask in ['x','z']:
|
||||
self.yValue.setText(displayExternal(dp.y,self.DECIMALS,'Length'))
|
||||
self.yValue.setText(displayExternal(dp.y,None,'Length'))
|
||||
else:
|
||||
self.yValue.setText(displayExternal(dp.y,self.DECIMALS,'Length'))
|
||||
self.yValue.setText(displayExternal(dp.y,None,'Length'))
|
||||
if self.mask in ['x','y']:
|
||||
self.zValue.setText(displayExternal(dp.z,self.DECIMALS,'Length'))
|
||||
self.zValue.setText(displayExternal(dp.z,None,'Length'))
|
||||
else:
|
||||
self.zValue.setText(displayExternal(dp.z,self.DECIMALS,'Length'))
|
||||
self.zValue.setText(displayExternal(dp.z,None,'Length'))
|
||||
|
||||
# set length and angle
|
||||
if last and dp and plane:
|
||||
self.lengthValue.setText(displayExternal(dp.Length,self.DECIMALS,'Length'))
|
||||
self.lengthValue.setText(displayExternal(dp.Length,None,'Length'))
|
||||
a = math.degrees(-DraftVecUtils.angle(dp,plane.u,plane.axis))
|
||||
if not self.angleLock.isChecked():
|
||||
self.angleValue.setText(displayExternal(a,self.DECIMALS,'Angle'))
|
||||
self.angleValue.setText(displayExternal(a,None,'Angle'))
|
||||
if not mask:
|
||||
# automask
|
||||
if a in [0,180,-180]:
|
||||
|
@ -1706,10 +1710,10 @@ class DraftToolBar:
|
|||
if not isinstance(val, (int, float)): #??some code passes strings or ???
|
||||
t = val
|
||||
elif unit:
|
||||
t= displayExternal(val,self.DECIMALS, unit)
|
||||
t= displayExternal(val,None, unit)
|
||||
else:
|
||||
print("Error: setRadiusValue called for number without Dimension")
|
||||
t = displayExternal(val,self.DECIMALS, None)
|
||||
t = displayExternal(val,None, None)
|
||||
self.radiusValue.setText(t)
|
||||
self.radiusValue.setFocus()
|
||||
|
||||
|
@ -1779,9 +1783,9 @@ class DraftToolBar:
|
|||
def changeLengthValue(self,d):
|
||||
v = FreeCAD.Vector(self.x,self.y,self.z)
|
||||
v = DraftVecUtils.scaleTo(v,d)
|
||||
self.xValue.setText(displayExternal(v.x,self.DECIMALS,'Length'))
|
||||
self.yValue.setText(displayExternal(v.y,self.DECIMALS,'Length'))
|
||||
self.zValue.setText(displayExternal(v.z,self.DECIMALS,'Length'))
|
||||
self.xValue.setText(displayExternal(v.x,None,'Length'))
|
||||
self.yValue.setText(displayExternal(v.y,None,'Length'))
|
||||
self.zValue.setText(displayExternal(v.z,None,'Length'))
|
||||
|
||||
def changeAngleValue(self,d):
|
||||
v = FreeCAD.Vector(self.x,self.y,self.z)
|
||||
|
@ -1789,9 +1793,9 @@ class DraftToolBar:
|
|||
a = math.radians(d)+a
|
||||
v=DraftVecUtils.rotate(v,a,FreeCAD.DraftWorkingPlane.axis)
|
||||
self.angle = v
|
||||
self.xValue.setText(displayExternal(v.x,self.DECIMALS,'Length'))
|
||||
self.yValue.setText(displayExternal(v.y,self.DECIMALS,'Length'))
|
||||
self.zValue.setText(displayExternal(v.z,self.DECIMALS,'Length'))
|
||||
self.xValue.setText(displayExternal(v.x,None,'Length'))
|
||||
self.yValue.setText(displayExternal(v.y,None,'Length'))
|
||||
self.zValue.setText(displayExternal(v.z,None,'Length'))
|
||||
if self.angleLock.isChecked():
|
||||
FreeCADGui.Snapper.setAngle(self.angle)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user