Draft: Added a button to Dimension UI to select existing edges - fixes #1636
This commit is contained in:
parent
4b59ef1586
commit
78f34666b2
|
@ -421,6 +421,7 @@ class DraftToolBar:
|
|||
self.finishButton = self._pushbutton("finishButton", self.layout, icon='Draft_Finish')
|
||||
self.closeButton = self._pushbutton("closeButton", self.layout, icon='Draft_Lock')
|
||||
self.wipeButton = self._pushbutton("wipeButton", self.layout, icon='Draft_Wipe')
|
||||
self.selectButton = self._pushbutton("selectButton", self.layout, icon='view-select')
|
||||
self.xyButton = self._pushbutton("xyButton", self.layout)
|
||||
self.xzButton = self._pushbutton("xzButton", self.layout)
|
||||
self.yzButton = self._pushbutton("yzButton", self.layout)
|
||||
|
@ -469,6 +470,7 @@ class DraftToolBar:
|
|||
QtCore.QObject.connect(self.closeButton,QtCore.SIGNAL("pressed()"),self.closeLine)
|
||||
QtCore.QObject.connect(self.wipeButton,QtCore.SIGNAL("pressed()"),self.wipeLine)
|
||||
QtCore.QObject.connect(self.undoButton,QtCore.SIGNAL("pressed()"),self.undoSegment)
|
||||
QtCore.QObject.connect(self.selectButton,QtCore.SIGNAL("pressed()"),self.selectEdge)
|
||||
QtCore.QObject.connect(self.xyButton,QtCore.SIGNAL("clicked()"),self.selectXY)
|
||||
QtCore.QObject.connect(self.xzButton,QtCore.SIGNAL("clicked()"),self.selectXZ)
|
||||
QtCore.QObject.connect(self.yzButton,QtCore.SIGNAL("clicked()"),self.selectYZ)
|
||||
|
@ -590,6 +592,8 @@ class DraftToolBar:
|
|||
self.closeButton.setToolTip(translate("draft", "Finishes and closes the current line (C)"))
|
||||
self.wipeButton.setText(translate("draft", "&Wipe"))
|
||||
self.wipeButton.setToolTip(translate("draft", "Wipes the existing segments of this line and starts again from the last point (W)"))
|
||||
self.selectButton.setText(translate("draft", "&Select edge"))
|
||||
self.selectButton.setToolTip(translate("draft", "Selects an existing edge to be measured by this dimension (E)"))
|
||||
self.numFacesLabel.setText(translate("draft", "Sides"))
|
||||
self.numFaces.setToolTip(translate("draft", "Number of sides"))
|
||||
self.offsetLabel.setText(translate("draft", "Offset"))
|
||||
|
@ -795,6 +799,7 @@ class DraftToolBar:
|
|||
self.undoButton.hide()
|
||||
self.closeButton.hide()
|
||||
self.wipeButton.hide()
|
||||
self.selectButton.hide()
|
||||
self.xyButton.hide()
|
||||
self.xzButton.hide()
|
||||
self.yzButton.hide()
|
||||
|
@ -1237,6 +1242,11 @@ class DraftToolBar:
|
|||
"wipes existing segments of a line"
|
||||
self.sourceCmd.wipe()
|
||||
|
||||
def selectEdge(self):
|
||||
"allows the dimension command to select an edge"
|
||||
if hasattr(self.sourceCmd,"selectEdge"):
|
||||
self.sourceCmd.selectEdge()
|
||||
|
||||
def selectXY(self):
|
||||
self.sourceCmd.selectHandler("XY")
|
||||
|
||||
|
@ -1278,6 +1288,8 @@ class DraftToolBar:
|
|||
self.toggleContinue()
|
||||
elif txt.endswith("w"):
|
||||
self.wipeLine()
|
||||
elif txt.endswith("e"):
|
||||
self.selectEdge()
|
||||
elif txt.endswith("s"):
|
||||
self.togglesnap()
|
||||
elif txt.endswith("["):
|
||||
|
|
|
@ -1661,6 +1661,7 @@ class Dimension(Creator):
|
|||
if self.ui:
|
||||
self.ui.pointUi(name)
|
||||
self.ui.continueCmd.show()
|
||||
self.ui.selectButton.show()
|
||||
self.altdown = False
|
||||
self.call = self.view.addEventCallback("SoEvent",self.action)
|
||||
self.dimtrack = dimTracker()
|
||||
|
@ -1675,6 +1676,7 @@ class Dimension(Creator):
|
|||
self.point2 = None
|
||||
self.force = None
|
||||
self.info = None
|
||||
self.selectmode = False
|
||||
msg(translate("draft", "Pick first point:\n"))
|
||||
FreeCADGui.draftToolBar.show()
|
||||
|
||||
|
@ -1741,6 +1743,9 @@ class Dimension(Creator):
|
|||
self.node = [self.node[1]]
|
||||
self.link = None
|
||||
|
||||
def selectEdge(self):
|
||||
self.selectmode = not(self.selectmode)
|
||||
|
||||
def action(self,arg):
|
||||
"scene event handler"
|
||||
if arg["Type"] == "SoKeyboardEvent":
|
||||
|
@ -1752,7 +1757,7 @@ class Dimension(Creator):
|
|||
self.point,ctrlPoint,self.info = getPoint(self,arg,noTracker=(len(self.node)>0))
|
||||
if self.arcmode or self.point2:
|
||||
setMod(arg,MODCONSTRAIN,False)
|
||||
if hasMod(arg,MODALT) and (len(self.node)<3):
|
||||
if (hasMod(arg,MODALT) or self.selectmode) and (len(self.node)<3):
|
||||
self.dimtrack.off()
|
||||
if not self.altdown:
|
||||
self.altdown = True
|
||||
|
@ -1837,7 +1842,7 @@ class Dimension(Creator):
|
|||
self.ui.redraw()
|
||||
if (not self.node) and (not self.support):
|
||||
getSupport(arg)
|
||||
if hasMod(arg,MODALT) and (len(self.node)<3):
|
||||
if (hasMod(arg,MODALT) or self.selectmode) and (len(self.node)<3):
|
||||
#print "snapped: ",self.info
|
||||
if self.info:
|
||||
ob = self.doc.getObject(self.info['Object'])
|
||||
|
@ -1888,6 +1893,7 @@ class Dimension(Creator):
|
|||
self.dimtrack.on()
|
||||
else:
|
||||
self.node.append(self.point)
|
||||
self.selectmode = False
|
||||
#print "node",self.node
|
||||
self.dimtrack.update(self.node)
|
||||
if (len(self.node) == 2):
|
||||
|
|
Loading…
Reference in New Issue
Block a user