diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 52a8852d8..ebf5f9e8c 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -89,15 +89,15 @@ SET(FemScripts_SRCS SET(FemObjectsScripts_SRCS PyObjects/__init__.py - PyObjects/_FemElementGeometry1D.py PyObjects/_FemConstraintSelfWeight.py PyObjects/_FemElementFluid1D.py + PyObjects/_FemElementGeometry1D.py + PyObjects/_FemElementGeometry2D.py PyObjects/_FemMaterialMechanicalNonlinear.py PyObjects/_FemMeshGmsh.py PyObjects/_FemMeshGroup.py PyObjects/_FemMeshRegion.py PyObjects/_FemResultMechanical.py - PyObjects/_FemElementGeometry2D.py PyObjects/_FemSolverCalculix.py PyObjects/_FemSolverZ88.py PyObjects/_FemMaterial.py @@ -107,9 +107,10 @@ SET(FemGuiScripts_SRCS PyGui/FemCommands.py PyGui/__init__.py PyGui/_CommandFemAnalysis.py - PyGui/_CommandFemElementGeometry1D.py PyGui/_CommandFemConstraintSelfWeight.py PyGui/_CommandFemElementFluid1D.py + PyGui/_CommandFemElementGeometry1D.py + PyGui/_CommandFemElementGeometry2D.py PyGui/_CommandFemMaterialMechanicalNonlinear.py PyGui/_CommandFemMaterialSolid.py PyGui/_CommandFemMaterialFluid.py @@ -122,40 +123,39 @@ SET(FemGuiScripts_SRCS PyGui/_CommandFemMeshRegion.py PyGui/_CommandFemResultShow.py PyGui/_CommandFemResultsPurge.py - PyGui/_CommandFemElementGeometry2D.py PyGui/_CommandFemSolverCalculix.py PyGui/_CommandFemSolverControl.py PyGui/_CommandFemSolverRun.py PyGui/_CommandFemSolverZ88.py - PyGui/_TaskPanelFemElementGeometry1D.py PyGui/_TaskPanelFemElementFluid1D.py + PyGui/_TaskPanelFemElementGeometry1D.py + PyGui/_TaskPanelFemElementGeometry2D.py PyGui/_TaskPanelFemMaterial.py PyGui/_TaskPanelFemMeshGmsh.py PyGui/_TaskPanelFemMeshGroup.py PyGui/_TaskPanelFemMeshRegion.py PyGui/_TaskPanelFemResultShow.py - PyGui/_TaskPanelFemElementGeometry2D.py PyGui/_TaskPanelFemSolverCalculix.py - PyGui/_ViewProviderFemElementGeometry1D.py PyGui/_ViewProviderFemConstraintSelfWeight.py PyGui/_ViewProviderFemElementFluid1D.py + PyGui/_ViewProviderFemElementGeometry1D.py + PyGui/_ViewProviderFemElementGeometry2D.py PyGui/_ViewProviderFemMaterial.py PyGui/_ViewProviderFemMaterialMechanicalNonlinear.py PyGui/_ViewProviderFemMeshGmsh.py PyGui/_ViewProviderFemMeshGroup.py PyGui/_ViewProviderFemMeshRegion.py PyGui/_ViewProviderFemResultMechanical.py - PyGui/_ViewProviderFemElementGeometry2D.py PyGui/_ViewProviderFemSolverCalculix.py PyGui/_ViewProviderFemSolverZ88.py - PyGui/TaskPanelFemElementGeometry1D.ui PyGui/TaskPanelFemElementFluid1D.ui + PyGui/TaskPanelFemElementGeometry1D.ui + PyGui/TaskPanelFemElementGeometry2D.ui PyGui/TaskPanelFemMaterial.ui PyGui/TaskPanelFemMeshGmsh.ui PyGui/TaskPanelFemMeshGroup.ui PyGui/TaskPanelFemMeshRegion.ui PyGui/TaskPanelFemResultShow.ui - PyGui/TaskPanelFemElementGeometry2D.ui PyGui/TaskPanelFemSolverCalculix.ui ) diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 72b68d25e..320e019aa 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -47,15 +47,15 @@ INSTALL( INSTALL( FILES PyObjects/__init__.py - PyObjects/_FemElementGeometry1D.py PyObjects/_FemConstraintSelfWeight.py PyObjects/_FemElementFluid1D.py + PyObjects/_FemElementGeometry1D.py + PyObjects/_FemElementGeometry2D.py PyObjects/_FemMaterialMechanicalNonlinear.py PyObjects/_FemMeshGmsh.py PyObjects/_FemMeshGroup.py PyObjects/_FemMeshRegion.py PyObjects/_FemResultMechanical.py - PyObjects/_FemElementGeometry2D.py PyObjects/_FemSolverCalculix.py PyObjects/_FemSolverZ88.py PyObjects/_FemMaterial.py @@ -68,9 +68,10 @@ INSTALL( PyGui/FemCommands.py PyGui/__init__.py PyGui/_CommandFemAnalysis.py - PyGui/_CommandFemElementGeometry1D.py PyGui/_CommandFemConstraintSelfWeight.py PyGui/_CommandFemElementFluid1D.py + PyGui/_CommandFemElementGeometry1D.py + PyGui/_CommandFemElementGeometry2D.py PyGui/_CommandFemMaterialMechanicalNonlinear.py PyGui/_CommandFemMaterialSolid.py PyGui/_CommandFemMaterialFluid.py @@ -83,40 +84,39 @@ INSTALL( PyGui/_CommandFemMeshRegion.py PyGui/_CommandFemResultShow.py PyGui/_CommandFemResultsPurge.py - PyGui/_CommandFemElementGeometry2D.py PyGui/_CommandFemSolverCalculix.py PyGui/_CommandFemSolverControl.py PyGui/_CommandFemSolverRun.py PyGui/_CommandFemSolverZ88.py - PyGui/_TaskPanelFemElementGeometry1D.py PyGui/_TaskPanelFemElementFluid1D.py + PyGui/_TaskPanelFemElementGeometry1D.py + PyGui/_TaskPanelFemElementGeometry2D.py PyGui/_TaskPanelFemMaterial.py PyGui/_TaskPanelFemMeshGmsh.py PyGui/_TaskPanelFemMeshGroup.py PyGui/_TaskPanelFemMeshRegion.py PyGui/_TaskPanelFemResultShow.py - PyGui/_TaskPanelFemElementGeometry2D.py PyGui/_TaskPanelFemSolverCalculix.py - PyGui/_ViewProviderFemElementGeometry1D.py PyGui/_ViewProviderFemConstraintSelfWeight.py PyGui/_ViewProviderFemElementFluid1D.py + PyGui/_ViewProviderFemElementGeometry1D.py + PyGui/_ViewProviderFemElementGeometry2D.py PyGui/_ViewProviderFemMaterial.py PyGui/_ViewProviderFemMaterialMechanicalNonlinear.py PyGui/_ViewProviderFemMeshGmsh.py PyGui/_ViewProviderFemMeshGroup.py PyGui/_ViewProviderFemMeshRegion.py PyGui/_ViewProviderFemResultMechanical.py - PyGui/_ViewProviderFemElementGeometry2D.py PyGui/_ViewProviderFemSolverCalculix.py PyGui/_ViewProviderFemSolverZ88.py - PyGui/TaskPanelFemElementGeometry1D.ui PyGui/TaskPanelFemElementFluid1D.ui + PyGui/TaskPanelFemElementGeometry1D.ui + PyGui/TaskPanelFemElementGeometry2D.ui PyGui/TaskPanelFemMaterial.ui PyGui/TaskPanelFemMeshGmsh.ui PyGui/TaskPanelFemMeshGroup.ui PyGui/TaskPanelFemMeshRegion.ui PyGui/TaskPanelFemResultShow.ui - PyGui/TaskPanelFemElementGeometry2D.ui PyGui/TaskPanelFemSolverCalculix.ui DESTINATION Mod/Fem/PyGui diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index bee272cee..71e043cb0 100644 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -47,6 +47,9 @@ class FemWorkbench (Workbench): import PyGui._CommandFemAnalysis import PyGui._CommandFemConstraintSelfWeight + import PyGui._CommandFemElementFluid1D + import PyGui._CommandFemElementGeometry1D + import PyGui._CommandFemElementGeometry2D import PyGui._CommandFemMaterialSolid import PyGui._CommandFemMaterialFluid import PyGui._CommandFemMaterialMechanicalNonlinear @@ -64,10 +67,6 @@ class FemWorkbench (Workbench): import PyGui._CommandFemSolverRun import PyGui._CommandFemSolverZ88 - import PyGui._CommandFemElementGeometry2D - import PyGui._CommandFemElementGeometry1D - import PyGui._CommandFemElementFluid1D - def GetClassName(self): return "FemGui::Workbench" diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 2cddde639..219485609 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -133,6 +133,52 @@ def makeConstraintTransform(name="ConstraintTransform"): return obj +########## element definition objects ########## +def makeElementFluid1D(name="ElementFluid1D"): + '''makeElementFluid1D([name]): creates an 1D fluid element object to define 1D flow''' + obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) + import PyObjects._FemElementFluid1D + PyObjects._FemElementFluid1D._FemElementFluid1D(obj) + if FreeCAD.GuiUp: + import PyGui._ViewProviderFemElementFluid1D + PyGui._ViewProviderFemElementFluid1D._ViewProviderFemElementFluid1D(obj.ViewObject) + return obj + + +def makeElementGeometry1D(sectiontype='Rectangular', width=10.0, height=25.0, name="ElementGeometry1D"): + '''makeElementGeometry1D([width], [height], [name]): creates an 1D geometry element object to define a cross section''' + obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) + import PyObjects._FemElementGeometry1D + PyObjects._FemElementGeometry1D._FemElementGeometry1D(obj) + sec_types = PyObjects._FemElementGeometry1D._FemElementGeometry1D.known_beam_types + if sectiontype not in sec_types: + FreeCAD.Console.PrintError("Section type is not known. Set to " + sec_types[0] + " \n") + obj.SectionType = sec_types[0] + else: + obj.SectionType = sectiontype + obj.RectWidth = width + obj.RectHeight = height + obj.CircDiameter = height + obj.PipeDiameter = height + obj.PipeThickness = width + if FreeCAD.GuiUp: + import PyGui._ViewProviderFemElementGeometry1D + PyGui._ViewProviderFemElementGeometry1D._ViewProviderFemElementGeometry1D(obj.ViewObject) + return obj + + +def makeElementGeometry2D(thickness=20.0, name="ElementGeometry2D"): + '''makeElementGeometry2D([thickness], [name]): creates an 2D geometry element object to define a plate thickness''' + obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) + import PyObjects._FemElementGeometry2D + PyObjects._FemElementGeometry2D._FemElementGeometry2D(obj) + obj.Thickness = thickness + if FreeCAD.GuiUp: + import PyGui._ViewProviderFemElementGeometry2D + PyGui._ViewProviderFemElementGeometry2D._ViewProviderFemElementGeometry2D(obj.ViewObject) + return obj + + ########## material objects ########## def makeMaterialSolid(name="MechanicalSolidMaterial"): '''makeMaterialSolid(name): makes an FEM Material for solid''' @@ -259,53 +305,6 @@ def makeSolverZ88(name="Z88"): return obj -########## element geometry definition objects ########## -# TODO object type not yet in object name, see forum topic http://forum.freecadweb.org/viewtopic.php?f=18&t=21029 -def makeElementGeometry1D(sectiontype='Rectangular', width=10.0, height=25.0, name="ElementGeometry1D"): - '''makeElementGeometry1D([width], [height], [name]): creates an 1D geometry element object to define a cross section''' - obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) - import PyObjects._FemElementGeometry1D - PyObjects._FemElementGeometry1D._FemElementGeometry1D(obj) - sec_types = PyObjects._FemElementGeometry1D._FemElementGeometry1D.known_beam_types - if sectiontype not in sec_types: - FreeCAD.Console.PrintError("Section type is not known. Set to " + sec_types[0] + " \n") - obj.SectionType = sec_types[0] - else: - obj.SectionType = sectiontype - obj.RectWidth = width - obj.RectHeight = height - obj.CircDiameter = height - obj.PipeDiameter = height - obj.PipeThickness = width - if FreeCAD.GuiUp: - import PyGui._ViewProviderFemElementGeometry1D - PyGui._ViewProviderFemElementGeometry1D._ViewProviderFemElementGeometry1D(obj.ViewObject) - return obj - - -def makeElementFluid1D(name="ElementFluid1D"): - '''makeElementFluid1D([name]): creates an 1D fluid element object to define 1D flow''' - obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) - import PyObjects._FemElementFluid1D - PyObjects._FemElementFluid1D._FemElementFluid1D(obj) - if FreeCAD.GuiUp: - import PyGui._ViewProviderFemElementFluid1D - PyGui._ViewProviderFemElementFluid1D._ViewProviderFemElementFluid1D(obj.ViewObject) - return obj - - -def makeElementGeometry2D(thickness=20.0, name="ElementGeometry2D"): - '''makeElementGeometry2D([thickness], [name]): creates an 2D geometry element object to define a plate thickness''' - obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name) - import PyObjects._FemElementGeometry2D - PyObjects._FemElementGeometry2D._FemElementGeometry2D(obj) - obj.Thickness = thickness - if FreeCAD.GuiUp: - import PyGui._ViewProviderFemElementGeometry2D - PyGui._ViewProviderFemElementGeometry2D._ViewProviderFemElementGeometry2D(obj.ViewObject) - return obj - - ''' # print supportedTypes App.newDocument()