+ allow Draft dimensions to be created on top of selected Measurement objects

git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5025 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
yorikvanhavre 2011-10-14 20:50:41 +00:00
parent 10c5ddb115
commit d8b6c9248d

View File

@ -2229,7 +2229,15 @@ class Dimension(Creator):
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Dimension", "Creates a dimension. CTRL to snap, SHIFT to constrain, ALT to select a segment")}
def Activated(self):
if self.cont: self.finish()
if self.cont:
self.finish()
elif self.hasMeasures:
Creator.Activated(self,"Dimension")
self.dimtrack = dimTracker()
self.arctrack = arcTracker()
self.constraintrack = lineTracker(dotted=True)
self.createOnMeasures()
self.finish()
else:
Creator.Activated(self,"Dimension")
if self.ui:
@ -2251,6 +2259,16 @@ class Dimension(Creator):
msg(translate("draft", "Pick first point:\n"))
FreeCADGui.draftToolBar.show()
def hasMeasures(self):
"checks if only measurements objects are selected"
sel = FreeCADGui.Selection.getSelection()
if not sel:
return False
for o in sel:
if not o.isDerivedFrom("App::MeasureDistance"):
return False
return True
def finish(self,closed=False):
"terminates the operation"
self.cont = None
@ -2261,6 +2279,15 @@ class Dimension(Creator):
self.arctrack.finalize()
self.constraintrack.finalize()
def createOnMeasures(self):
for o in FreeCADGui.Selection.getSelection():
p1 = o.P1
p2 = o.P2
pt = o.ViewObject.RootNode.getChildren()[1].getChildren()[0].getChildren()[0].getChildren()[3]
p3 = Vector(pt.point.getValues()[2].getValue())
self.commit(translate("draft","Create Dimension"),partial(Draft.makeDimension,p1,p2,p3))
self.commit(translate("draft","Delete Measurement"),partial(FreeCAD.ActiveDocument.removeObject,o.Name))
def createObject(self):
"creates an object in the current doc"
if self.angledata: