Skip to content

Commit

Permalink
FEM: make object module, sort methods by name
Browse files Browse the repository at this point in the history
  • Loading branch information
berndhahnebach authored and yorikvanhavre committed Mar 3, 2017
1 parent 8afbd2b commit e9e09a5
Showing 1 changed file with 128 additions and 126 deletions.
254 changes: 128 additions & 126 deletions src/Mod/Fem/ObjectsFem.py
Expand Up @@ -30,134 +30,14 @@
import FreeCAD


########## analysis ##########
########## analysis objects ##########
def makeAnalysis(name="Analysis"):
'''makeAnalysis(name): makes a Fem Analysis object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemAnalysisPython", name)
return obj


########## solvers ##########
def makeSolverCalculix(name="CalculiX"):
'''makeSolverCalculix(name): makes a Calculix solver object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
import PyObjects._FemSolverCalculix
PyObjects._FemSolverCalculix._FemSolverCalculix(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemSolverCalculix
PyGui._ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject)
return obj


def makeSolverZ88(name="Z88"):
'''makeSolverZ88(name): makes a Z88 solver object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
import PyObjects._FemSolverZ88
PyObjects._FemSolverZ88._FemSolverZ88(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemSolverZ88
PyGui._ViewProviderFemSolverZ88._ViewProviderFemSolverZ88(obj.ViewObject)
return obj


########## element geometry definitions ##########
def makeBeamSection(sectiontype='Rectangular', width=10.0, height=25.0, name="BeamSection"):
'''makeBeamSection([width], [height], [name]): creates an beamsection object to define a cross section'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemBeamSection
PyObjects._FemBeamSection._FemBeamSection(obj)
sec_types = PyObjects._FemBeamSection._FemBeamSection.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._ViewProviderFemBeamSection
PyGui._ViewProviderFemBeamSection._ViewProviderFemBeamSection(obj.ViewObject)
return obj


def makeFemFluidSection(name="FluidSection"):
'''makeFemFluidSection([name]): creates an Fluid section object to define 1D flow'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemFluidSection
PyObjects._FemFluidSection._FemFluidSection(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemFluidSection
PyGui._ViewProviderFemFluidSection._ViewProviderFemFluidSection(obj.ViewObject)
return obj


def makeShellThickness(thickness=20.0, name="ShellThickness"):
'''makeShellThickness([thickness], [name]): creates an shellthickness object to define a plate thickness'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemShellThickness
PyObjects._FemShellThickness._FemShellThickness(obj)
obj.Thickness = thickness
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemShellThickness
PyGui._ViewProviderFemShellThickness._ViewProviderFemShellThickness(obj.ViewObject)
return obj


########## materials ##########
def makeMaterialSolid(name="MechanicalSolidMaterial"):
'''makeMaterialSolid(name): makes an FEM Material for solid'''
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
import PyObjects._FemMaterial
PyObjects._FemMaterial._FemMaterial(obj)
obj.Category = 'Solid'
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterial
PyGui._ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# FreeCAD.ActiveDocument.recompute()
return obj


def makeMaterialFluid(name="FluidMaterial"):
'''makeMaterialFluid(name): makes an FEM Material for fluid'''
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
import PyObjects._FemMaterial
PyObjects._FemMaterial._FemMaterial(obj)
obj.Category = 'Fluid'
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterial
PyGui._ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# FreeCAD.ActiveDocument.recompute()
return obj


def makeMaterialMechanicalNonlinear(base_material, name="MechanicalMaterialNonlinear"):
'''makeMaterialMechanicalNonlinear(base_material, [name]): creates an nonlinear material object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemMaterialMechanicalNonlinear
PyObjects._FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear(obj)
obj.LinearBaseMaterial = base_material
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterialMechanicalNonlinear
PyGui._ViewProviderFemMaterialMechanicalNonlinear._ViewProviderFemMaterialMechanicalNonlinear(obj.ViewObject)
return obj


########## results ##########
def makeResultMechanical(name="MechanicalResult"):
'''makeResultMechanical(name): creates an mechanical result object to hold FEM results'''
obj = FreeCAD.ActiveDocument.addObject('Fem::FemResultObjectPython', name)
import PyObjects._FemResultMechanical
PyObjects._FemResultMechanical._FemResultMechanical(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemResultMechanical
PyGui._ViewProviderFemResultMechanical._ViewProviderFemResultMechanical(obj.ViewObject)
return obj


########## constraints ##########
########## constraint objects ##########
def makeConstraintBearing(name="ConstraintBearing"):
'''makeConstraintBearing(name): makes a Fem ConstraintBearing object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintBearing", name)
Expand Down Expand Up @@ -253,13 +133,46 @@ def makeConstraintTransform(name="ConstraintTransform"):
return obj


########## meshes ##########
def makeMeshShapeNetgenObject(name="MeshShapeNetgenObject"):
'''makeMeshShapeNetgenObject(name): makes a Fem MeshShapeNetgenObject object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshShapeNetgenObject", name)
########## material objects ##########
def makeMaterialSolid(name="MechanicalSolidMaterial"):
'''makeMaterialSolid(name): makes an FEM Material for solid'''
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
import PyObjects._FemMaterial
PyObjects._FemMaterial._FemMaterial(obj)
obj.Category = 'Solid'
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterial
PyGui._ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# FreeCAD.ActiveDocument.recompute()
return obj


def makeMaterialFluid(name="FluidMaterial"):
'''makeMaterialFluid(name): makes an FEM Material for fluid'''
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
import PyObjects._FemMaterial
PyObjects._FemMaterial._FemMaterial(obj)
obj.Category = 'Fluid'
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterial
PyGui._ViewProviderFemMaterial._ViewProviderFemMaterial(obj.ViewObject)
# FreeCAD.ActiveDocument.recompute()
return obj


def makeMaterialMechanicalNonlinear(base_material, name="MechanicalMaterialNonlinear"):
'''makeMaterialMechanicalNonlinear(base_material, [name]): creates an nonlinear material object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemMaterialMechanicalNonlinear
PyObjects._FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear(obj)
obj.LinearBaseMaterial = base_material
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemMaterialMechanicalNonlinear
PyGui._ViewProviderFemMaterialMechanicalNonlinear._ViewProviderFemMaterialMechanicalNonlinear(obj.ViewObject)
return obj


########## mesh objects ##########
def makeMeshGmsh(name="FEMMeshGMSH"):
'''makeMeshGmsh(name): makes a GMSH FEM mesh object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObjectPython", name)
Expand Down Expand Up @@ -288,6 +201,12 @@ def makeMeshGroup(base_mesh, use_label=False, name="FEMMeshGroup"):
return obj


def makeMeshShapeNetgenObject(name="MeshShapeNetgenObject"):
'''makeMeshShapeNetgenObject(name): makes a Fem MeshShapeNetgenObject object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshShapeNetgenObject", name)
return obj


def makeMeshRegion(base_mesh, element_length=0.0, name="FEMMeshRegion"):
'''makeMeshRegion([length], [name]): creates a FEM mesh region object to define properties for a regon of a FEM mesh'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
Expand All @@ -305,6 +224,89 @@ def makeMeshRegion(base_mesh, element_length=0.0, name="FEMMeshRegion"):
return obj


########## result objects ##########
def makeResultMechanical(name="MechanicalResult"):
'''makeResultMechanical(name): creates an mechanical result object to hold FEM results'''
obj = FreeCAD.ActiveDocument.addObject('Fem::FemResultObjectPython', name)
import PyObjects._FemResultMechanical
PyObjects._FemResultMechanical._FemResultMechanical(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemResultMechanical
PyGui._ViewProviderFemResultMechanical._ViewProviderFemResultMechanical(obj.ViewObject)
return obj



########## solver objects ##########
def makeSolverCalculix(name="CalculiX"):
'''makeSolverCalculix(name): makes a Calculix solver object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
import PyObjects._FemSolverCalculix
PyObjects._FemSolverCalculix._FemSolverCalculix(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemSolverCalculix
PyGui._ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject)
return obj


def makeSolverZ88(name="Z88"):
'''makeSolverZ88(name): makes a Z88 solver object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
import PyObjects._FemSolverZ88
PyObjects._FemSolverZ88._FemSolverZ88(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemSolverZ88
PyGui._ViewProviderFemSolverZ88._ViewProviderFemSolverZ88(obj.ViewObject)
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 makeBeamSection(sectiontype='Rectangular', width=10.0, height=25.0, name="BeamSection"):
'''makeBeamSection([width], [height], [name]): creates an beamsection object to define a cross section'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemBeamSection
PyObjects._FemBeamSection._FemBeamSection(obj)
sec_types = PyObjects._FemBeamSection._FemBeamSection.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._ViewProviderFemBeamSection
PyGui._ViewProviderFemBeamSection._ViewProviderFemBeamSection(obj.ViewObject)
return obj


def makeFemFluidSection(name="FluidSection"):
'''makeFemFluidSection([name]): creates an Fluid section object to define 1D flow'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemFluidSection
PyObjects._FemFluidSection._FemFluidSection(obj)
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemFluidSection
PyGui._ViewProviderFemFluidSection._ViewProviderFemFluidSection(obj.ViewObject)
return obj


def makeShellThickness(thickness=20.0, name="ShellThickness"):
'''makeShellThickness([thickness], [name]): creates an shellthickness object to define a plate thickness'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
import PyObjects._FemShellThickness
PyObjects._FemShellThickness._FemShellThickness(obj)
obj.Thickness = thickness
if FreeCAD.GuiUp:
import PyGui._ViewProviderFemShellThickness
PyGui._ViewProviderFemShellThickness._ViewProviderFemShellThickness(obj.ViewObject)
return obj


'''
# print supportedTypes
App.newDocument()
Expand Down

0 comments on commit e9e09a5

Please sign in to comment.