Draft: fixes in line/wire creation by angle
This commit is contained in:
parent
ac4d466443
commit
fa6046ea19
|
@ -239,6 +239,7 @@ class DraftToolBar:
|
|||
self.fillmode = Draft.getParam("fillmode",False)
|
||||
self.mask = None
|
||||
self.alock = False
|
||||
self.angle = None
|
||||
self.DECIMALS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("Decimals",2)
|
||||
self.FORMAT = makeFormatSpec(self.DECIMALS,'Length')
|
||||
self.AFORMAT = makeFormatSpec(self.DECIMALS,'Angle')
|
||||
|
@ -760,6 +761,7 @@ class DraftToolBar:
|
|||
self.labelangle.show()
|
||||
self.angleValue.show()
|
||||
self.angleLock.show()
|
||||
self.angleLock.setChecked(False)
|
||||
|
||||
def hideXYZ(self):
|
||||
''' turn off all the point entry widgets '''
|
||||
|
@ -1503,7 +1505,8 @@ class DraftToolBar:
|
|||
if last and dp and plane:
|
||||
self.lengthValue.setText(displayExternal(dp.Length,self.DECIMALS,'Length'))
|
||||
a = math.degrees(-DraftVecUtils.angle(dp,plane.u,plane.axis))
|
||||
self.angleValue.setText(displayExternal(a,self.DECIMALS,'Angle'))
|
||||
if not self.angleLock.isChecked():
|
||||
self.angleValue.setText(displayExternal(a,self.DECIMALS,'Angle'))
|
||||
if not mask:
|
||||
# automask
|
||||
if a in [0,180,-180]:
|
||||
|
@ -1740,30 +1743,32 @@ class DraftToolBar:
|
|||
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.setFocus()
|
||||
self.xValue.selectAll()
|
||||
|
||||
def changeAngleValue(self,d):
|
||||
v = FreeCAD.Vector(self.x,self.y,self.z)
|
||||
a = DraftVecUtils.angle(v,FreeCAD.DraftWorkingPlane.u,FreeCAD.DraftWorkingPlane.axis)
|
||||
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.setFocus()
|
||||
self.xValue.selectAll()
|
||||
if self.angleLock.isChecked():
|
||||
FreeCADGui.Snapper.setAngle(self.angle)
|
||||
|
||||
def toggleAngle(self,bool):
|
||||
def toggleAngle(self,b):
|
||||
self.alock = self.angleLock.isChecked()
|
||||
FreeCADGui.Snapper.setAngle()
|
||||
|
||||
|
||||
if b:
|
||||
FreeCADGui.Snapper.setAngle(self.angle)
|
||||
else:
|
||||
FreeCADGui.Snapper.setAngle()
|
||||
self.angle = None
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# TaskView operations
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
|
||||
def setWatchers(self):
|
||||
class DraftCreateWatcher:
|
||||
def __init__(self):
|
||||
|
|
|
@ -897,9 +897,11 @@ class Snapper:
|
|||
if self.trackLine:
|
||||
self.trackLine.off()
|
||||
|
||||
def setAngle(self):
|
||||
def setAngle(self,delta=None):
|
||||
"keeps the current angle"
|
||||
if isinstance(self.mask,FreeCAD.Vector):
|
||||
if delta:
|
||||
self.mask = delta
|
||||
elif isinstance(self.mask,FreeCAD.Vector):
|
||||
self.mask = None
|
||||
elif self.trackLine:
|
||||
if self.trackLine.Visible:
|
||||
|
|
Loading…
Reference in New Issue
Block a user