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
|
import FreeCAD
|
||||||
|
|
||||||
|
|
||||||
########## analysis ##########
|
########## analysis objects ##########
|
||||||
def makeAnalysis(name="Analysis"):
|
def makeAnalysis(name="Analysis"):
|
||||||
'''makeAnalysis(name): makes a Fem Analysis object'''
|
'''makeAnalysis(name): makes a Fem Analysis object'''
|
||||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemAnalysisPython", name)
|
obj = FreeCAD.ActiveDocument.addObject("Fem::FemAnalysisPython", name)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
########## solvers ##########
|
########## constraint 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 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 ##########
|
|
||||||
def makeConstraintBearing(name="ConstraintBearing"):
|
def makeConstraintBearing(name="ConstraintBearing"):
|
||||||
'''makeConstraintBearing(name): makes a Fem ConstraintBearing object'''
|
'''makeConstraintBearing(name): makes a Fem ConstraintBearing object'''
|
||||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintBearing", name)
|
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintBearing", name)
|
||||||
|
@ -253,13 +133,46 @@ def makeConstraintTransform(name="ConstraintTransform"):
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
########## meshes ##########
|
########## material objects ##########
|
||||||
def makeMeshShapeNetgenObject(name="MeshShapeNetgenObject"):
|
def makeMaterialSolid(name="MechanicalSolidMaterial"):
|
||||||
'''makeMeshShapeNetgenObject(name): makes a Fem MeshShapeNetgenObject object'''
|
'''makeMaterialSolid(name): makes an FEM Material for solid'''
|
||||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshShapeNetgenObject", name)
|
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
|
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"):
|
def makeMeshGmsh(name="FEMMeshGMSH"):
|
||||||
'''makeMeshGmsh(name): makes a GMSH FEM mesh object'''
|
'''makeMeshGmsh(name): makes a GMSH FEM mesh object'''
|
||||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObjectPython", name)
|
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObjectPython", name)
|
||||||
|
@ -288,6 +201,12 @@ def makeMeshGroup(base_mesh, use_label=False, name="FEMMeshGroup"):
|
||||||
return obj
|
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"):
|
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'''
|
'''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)
|
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
|
||||||
|
@ -305,6 +224,89 @@ def makeMeshRegion(base_mesh, element_length=0.0, name="FEMMeshRegion"):
|
||||||
return obj
|
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
|
# print supportedTypes
|
||||||
App.newDocument()
|
App.newDocument()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user