FEM: objects module, add doc parameter to creation tools
This commit is contained in:
@@ -31,88 +31,88 @@ import FreeCAD
|
||||
|
||||
|
||||
########## analysis objects ##########
|
||||
def makeAnalysis(name="Analysis"):
|
||||
def makeAnalysis(doc, name="Analysis"):
|
||||
'''makeAnalysis(name): makes a Fem Analysis object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemAnalysisPython", name)
|
||||
obj = doc.addObject("Fem::FemAnalysisPython", name)
|
||||
return obj
|
||||
|
||||
|
||||
########## constraint objects ##########
|
||||
def makeConstraintBearing(name="ConstraintBearing"):
|
||||
def makeConstraintBearing(doc, name="ConstraintBearing"):
|
||||
'''makeConstraintBearing(name): makes a Fem ConstraintBearing object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintBearing", name)
|
||||
obj = doc.addObject("Fem::ConstraintBearing", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintContact(name="ConstraintContact"):
|
||||
def makeConstraintContact(doc, name="ConstraintContact"):
|
||||
'''makeConstraintContact(name): makes a Fem ConstraintContact object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintContact", name)
|
||||
obj = doc.addObject("Fem::ConstraintContact", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintDisplacement(name="ConstraintDisplacement"):
|
||||
def makeConstraintDisplacement(doc, name="ConstraintDisplacement"):
|
||||
'''makeConstraintDisplacement(name): makes a Fem ConstraintDisplacement object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintDisplacement", name)
|
||||
obj = doc.addObject("Fem::ConstraintDisplacement", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintFixed(name="ConstraintFixed"):
|
||||
def makeConstraintFixed(doc, name="ConstraintFixed"):
|
||||
'''makeConstraintFixed(name): makes a Fem ConstraintFixed object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintFixed", name)
|
||||
obj = doc.addObject("Fem::ConstraintFixed", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintFluidBoundary(name="ConstraintFluidBoundary"):
|
||||
def makeConstraintFluidBoundary(doc, name="ConstraintFluidBoundary"):
|
||||
'''makeConstraintFluidBoundary(name): makes a Fem ConstraintForce object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintForce", name)
|
||||
obj = doc.addObject("Fem::ConstraintForce", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintForce(name="ConstraintForce"):
|
||||
def makeConstraintForce(doc, name="ConstraintForce"):
|
||||
'''makeConstraintForce(name): makes a Fem ConstraintForce object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintForce", name)
|
||||
obj = doc.addObject("Fem::ConstraintForce", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintGear(name="ConstraintGear"):
|
||||
def makeConstraintGear(doc, name="ConstraintGear"):
|
||||
'''makeConstraintGear(name): makes a Fem ConstraintGear object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintGear", name)
|
||||
obj = doc.addObject("Fem::ConstraintGear", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintHeatflux(name="ConstraintHeatflux"):
|
||||
def makeConstraintHeatflux(doc, name="ConstraintHeatflux"):
|
||||
'''makeConstraintHeatflux(name): makes a Fem ConstraintHeatflux object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintHeatflux", name)
|
||||
obj = doc.addObject("Fem::ConstraintHeatflux", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintInitialTemperature(name="ConstraintInitialTemperature"):
|
||||
def makeConstraintInitialTemperature(doc, name="ConstraintInitialTemperature"):
|
||||
'''makeConstraintInitialTemperature(name): makes a Fem ConstraintInitialTemperature object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintInitialTemperature", name)
|
||||
obj = doc.addObject("Fem::ConstraintInitialTemperature", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintPlaneRotation(name="ConstraintPlaneRotation"):
|
||||
def makeConstraintPlaneRotation(doc, name="ConstraintPlaneRotation"):
|
||||
'''makeConstraintPlaneRotation(name): makes a Fem ConstraintPlaneRotation object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintPlaneRotation", name)
|
||||
obj = doc.addObject("Fem::ConstraintPlaneRotation", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintPressure(name="ConstraintPressure"):
|
||||
def makeConstraintPressure(doc, name="ConstraintPressure"):
|
||||
'''makeConstraintPressure(name): makes a Fem ConstraintPressure object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintPressure", name)
|
||||
obj = doc.addObject("Fem::ConstraintPressure", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintPulley(name="ConstraintPulley"):
|
||||
def makeConstraintPulley(doc, name="ConstraintPulley"):
|
||||
'''makeConstraintPulley(name): makes a Fem ConstraintPulley object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintPulley", name)
|
||||
obj = doc.addObject("Fem::ConstraintPulley", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintSelfWeight(name="ConstraintSelfWeight"):
|
||||
def makeConstraintSelfWeight(doc, name="ConstraintSelfWeight"):
|
||||
'''makeConstraintSelfWeight([name]): creates an self weight object to define a gravity load'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintPython", name)
|
||||
obj = doc.addObject("Fem::ConstraintPython", name)
|
||||
import PyObjects._FemConstraintSelfWeight
|
||||
PyObjects._FemConstraintSelfWeight._FemConstraintSelfWeight(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -121,22 +121,22 @@ def makeConstraintSelfWeight(name="ConstraintSelfWeight"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintTemperature(name="ConstraintTemperature"):
|
||||
def makeConstraintTemperature(doc, name="ConstraintTemperature"):
|
||||
'''makeConstraintTemperature(name): makes a Fem ConstraintTemperature object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintTemperature", name)
|
||||
obj = doc.addObject("Fem::ConstraintTemperature", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeConstraintTransform(name="ConstraintTransform"):
|
||||
def makeConstraintTransform(doc, name="ConstraintTransform"):
|
||||
'''makeConstraintTransform(name): makes a Fem ConstraintTransform object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::ConstraintTransform", name)
|
||||
obj = doc.addObject("Fem::ConstraintTransform", name)
|
||||
return obj
|
||||
|
||||
|
||||
########## element definition objects ##########
|
||||
def makeElementFluid1D(name="ElementFluid1D"):
|
||||
def makeElementFluid1D(doc, name="ElementFluid1D"):
|
||||
'''makeElementFluid1D([name]): creates an 1D fluid element object to define 1D flow'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemElementFluid1D
|
||||
PyObjects._FemElementFluid1D._FemElementFluid1D(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -145,9 +145,9 @@ def makeElementFluid1D(name="ElementFluid1D"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeElementGeometry1D(sectiontype='Rectangular', width=10.0, height=25.0, name="ElementGeometry1D"):
|
||||
def makeElementGeometry1D(doc, 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)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemElementGeometry1D
|
||||
PyObjects._FemElementGeometry1D._FemElementGeometry1D(obj)
|
||||
sec_types = PyObjects._FemElementGeometry1D._FemElementGeometry1D.known_beam_types
|
||||
@@ -167,9 +167,9 @@ def makeElementGeometry1D(sectiontype='Rectangular', width=10.0, height=25.0, na
|
||||
return obj
|
||||
|
||||
|
||||
def makeElementGeometry2D(thickness=20.0, name="ElementGeometry2D"):
|
||||
def makeElementGeometry2D(doc, 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)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemElementGeometry2D
|
||||
PyObjects._FemElementGeometry2D._FemElementGeometry2D(obj)
|
||||
obj.Thickness = thickness
|
||||
@@ -180,35 +180,35 @@ def makeElementGeometry2D(thickness=20.0, name="ElementGeometry2D"):
|
||||
|
||||
|
||||
########## material objects ##########
|
||||
def makeMaterialSolid(name="MechanicalSolidMaterial"):
|
||||
def makeMaterialSolid(doc, name="MechanicalSolidMaterial"):
|
||||
'''makeMaterialSolid(name): makes an FEM Material for solid'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
|
||||
obj = doc.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()
|
||||
# doc.recompute()
|
||||
return obj
|
||||
|
||||
|
||||
def makeMaterialFluid(name="FluidMaterial"):
|
||||
def makeMaterialFluid(doc, name="FluidMaterial"):
|
||||
'''makeMaterialFluid(name): makes an FEM Material for fluid'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("App::MaterialObjectPython", name)
|
||||
obj = doc.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()
|
||||
# doc.recompute()
|
||||
return obj
|
||||
|
||||
|
||||
def makeMaterialMechanicalNonlinear(base_material, name="MechanicalMaterialNonlinear"):
|
||||
def makeMaterialMechanicalNonlinear(doc, base_material, name="MechanicalMaterialNonlinear"):
|
||||
'''makeMaterialMechanicalNonlinear(base_material, [name]): creates an nonlinear material object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemMaterialMechanicalNonlinear
|
||||
PyObjects._FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear(obj)
|
||||
obj.LinearBaseMaterial = base_material
|
||||
@@ -219,9 +219,9 @@ def makeMaterialMechanicalNonlinear(base_material, name="MechanicalMaterialNonli
|
||||
|
||||
|
||||
########## mesh objects ##########
|
||||
def makeMeshGmsh(name="FEMMeshGMSH"):
|
||||
def makeMeshGmsh(doc, name="FEMMeshGMSH"):
|
||||
'''makeMeshGmsh(name): makes a GMSH FEM mesh object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObjectPython", name)
|
||||
obj = doc.addObject("Fem::FemMeshObjectPython", name)
|
||||
import PyObjects._FemMeshGmsh
|
||||
PyObjects._FemMeshGmsh._FemMeshGmsh(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -230,9 +230,9 @@ def makeMeshGmsh(name="FEMMeshGMSH"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeMeshGroup(base_mesh, use_label=False, name="FEMMeshGroup"):
|
||||
def makeMeshGroup(doc, base_mesh, use_label=False, name="FEMMeshGroup"):
|
||||
'''makeMeshGroup([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 = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemMeshGroup
|
||||
PyObjects._FemMeshGroup._FemMeshGroup(obj)
|
||||
obj.UseLabel = use_label
|
||||
@@ -247,9 +247,9 @@ def makeMeshGroup(base_mesh, use_label=False, name="FEMMeshGroup"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeMeshBoundaryLayer(base_mesh, name="MeshBoundaryLayer"):
|
||||
def makeMeshBoundaryLayer(doc, base_mesh, name="MeshBoundaryLayer"):
|
||||
'''makeMeshBoundaryLayer([length], [name]): creates a FEM mesh BoundaryLayer object to define boundary layer properties'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FeaturePython", name)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemMeshBoundaryLayer
|
||||
PyObjects._FemMeshBoundaryLayer._FemMeshBoundaryLayer(obj)
|
||||
|
||||
@@ -264,15 +264,15 @@ def makeMeshBoundaryLayer(base_mesh, name="MeshBoundaryLayer"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeMeshNetgen(name="FEMMeshNetgen"):
|
||||
def makeMeshNetgen(doc, name="FEMMeshNetgen"):
|
||||
'''makeMeshNetgen(name): makes a Fem MeshShapeNetgenObject object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshShapeNetgenObject", name)
|
||||
obj = doc.addObject("Fem::FemMeshShapeNetgenObject", name)
|
||||
return obj
|
||||
|
||||
|
||||
def makeMeshRegion(base_mesh, element_length=0.0, name="FEMMeshRegion"):
|
||||
def makeMeshRegion(doc, 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)
|
||||
obj = doc.addObject("Fem::FeaturePython", name)
|
||||
import PyObjects._FemMeshRegion
|
||||
PyObjects._FemMeshRegion._FemMeshRegion(obj)
|
||||
obj.CharacteristicLength = element_length
|
||||
@@ -287,9 +287,9 @@ def makeMeshRegion(base_mesh, element_length=0.0, name="FEMMeshRegion"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeMeshResult(name="FEMMeshResult"):
|
||||
def makeMeshResult(doc, name="FEMMeshResult"):
|
||||
'''(name): makes a Fem MeshResult object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObjectPython", name)
|
||||
obj = doc.addObject("Fem::FemMeshObjectPython", name)
|
||||
import PyObjects._FemMeshResult
|
||||
PyObjects._FemMeshResult._FemMeshResult(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -299,9 +299,9 @@ def makeMeshResult(name="FEMMeshResult"):
|
||||
|
||||
|
||||
########## result objects ##########
|
||||
def makeResultMechanical(name="MechanicalResult"):
|
||||
def makeResultMechanical(doc, name="MechanicalResult"):
|
||||
'''makeResultMechanical(name): creates an mechanical result object to hold FEM results'''
|
||||
obj = FreeCAD.ActiveDocument.addObject('Fem::FemResultObjectPython', name)
|
||||
obj = doc.addObject('Fem::FemResultObjectPython', name)
|
||||
import PyObjects._FemResultMechanical
|
||||
PyObjects._FemResultMechanical._FemResultMechanical(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -311,9 +311,9 @@ def makeResultMechanical(name="MechanicalResult"):
|
||||
|
||||
|
||||
########## solver objects ##########
|
||||
def makeSolverCalculix(name="CalculiX"):
|
||||
def makeSolverCalculix(doc, name="CalculiX"):
|
||||
'''makeSolverCalculix(name): makes a Calculix solver object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
|
||||
obj = doc.addObject("Fem::FemSolverObjectPython", name)
|
||||
import PyObjects._FemSolverCalculix
|
||||
PyObjects._FemSolverCalculix._FemSolverCalculix(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -322,9 +322,9 @@ def makeSolverCalculix(name="CalculiX"):
|
||||
return obj
|
||||
|
||||
|
||||
def makeSolverZ88(name="Z88"):
|
||||
def makeSolverZ88(doc, name="Z88"):
|
||||
'''makeSolverZ88(name): makes a Z88 solver object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
|
||||
obj = doc.addObject("Fem::FemSolverObjectPython", name)
|
||||
import PyObjects._FemSolverZ88
|
||||
PyObjects._FemSolverZ88._FemSolverZ88(obj)
|
||||
if FreeCAD.GuiUp:
|
||||
|
||||
@@ -47,14 +47,14 @@ class _CommandFemAnalysis(FemCommands):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Analysis")
|
||||
FreeCADGui.addModule("FemGui")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeAnalysis('Analysis')")
|
||||
FreeCADGui.doCommand("FemGui.setActiveAnalysis(App.activeDocument().ActiveObject)")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeSolverCalculix('CalculiX')")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeAnalysis(FreeCAD.ActiveDocument, 'Analysis')")
|
||||
FreeCADGui.doCommand("FemGui.setActiveAnalysis(FreeCAD.ActiveDocument.ActiveObject)")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument, 'CalculiX')")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FreeCAD.ActiveDocument.ActiveObject]")
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if (len(sel) == 1):
|
||||
if(sel[0].isDerivedFrom("Fem::FemMeshObject")):
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument()." + sel[0].Name + "]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FreeCAD.ActiveDocument." + sel[0].Name + "]")
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
FreeCADGui.addCommand('FEM_Analysis', _CommandFemAnalysis())
|
||||
|
||||
@@ -46,7 +46,7 @@ class _CommandFemConstraintSelfWeight(FemCommands):
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create FemConstraintSelfWeight")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeConstraintSelfWeight()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeConstraintSelfWeight(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_ConstraintSelfWeight', _CommandFemConstraintSelfWeight())
|
||||
|
||||
@@ -47,7 +47,7 @@ class _CommandFemElementFluid1D(FemCommands):
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create FemElementFluid1D")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementFluid1D()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementFluid1D(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_ElementFluid1D', _CommandFemElementFluid1D())
|
||||
|
||||
@@ -46,7 +46,7 @@ class _CommandFemElementGeometry1D(FemCommands):
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create FemElementGeometry1D")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry1D()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry1D(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_ElementGeometry1D', _CommandFemElementGeometry1D())
|
||||
|
||||
@@ -46,7 +46,7 @@ class _CommandFemElementGeometry2D(FemCommands):
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create FemElementGeometry2D")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry2D()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry2D(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_ElementGeometry2D', _CommandFemElementGeometry2D())
|
||||
|
||||
@@ -50,9 +50,9 @@ class _CommandFemMaterialFluid(FemCommands):
|
||||
FreeCADGui.setActiveDocument(femDoc)
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Fluid Material")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMaterialFluid('FluidMaterial')")
|
||||
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)")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMaterialFluid(FreeCAD.ActiveDocument, 'FluidMaterial')")
|
||||
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member = FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member + [App.ActiveDocument.ActiveObject]")
|
||||
FreeCADGui.doCommand("FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_MaterialFluid', _CommandFemMaterialFluid())
|
||||
|
||||
@@ -56,8 +56,8 @@ class _CommandFemMaterialMechanicalNonlinear(FemCommands):
|
||||
allow_nonlinear_material = False
|
||||
break
|
||||
if allow_nonlinear_material:
|
||||
string_lin_mat_obj = "App.ActiveDocument.getObject('" + lin_mat_obj.Name + "')"
|
||||
command_to_run = "FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeMaterialMechanicalNonlinear(" + string_lin_mat_obj + ")]"
|
||||
string_lin_mat_obj = "FreeCAD.ActiveDocument.getObject('" + lin_mat_obj.Name + "')"
|
||||
command_to_run = "FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeMaterialMechanicalNonlinear(FreeCAD.ActiveDocument, " + string_lin_mat_obj + ")]"
|
||||
FreeCAD.ActiveDocument.openTransaction("Create FemMaterialMechanicalNonlinear")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand(command_to_run)
|
||||
|
||||
@@ -50,9 +50,9 @@ class _CommandFemMaterialSolid(FemCommands):
|
||||
FreeCADGui.setActiveDocument(femDoc)
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Solid Material")
|
||||
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)")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMaterialSolid(FreeCAD.ActiveDocument, 'SolidMaterial')")
|
||||
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member = FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member + [FreeCAD.ActiveDocument.ActiveObject]")
|
||||
FreeCADGui.doCommand("FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_MaterialSolid', _CommandFemMaterialSolid())
|
||||
|
||||
@@ -50,7 +50,7 @@ class _CommandFemMeshBoundaryLayer(FemCommands):
|
||||
if (len(sel) == 1):
|
||||
sobj = sel[0]
|
||||
if len(sel) == 1 and hasattr(sobj, "Proxy") and sobj.Proxy.Type == "FemMeshGmsh":
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshBoundaryLayer(App.ActiveDocument." + sobj.Name + ")")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshBoundaryLayer(FreeCAD.ActiveDocument, FreeCAD.ActiveDocument." + sobj.Name + ")")
|
||||
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
|
||||
@@ -52,12 +52,12 @@ class _CommandFemMeshGmshFromShape(FemCommands):
|
||||
mesh_obj_name = 'FEMMeshGMSH'
|
||||
# mesh_obj_name = sel[0].Name + "_Mesh" # if requested by some people add Preference for this
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshGmsh('" + mesh_obj_name + "')")
|
||||
FreeCADGui.doCommand("App.ActiveDocument.ActiveObject.Part = App.ActiveDocument." + sel[0].Name)
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshGmsh(FreeCAD.ActiveDocument, '" + mesh_obj_name + "')")
|
||||
FreeCADGui.doCommand("FreeCAD.ActiveDocument.ActiveObject.Part = FreeCAD.ActiveDocument." + sel[0].Name)
|
||||
if FemGui.getActiveAnalysis():
|
||||
FreeCADGui.addModule("FemGui")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.ActiveDocument.ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.ActiveDocument.setEdit(App.ActiveDocument.ActiveObject.Name)")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FreeCAD.ActiveDocument.ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")
|
||||
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class _CommandFemMeshGroup(FemCommands):
|
||||
if (len(sel) == 1):
|
||||
sobj = sel[0]
|
||||
if len(sel) == 1 and hasattr(sobj, "Proxy") and sobj.Proxy.Type == "FemMeshGmsh":
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshGroup(App.ActiveDocument." + sobj.Name + ")")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshGroup(FreeCAD.ActiveDocument, FreeCAD.ActiveDocument." + sobj.Name + ")")
|
||||
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class _CommandFemMeshRegion(FemCommands):
|
||||
if (len(sel) == 1):
|
||||
sobj = sel[0]
|
||||
if len(sel) == 1 and hasattr(sobj, "Proxy") and sobj.Proxy.Type == "FemMeshGmsh":
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshRegion(App.ActiveDocument." + sobj.Name + ")")
|
||||
FreeCADGui.doCommand("ObjectsFem.makeMeshRegion(FreeCAD.ActiveDocument, FreeCAD.ActiveDocument." + sobj.Name + ")")
|
||||
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
|
||||
@@ -52,12 +52,12 @@ class _CommandFemSolverCalculix(FemCommands):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create SolverCalculix")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
if has_nonlinear_material_obj:
|
||||
FreeCADGui.doCommand("solver = ObjectsFem.makeSolverCalculix()")
|
||||
FreeCADGui.doCommand("solver = ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument)")
|
||||
FreeCADGui.doCommand("solver.GeometricalNonlinearity = 'nonlinear'")
|
||||
FreeCADGui.doCommand("solver.MaterialNonlinearity = 'nonlinear'")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [solver]")
|
||||
else:
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverCalculix()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_SolverCalculix', _CommandFemSolverCalculix())
|
||||
|
||||
@@ -46,7 +46,7 @@ class _CommandFemSolverZ88(FemCommands):
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create SolverZ88")
|
||||
FreeCADGui.addModule("ObjectsFem")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverZ88()]")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverZ88(FreeCAD.ActiveDocument)]")
|
||||
|
||||
|
||||
FreeCADGui.addCommand('FEM_SolverZ88', _CommandFemSolverZ88())
|
||||
|
||||
@@ -384,11 +384,11 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
fcc_print('--------------- Start of FEM tests ---------------')
|
||||
box = self.active_doc.addObject("Part::Box", "Box")
|
||||
fcc_print('Checking FEM new analysis...')
|
||||
analysis = ObjectsFem.makeAnalysis('Analysis')
|
||||
analysis = ObjectsFem.makeAnalysis(self.active_doc, 'Analysis')
|
||||
self.assertTrue(analysis, "FemTest of new analysis failed")
|
||||
|
||||
fcc_print('Checking FEM new solver...')
|
||||
solver_object = ObjectsFem.makeSolverCalculix('CalculiX')
|
||||
solver_object = ObjectsFem.makeSolverCalculix(self.active_doc, 'CalculiX')
|
||||
solver_object.GeometricalNonlinearity = 'linear'
|
||||
solver_object.ThermoMechSteadyState = False
|
||||
solver_object.MatrixSolverType = 'default'
|
||||
@@ -400,7 +400,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
analysis.Member = analysis.Member + [solver_object]
|
||||
|
||||
fcc_print('Checking FEM new material...')
|
||||
new_material_object = ObjectsFem.makeMaterialSolid('MechanicalMaterial')
|
||||
new_material_object = ObjectsFem.makeMaterialSolid(self.active_doc, 'MechanicalMaterial')
|
||||
mat = new_material_object.Material
|
||||
mat['Name'] = "Steel-Generic"
|
||||
mat['YoungsModulus'] = "200000 MPa"
|
||||
@@ -558,11 +558,11 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
box.Width = 25.4
|
||||
box.Length = 203.2
|
||||
fcc_print('Checking FEM new analysis...')
|
||||
analysis = ObjectsFem.makeAnalysis('Analysis')
|
||||
analysis = ObjectsFem.makeAnalysis(self.active_doc, 'Analysis')
|
||||
self.assertTrue(analysis, "FemTest of new analysis failed")
|
||||
|
||||
fcc_print('Checking FEM new solver...')
|
||||
solver_object = ObjectsFem.makeSolverCalculix('CalculiX')
|
||||
solver_object = ObjectsFem.makeSolverCalculix(self.active_doc, 'CalculiX')
|
||||
solver_object.AnalysisType = 'thermomech'
|
||||
solver_object.GeometricalNonlinearity = 'linear'
|
||||
solver_object.ThermoMechSteadyState = True
|
||||
@@ -573,7 +573,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
analysis.Member = analysis.Member + [solver_object]
|
||||
|
||||
fcc_print('Checking FEM new material...')
|
||||
new_material_object = ObjectsFem.makeMaterialSolid('MechanicalMaterial')
|
||||
new_material_object = ObjectsFem.makeMaterialSolid(self.active_doc, 'MechanicalMaterial')
|
||||
mat = new_material_object.Material
|
||||
mat['Name'] = "Steel-Generic"
|
||||
mat['YoungsModulus'] = "200000 MPa"
|
||||
@@ -712,11 +712,11 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
points = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27]
|
||||
line = Draft.makeWire(points, closed=False, face=False, support=None)
|
||||
fcc_print('Checking FEM new analysis...')
|
||||
analysis = ObjectsFem.makeAnalysis('Analysis')
|
||||
analysis = ObjectsFem.makeAnalysis(self.active_doc, 'Analysis')
|
||||
self.assertTrue(analysis, "FemTest of new analysis failed")
|
||||
|
||||
fcc_print('Checking FEM new solver...')
|
||||
solver_object = ObjectsFem.makeSolverCalculix('CalculiX')
|
||||
solver_object = ObjectsFem.makeSolverCalculix(self.active_doc, 'CalculiX')
|
||||
solver_object.AnalysisType = 'thermomech'
|
||||
solver_object.GeometricalNonlinearity = 'linear'
|
||||
solver_object.ThermoMechSteadyState = True
|
||||
@@ -727,7 +727,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
analysis.Member = analysis.Member + [solver_object]
|
||||
|
||||
fcc_print('Checking FEM new material...')
|
||||
new_material_object = ObjectsFem.makeMaterialFluid('FluidMaterial')
|
||||
new_material_object = ObjectsFem.makeMaterialFluid(self.active_doc, 'FluidMaterial')
|
||||
mat = new_material_object.Material
|
||||
mat['Name'] = "Water"
|
||||
mat['Density'] = "998 kg/m^3"
|
||||
|
||||
@@ -72,7 +72,7 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
|
||||
analysis_object = analysis
|
||||
|
||||
mesh = importToolsFem.make_femmesh(m)
|
||||
result_mesh_object = ObjectsFem.makeMeshResult('Result_mesh')
|
||||
result_mesh_object = ObjectsFem.makeMeshResult(FreeCAD.ActiveDocument, 'Result_mesh')
|
||||
result_mesh_object.FemMesh = mesh
|
||||
|
||||
positions = []
|
||||
@@ -97,7 +97,7 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
|
||||
else:
|
||||
results_name = result_name_prefix + 'results'
|
||||
|
||||
results = ObjectsFem.makeResultMechanical(results_name)
|
||||
results = ObjectsFem.makeResultMechanical(FreeCAD.ActiveDocument, results_name)
|
||||
results.Mesh = result_mesh_object
|
||||
results = importToolsFem.fill_femresult_mechanical(results, result_set, span)
|
||||
if analysis:
|
||||
|
||||
@@ -82,7 +82,7 @@ def importVTK(filename, analysis=None, result_name_prefix=None):
|
||||
|
||||
# if properties can be added in FemVTKTools importCfdResult(), this file can be used for CFD workbench
|
||||
results_name = result_name_prefix + 'results'
|
||||
result_obj = ObjectsFem.makeResultMechanical(results_name)
|
||||
result_obj = ObjectsFem.makeResultMechanical(FreeCAD.ActiveDocument, results_name)
|
||||
Fem.readResult(filename, result_obj.Name) # readResult always creates a new femmesh named ResultMesh
|
||||
|
||||
# workaround for the DisplacementLengths (They should have been calculated by Fem.readResult)
|
||||
|
||||
@@ -86,7 +86,7 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None):
|
||||
mesh_file = filename.replace('o2', 'i1')
|
||||
mesh_data = importZ88Mesh.read_z88_mesh(mesh_file)
|
||||
femmesh = importToolsFem.make_femmesh(mesh_data)
|
||||
result_mesh_object = ObjectsFem.makeMeshResult('Result_mesh')
|
||||
result_mesh_object = ObjectsFem.makeMeshResult(FreeCAD.ActiveDocument, 'Result_mesh')
|
||||
result_mesh_object.FemMesh = femmesh
|
||||
else:
|
||||
FreeCAD.Console.PrintError('Z88 mesh file z88i1.txt not found!')
|
||||
@@ -95,7 +95,7 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None):
|
||||
for result_set in disp_read['Results']:
|
||||
results_name = result_name_prefix + 'results'
|
||||
|
||||
results = ObjectsFem.makeResultMechanical(results_name)
|
||||
results = ObjectsFem.makeResultMechanical(FreeCAD.ActiveDocument, results_name)
|
||||
results.Mesh = result_mesh_object
|
||||
results = importToolsFem.fill_femresult_mechanical(results, result_set, 0)
|
||||
if analysis:
|
||||
|
||||
Reference in New Issue
Block a user