From eff27994e57bc1eb07af8f378d1b85e3b635e194 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 18 Oct 2015 22:36:36 +0200 Subject: [PATCH] + Do not rely on active document but active analysis object --- src/Mod/Fem/FemBeamSection.py | 5 ++--- src/Mod/Fem/FemCommands.py | 2 +- src/Mod/Fem/FemShellThickness.py | 5 ++--- src/Mod/Fem/MechanicalMaterial.py | 13 ++++++++++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Mod/Fem/FemBeamSection.py b/src/Mod/Fem/FemBeamSection.py index 20ad7b477d64..3df09784ccf6 100644 --- a/src/Mod/Fem/FemBeamSection.py +++ b/src/Mod/Fem/FemBeamSection.py @@ -37,7 +37,7 @@ def makeFemBeamSection(width=20.0, height=20.0, name="BeamSection"): '''makeFemBeamSection([width], [height], [name]): creates an beamsection object to define a cross section''' - obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython", name) + obj = FemGui.getActiveAnalysis().Document.addObject("App::FeaturePython", name) _FemBeamSection(obj) obj.Width = width obj.Height = height @@ -57,8 +57,7 @@ def GetResources(self): def Activated(self): FreeCAD.ActiveDocument.openTransaction("Create FemBeamSection") FreeCADGui.addModule("FemBeamSection") - FreeCADGui.doCommand("FemBeamSection.makeFemBeamSection()") - FreeCADGui.doCommand("App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member = App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member + [App.ActiveDocument.ActiveObject]") + FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FemBeamSection.makeFemBeamSection()]") def IsActive(self): if FemGui.getActiveAnalysis(): diff --git a/src/Mod/Fem/FemCommands.py b/src/Mod/Fem/FemCommands.py index 2fdf417a9609..1689df6624f6 100644 --- a/src/Mod/Fem/FemCommands.py +++ b/src/Mod/Fem/FemCommands.py @@ -55,7 +55,7 @@ def IsActive(self): elif self.is_active == 'with_results': active = FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is not None and self.results_present() elif self.is_active == 'with_part_feature': - active = FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is not None and self.part_feature_selected() + active = FemGui.getActiveAnalysis() is not None and FemGui.getActiveAnalysis().Document is FreeCAD.ActiveDocument and self.part_feature_selected() return active def results_present(self): diff --git a/src/Mod/Fem/FemShellThickness.py b/src/Mod/Fem/FemShellThickness.py index f0e2c2c95d9b..11a9b7081b8a 100644 --- a/src/Mod/Fem/FemShellThickness.py +++ b/src/Mod/Fem/FemShellThickness.py @@ -37,7 +37,7 @@ def makeFemShellThickness(thickness=20.0, name="ShellThickness"): '''makeFemShellThickness([thickness], [name]): creates an shellthickness object to define a plate thickness''' - obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython", name) + obj = FemGui.getActiveAnalysis().Document.addObject("App::FeaturePython", name) _FemShellThickness(obj) obj.Thickness = thickness if FreeCAD.GuiUp: @@ -56,8 +56,7 @@ def GetResources(self): def Activated(self): FreeCAD.ActiveDocument.openTransaction("Create FemShellThickness") FreeCADGui.addModule("FemShellThickness") - FreeCADGui.doCommand("FemShellThickness.makeFemShellThickness()") - FreeCADGui.doCommand("App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member = App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member + [App.ActiveDocument.ActiveObject]") + FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FemShellThickness.makeFemShellThickness()]") def IsActive(self): if FemGui.getActiveAnalysis(): diff --git a/src/Mod/Fem/MechanicalMaterial.py b/src/Mod/Fem/MechanicalMaterial.py index e2669d49f47b..5bd2cff06d9a 100644 --- a/src/Mod/Fem/MechanicalMaterial.py +++ b/src/Mod/Fem/MechanicalMaterial.py @@ -60,6 +60,9 @@ def Activated(self): MatObj = i if (not MatObj): + femDoc = FemGui.getActiveAnalysis().Document + if FreeCAD.ActiveDocument is not femDoc: + FreeCADGui.setActiveDocument(femDoc) FreeCAD.ActiveDocument.openTransaction("Create Material") FreeCADGui.addModule("MechanicalMaterial") FreeCADGui.doCommand("MechanicalMaterial.makeMechanicalMaterial('MechanicalMaterial')") @@ -67,6 +70,8 @@ def Activated(self): FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name,0)") # FreeCADGui.doCommand("Fem.makeMaterial()") else: + if FreeCAD.ActiveDocument is not MatObj.Document: + FreeCADGui.setActiveDocument(MatObj.Document) FreeCADGui.doCommand("Gui.activeDocument().setEdit('" + MatObj.Name + "',0)") def IsActive(self): @@ -153,11 +158,13 @@ def __init__(self, obj): def accept(self): self.obj.Material = self.material - FreeCADGui.ActiveDocument.resetEdit() - FreeCAD.ActiveDocument.recompute() + doc = FreeCADGui.getDocument(self.obj.Document) + doc.resetEdit() + doc.Document.recompute() def reject(self): - FreeCADGui.ActiveDocument.resetEdit() + doc = FreeCADGui.getDocument(self.obj.Document) + doc.resetEdit() def goMatWeb(self): import webbrowser