From de9b534366c43e20e939ef361eb739aecb093365 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Mon, 20 Feb 2017 17:58:59 +0100 Subject: [PATCH] FEM: material object, move make def into make objects FEM module --- src/Mod/Fem/App/CMakeLists.txt | 1 - src/Mod/Fem/CMakeLists.txt | 1 - src/Mod/Fem/FemMaterial.py | 60 ---------------------------- src/Mod/Fem/ObjectsFem.py | 27 +++++++++++++ src/Mod/Fem/TestFem.py | 5 +-- src/Mod/Fem/_CommandMaterialSolid.py | 4 +- 6 files changed, 31 insertions(+), 67 deletions(-) delete mode 100644 src/Mod/Fem/FemMaterial.py diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 5d66dc2a51ee..82ddcb669b1c 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -134,7 +134,6 @@ SET(FemScripts_SRCS FemTools.py FemToolsCcx.py FemToolsZ88.py - FemMaterial.py FemSelectionObserver.py ObjectsFem.py TestFem.py diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index be67e72e5177..196541f526fe 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -87,7 +87,6 @@ INSTALL( _ViewProviderFemConstraintSelfWeight.py _CommandConstraintSelfWeight.py - FemMaterial.py _FemMaterial.py _ViewProviderFemMaterial.py _CommandMaterialSolid.py diff --git a/src/Mod/Fem/FemMaterial.py b/src/Mod/Fem/FemMaterial.py deleted file mode 100644 index 3d84440e856a..000000000000 --- a/src/Mod/Fem/FemMaterial.py +++ /dev/null @@ -1,60 +0,0 @@ -# *************************************************************************** -# * * -# * Copyright (c) 2013 - Juergen Riegel * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -__title__ = "FemMaterial" -__author__ = "Juergen Riegel, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" - -## \addtogroup FEM -# @{ - -import FreeCAD -import _FemMaterial - - -def makeSolidMaterial(name): - '''makeSolidMaterial(name): makes an FEM Material for solid - ''' - obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name) - _FemMaterial._FemMaterial(obj) - obj.Category = 'Solid' - if FreeCAD.GuiUp: - import _ViewProviderFemMaterial - _ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject) - # FreeCAD.ActiveDocument.recompute() - return obj - - -def makeFluidMaterial(name): - '''makeFluidMaterial(name): makes an FEM Material for fluid - ''' - obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name) - _FemMaterial._FemMaterial(obj) - obj.Category = 'Fluid' - if FreeCAD.GuiUp: - import _ViewProviderFemMaterial - _ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject) - # FreeCAD.ActiveDocument.recompute() - return obj - -makeFemMaterial = makeSolidMaterial # alias to be compatible for FemTest.py -# @} diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 52e5f301630d..85e9327f5e93 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -95,6 +95,33 @@ def makeShellThickness(thickness=20.0, name="ShellThickness"): return obj +########## materials ########## +def makeMaterialSolid(name): + '''makeMaterialSolid(name): makes an FEM Material for solid''' + obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name) + import _FemMaterial + _FemMaterial._FemMaterial(obj) + obj.Category = 'Solid' + if FreeCAD.GuiUp: + import _ViewProviderFemMaterial + _ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject) + # FreeCAD.ActiveDocument.recompute() + return obj + + +def makeMaterialFluid(name): + '''makeMaterialFluid(name): makes an FEM Material for fluid''' + obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name) + import _FemMaterial + _FemMaterial._FemMaterial(obj) + obj.Category = 'Fluid' + if FreeCAD.GuiUp: + import _ViewProviderFemMaterial + _ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject) + # FreeCAD.ActiveDocument.recompute() + return obj + + ########## results ########## def makeMechanicalResult(name="MechanicalResult"): '''makeMechanicalResult(name): creates an mechanical object result to hold FEM results''' diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 4e58ff8f62b9..0ecc256151d8 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -28,7 +28,6 @@ import FemToolsCcx import FreeCAD import ObjectsFem -import FemMaterial import csv import tempfile import unittest @@ -114,7 +113,7 @@ def create_new_mesh(self): self.active_doc.recompute() def create_new_material(self): - self.new_material_object = FemMaterial.makeFemMaterial('MechanicalMaterial') + self.new_material_object = ObjectsFem.makeMaterialSolid('MechanicalMaterial') mat = self.new_material_object.Material mat['Name'] = "Steel-Generic" mat['YoungsModulus'] = "200000 MPa" @@ -335,7 +334,7 @@ def create_new_mesh(self): self.active_doc.recompute() def create_new_material(self): - self.new_material_object = FemMaterial.makeFemMaterial('MechanicalMaterial') + self.new_material_object = ObjectsFem.makeMaterialSolid('MechanicalMaterial') mat = self.new_material_object.Material mat['Name'] = "Steel-Generic" mat['YoungsModulus'] = "200000 MPa" diff --git a/src/Mod/Fem/_CommandMaterialSolid.py b/src/Mod/Fem/_CommandMaterialSolid.py index d32628f5226f..c251d5585be4 100644 --- a/src/Mod/Fem/_CommandMaterialSolid.py +++ b/src/Mod/Fem/_CommandMaterialSolid.py @@ -49,8 +49,8 @@ def Activated(self): if FreeCAD.ActiveDocument is not femDoc: FreeCADGui.setActiveDocument(femDoc) FreeCAD.ActiveDocument.openTransaction("Create Solid Material") - FreeCADGui.addModule("FemMaterial") - FreeCADGui.doCommand("FemMaterial.makeSolidMaterial('SolidMaterial')") + FreeCADGui.addModule("ObjectsFem") + FreeCADGui.doCommand("ObjectsFem.makeMaterialSolid('SolidMaterial')") FreeCADGui.doCommand("App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member = App.activeDocument()." + FemGui.getActiveAnalysis().Name + ".Member + [App.ActiveDocument.ActiveObject]") FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)")