FEM: make object module, sort methods by name
This commit is contained in:
parent
8afbd2b81e
commit
e9e09a5fa4
|
@ -30,134 +30,14 @@ __url__ = "http://www.freecadweb.org"
|
|||
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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue
Block a user