diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 11d81c4425af..bac4c477c29d 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -726,9 +726,15 @@ def survey(callback=False): FreeCAD.ActiveDocument.removeObject(label) FreeCADGui.Selection.removeObserver(FreeCAD.SurveyObserver) del FreeCAD.SurveyObserver + if FreeCAD.GuiUp: + if hasattr(FreeCADGui,"draftToolBar"): + FreeCADGui.draftToolBar.offUi() else: FreeCAD.SurveyObserver = SurveyObserver(callback=survey) FreeCADGui.Selection.addObserver(FreeCAD.SurveyObserver) + if FreeCAD.GuiUp: + if hasattr(FreeCADGui,"draftToolBar"): + FreeCADGui.draftToolBar.selectUi(callback=survey) else: sel = FreeCADGui.Selection.getSelectionEx() if not sel: @@ -737,6 +743,9 @@ def survey(callback=False): FreeCAD.ActiveDocument.removeObject(label) FreeCADGui.Selection.removeObserver(FreeCAD.SurveyObserver) del FreeCAD.SurveyObserver + if FreeCAD.GuiUp: + if hasattr(FreeCADGui,"draftToolBar"): + FreeCADGui.draftToolBar.offUi() else: if hasattr(FreeCAD,"SurveyObserver"): basesel = FreeCAD.SurveyObserver.selection @@ -780,7 +789,10 @@ def survey(callback=False): for el in o.SubElementNames: e = getattr(o.Object.Shape,el) anno = FreeCAD.ActiveDocument.addObject("App::AnnotationLabel","surveyLabel") - anno.BasePosition = e.CenterOfMass + if "Vertex" in el: + anno.BasePosition = e.Point + else: + anno.BasePosition = e.CenterOfMass FreeCAD.SurveyObserver.labels.append(anno.Name) t = "" if "Face" in el: @@ -791,6 +803,10 @@ def survey(callback=False): t = str(round(e.Length,pr)) anno.LabelText = "l " + t FreeCAD.Console.PrintMessage("Object: " + n + ", Element: " + el + ", Length: " + t + "\n") + elif "Vertex" in el: + t = str(round(e.Z,pr)) + anno.LabelText = "z " + t + FreeCAD.Console.PrintMessage("Object: " + n + ", Element: " + el + ", Zcoord: " + t + "\n") if FreeCAD.GuiUp and t: QtGui.qApp.clipboard().setText(t) diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 81e63668654b..c73babf3fbab 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -786,11 +786,11 @@ def setTitle(self,title,icon="Draft_Draft"): else: self.cmdlabel.setText(title) - def selectUi(self,extra=None): + def selectUi(self,extra=None,callback=None): if not self.taskmode: self.labelx.setText(translate("draft", "Pick Object")) self.labelx.show() - self.makeDumbTask(extra) + self.makeDumbTask(extra,callback) def editUi(self): self.taskUi(translate("draft", "Edit")) @@ -862,15 +862,19 @@ def relocate(self): else: self.layout.setDirection(QtGui.QBoxLayout.LeftToRight) - def makeDumbTask(self,extra=None): + def makeDumbTask(self,extra=None,callback=None): "create a dumb taskdialog to prevent deleting the temp object" class TaskPanel: - def __init__(self,extra=None): + def __init__(self,extra=None,callback=None): if extra: self.form = [extra] def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Cancel) - panel = TaskPanel(extra) + def reject(self): + if callback: + callback() + return True + panel = TaskPanel(extra,callback) FreeCADGui.Control.showDialog(panel) #---------------------------------------------------------------------------