Draft: Added reference mode to Draft Scale task panel
This commit is contained in:
@@ -2221,9 +2221,12 @@ class ScaleTaskPanel:
|
||||
layout.addWidget(self.isOriginal,7,0,1,2)
|
||||
self.isCopy = QtGui.QRadioButton()
|
||||
layout.addWidget(self.isCopy,8,0,1,2)
|
||||
self.pickrefButton = QtGui.QPushButton()
|
||||
layout.addWidget(self.pickrefButton,9,0,1,2)
|
||||
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("valueChanged(double)"),self.setValue)
|
||||
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("valueChanged(double)"),self.setValue)
|
||||
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("valueChanged(double)"),self.setValue)
|
||||
QtCore.QObject.connect(self.pickrefButton,QtCore.SIGNAL("clicked()"),self.pickRef)
|
||||
self.retranslateUi()
|
||||
|
||||
def setValue(self,val=None):
|
||||
@@ -2245,6 +2248,11 @@ class ScaleTaskPanel:
|
||||
self.isClone.setText(QtGui.QApplication.translate("Draft", "Create a clone", None))
|
||||
self.isOriginal.setText(QtGui.QApplication.translate("Draft", "Modify original", None))
|
||||
self.isCopy.setText(QtGui.QApplication.translate("Draft", "Create a copy", None))
|
||||
self.pickrefButton.setText(QtGui.QApplication.translate("Draft", "Pick from/to points", None))
|
||||
|
||||
def pickRef(self):
|
||||
if self.sourceCmd:
|
||||
self.sourceCmd.pickRef()
|
||||
|
||||
def accept(self):
|
||||
if self.sourceCmd:
|
||||
|
||||
@@ -3601,14 +3601,24 @@ class Scale(Modifier):
|
||||
if self.call: self.view.removeEventCallback("SoEvent",self.call)
|
||||
self.sel = FreeCADGui.Selection.getSelection()
|
||||
self.sel = Draft.getGroupContents(self.sel)
|
||||
self.refs = []
|
||||
self.ui.pointUi(self.name)
|
||||
self.ui.modUi()
|
||||
self.ui.xValue.setFocus()
|
||||
self.ui.xValue.selectAll()
|
||||
self.ghost = ghostTracker(self.sel)
|
||||
self.pickmode = False
|
||||
self.task = None
|
||||
self.call = self.view.addEventCallback("SoEvent",self.action)
|
||||
msg(translate("draft", "Pick base point:")+"\n")
|
||||
|
||||
def pickRef(self):
|
||||
self.pickmode = True
|
||||
if self.node:
|
||||
self.node = self.node[:1] # remove previous picks
|
||||
msg(translate("draft", "Pick reference distance from base point:")+"\n")
|
||||
self.call = self.view.addEventCallback("SoEvent",self.action)
|
||||
|
||||
def finish(self,closed=False,cont=False):
|
||||
Modifier.finish(self)
|
||||
if self.ghost:
|
||||
@@ -3664,22 +3674,36 @@ class Scale(Modifier):
|
||||
elif arg["Type"] == "SoMouseButtonEvent":
|
||||
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
|
||||
if self.point:
|
||||
self.ui.redraw()
|
||||
#self.ui.redraw()
|
||||
self.numericInput(self.point.x,self.point.y,self.point.z)
|
||||
|
||||
def numericInput(self,numx,numy,numz):
|
||||
"this function gets called by the toolbar when a valid base point has been entered"
|
||||
self.point = Vector(numx,numy,numz)
|
||||
self.node.append(self.point)
|
||||
self.ui.offUi()
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent",self.call)
|
||||
task = DraftGui.ScaleTaskPanel()
|
||||
task.sourceCmd = self
|
||||
DraftGui.todo.delay(FreeCADGui.Control.showDialog,task)
|
||||
if self.ghost:
|
||||
self.ghost.on()
|
||||
|
||||
if not self.pickmode:
|
||||
self.ui.offUi()
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent",self.call)
|
||||
self.task = DraftGui.ScaleTaskPanel()
|
||||
self.task.sourceCmd = self
|
||||
DraftGui.todo.delay(FreeCADGui.Control.showDialog,self.task)
|
||||
if self.ghost:
|
||||
self.ghost.on()
|
||||
elif len(self.node) == 2:
|
||||
msg(translate("draft", "Pick new distance from base point:")+"\n")
|
||||
elif len(self.node) == 3:
|
||||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.off()
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent",self.call)
|
||||
d1 = (self.node[1].sub(self.node[0])).Length
|
||||
d2 = (self.node[2].sub(self.node[0])).Length
|
||||
#print d2,"/",d1,"=",d2/d1
|
||||
if hasattr(self,"task"):
|
||||
if self.task:
|
||||
self.task.lock.setChecked(True)
|
||||
self.task.setValue(d2/d1)
|
||||
|
||||
class ToggleConstructionMode():
|
||||
"The Draft_ToggleConstructionMode FreeCAD command definition"
|
||||
|
||||
Reference in New Issue
Block a user