Finalizing Python interface bindings for Fem.

This commit is contained in:
Ian 'z0r0' Abreu
2025-08-31 15:27:21 -04:00
parent 283e60d1d2
commit e8ea685e1b
21 changed files with 29 additions and 874 deletions

View File

@@ -49,12 +49,11 @@ else()
endif()
generate_from_xml(FemMeshPy)
generate_from_py_(FemMeshPy)
generate_from_py(FemMesh)
SET(Python_SRCS
FemMeshPy.xml
FemMesh.pyi
FemMeshPyImp.cpp
HypothesisPy.cpp
HypothesisPy.h
@@ -64,24 +63,19 @@ SET(Python_SRCS
if(BUILD_FEM_VTK)
SET(Python_SRCS
${Python_SRCS}
FemPostObjectPy.xml
FemPostObject.pyi
FemPostObjectPyImp.cpp
FemPostPipelinePy.xml
FemPostPipeline.pyi
FemPostPipelinePyImp.cpp
FemPostFilterPy.xml
FemPostFilter.pyi
FemPostFilterPyImp.cpp
FemPostBranchFilterPy.xml
FemPostBranchFilter.pyi
FemPostBranchFilterPyImp.cpp
)
generate_from_xml(FemPostObjectPy)
generate_from_xml(FemPostPipelinePy)
generate_from_xml(FemPostFilterPy)
generate_from_xml(FemPostBranchFilterPy)
generate_from_py_(FemPostObjectPy)
generate_from_py_(FemPostPipelinePy)
generate_from_py_(FemPostFilterPy)
generate_from_py_(FemPostBranchFilterPy)
generate_from_py(FemPostObject)
generate_from_py(FemPostPipeline)
generate_from_py(FemPostFilter)
generate_from_py(FemPostBranchFilter)
endif(BUILD_FEM_VTK)
SOURCE_GROUP("Python" FILES ${Python_SRCS})

View File

@@ -5,17 +5,13 @@ from Base.Metadata import constmethod, export
from App.ComplexGeoData import ComplexGeoData
@export(
Father="ComplexGeoDataPy",
Name="FemMeshPy",
Twin="FemMesh",
TwinPointer="FemMesh",
Include="Mod/Fem/App/FemMesh.h",
Namespace="Fem",
FatherInclude="App/ComplexGeoDataPy.h",
FatherNamespace="Data",
Constructor=True,
)
class FemMeshPy(ComplexGeoData):
class FemMesh(ComplexGeoData):
"""
FemMesh class
"""

View File

@@ -1,391 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="ComplexGeoDataPy"
Name="FemMeshPy"
Twin="FemMesh"
TwinPointer="FemMesh"
Include="Mod/Fem/App/FemMesh.h"
Namespace="Fem"
FatherInclude="App/ComplexGeoDataPy.h"
FatherNamespace="Data"
Constructor="true">
<Documentation>
<Author Licence="LGPL" Name="Juergen Riegel" EMail="Juergen.Riegel@web.de" />
<UserDocu>FemMesh class</UserDocu>
</Documentation>
<Methode Name="setShape">
<Documentation>
<UserDocu>Set the Part shape to mesh</UserDocu>
</Documentation>
</Methode>
<Methode Name="compute">
<Documentation>
<UserDocu>Update the internal mesh structure</UserDocu>
</Documentation>
</Methode>
<Methode Name="addHypothesis">
<Documentation>
<UserDocu>Add hypothesis</UserDocu>
</Documentation>
</Methode>
<Methode Name="setStandardHypotheses">
<Documentation>
<UserDocu>Set some standard hypotheses for the whole shape</UserDocu>
</Documentation>
</Methode>
<Methode Name="addNode">
<Documentation>
<UserDocu>Add a node by setting (x,y,z).</UserDocu>
</Documentation>
</Methode>
<Methode Name="addEdge">
<Documentation>
<UserDocu>Add an edge by setting two node indices.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addEdgeList">
<Documentation>
<UserDocu>Add list of edges by list of node indices and list of nodes per edge.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addFace">
<Documentation>
<UserDocu>Add a face by setting three node indices.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addFaceList">
<Documentation>
<UserDocu>Add list of faces by list of node indices and list of nodes per face.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addQuad">
<Documentation>
<UserDocu>Add a quad by setting four node indices.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addVolume">
<Documentation>
<UserDocu>Add a volume by setting an arbitrary number of node indices.</UserDocu>
</Documentation>
</Methode>
<Methode Name="addVolumeList">
<Documentation>
<UserDocu>Add list of volumes by list of node indices and list of nodes per volume.</UserDocu>
</Documentation>
</Methode>
<Methode Name="read">
<Documentation>
<UserDocu>Read in a various FEM mesh file formats.
read(file.endingToExportTo)
supported formats: DAT, INP, MED, STL, UNV, VTK, Z88</UserDocu>
</Documentation>
</Methode>
<Methode Name="write" Const="true">
<Documentation>
<UserDocu>Write out various FEM mesh file formats.
write(file.endingToExportTo)
supported formats: BDF, DAT, INP, MED, STL, UNV, VTK, Z88
</UserDocu>
</Documentation>
</Methode>
<Methode Name="writeABAQUS" Const="true" Keyword="true">
<Documentation>
<UserDocu>Write out as ABAQUS inp
writeABAQUS(file, int elemParam, bool groupParam, str volVariant, str faceVariant, str edgeVariant)
elemParam:
0: All elements
1: Highest elements only
2: FEM elements only (only edges not belonging to faces and faces not belonging to volumes)
groupParam:
True: Write group data
False: Do not write group data
volVariant: Volume elements
"standard": Tetra4 -> C3D4, Penta6 -> C3D6, Hexa8 -> C3D8, Tetra10 -> C3D10, Penta15 -> C3D15, Hexa20 -> C3D20
"reduced": Hexa8 -> C3D8R, Hexa20 -> C3D20R
"incompatible": Hexa8 -> C3D8I
"modified": Tetra10 -> C3D10T
"fluid": Tetra4 -> F3D4, Penta6 -> F3D6, Hexa8 -> F3D8
faceVariant: Face elements
"shell": Tria3 -> S3, Quad4 -> S4, Tria6 -> S6, Quad8 -> S8
"shell reduced": Tria3 -> S3, Quad4 -> S4R, Tria6 -> S6, Quad8 -> S8R
"membrane": Tria3 -> M3D3, Quad4 -> M3D4, Tria6 -> M3D6, Quad8 -> M3D8
"membrane reduced": Tria3 -> M3D3, Quad4 -> M3D4R, Tria6 -> M3D6, Quad8 -> M3D8R
"stress": Tria3 -> CPS3, Quad4 -> CPS4, Tria6 -> CPS6, Quad8 -> CPS8
"stress reduced": Tria3 -> CPS3, Quad4 -> CPS4R, Tria6 -> CPS6, Quad8 -> CPS8R
"strain": Tria3 -> CPE3, Quad4 -> CPE4, Tria6 -> CPE6, Quad8 -> CPE8
"strain reduced": Tria3 -> CPE3, Quad4 -> CPE4R, Tria6 -> CPE6, Quad8 -> CPE8R
"axisymmetric": Tria3 -> CAX3, Quad4 -> CAX4, Tria6 -> CAX6, Quad8 -> CAX8
"axisymmetric reduced": Tria3 -> CAX3, Quad4 -> CAX4R, Tria6 -> CAX6, Quad8 -> CAX8R
edgeVariant: Edge elements
"beam": Seg2 -> B31, Seg3 -> B32
"beam reduced": Seg2 -> B31R, Seg3 -> B32R
"truss": Seg2 -> T3D2, eg3 -> T3D3
"network": Seg3 -> D
Elements are selected according to CalculiX availability.
For example if volume variant "modified" is selected, Tetra10 mesh
elements are assigned to C3D10T and remain elements uses "standard".
Axisymmetric, plane strain and plane stress elements expect nodes in the plane z=0.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setTransform">
<Documentation>
<UserDocu>Use a Placement object to perform a translation or rotation</UserDocu>
</Documentation>
</Methode>
<Methode Name="copy" Const="true">
<Documentation>
<UserDocu>Make a copy of this FEM mesh.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getFacesByFace" Const="true">
<Documentation>
<UserDocu>Return a list of face IDs which belong to a TopoFace</UserDocu>
</Documentation>
</Methode>
<Methode Name="getEdgesByEdge" Const="true">
<Documentation>
<UserDocu>Return a list of edge IDs which belong to a TopoEdge</UserDocu>
</Documentation>
</Methode>
<Methode Name="getVolumesByFace" Const="true">
<Documentation>
<UserDocu>Return a dict of volume IDs and face IDs which belong to a TopoFace</UserDocu>
</Documentation>
</Methode>
<Methode Name="getccxVolumesByFace" Const="true">
<Documentation>
<UserDocu>Return a dict of volume IDs and ccx face numbers which belong to a TopoFace</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodeById" Const="true">
<Documentation>
<UserDocu>Get the node position vector by a Node-ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodesBySolid" Const="true">
<Documentation>
<UserDocu>Return a list of node IDs which belong to a TopoSolid</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodesByFace" Const="true">
<Documentation>
<UserDocu>Return a list of node IDs which belong to a TopoFace</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodesByEdge" Const="true">
<Documentation>
<UserDocu>Return a list of node IDs which belong to a TopoEdge</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodesByVertex" Const="true">
<Documentation>
<UserDocu>Return a list of node IDs which belong to a TopoVertex</UserDocu>
</Documentation>
</Methode>
<Methode Name="getElementNodes" Const="true">
<Documentation>
<UserDocu>Return a tuple of node IDs to a given element ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getNodeElements" Const="true">
<Documentation>
<UserDocu>Return a tuple of specific element IDs associated to a given node ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getGroupName" Const="true">
<Documentation>
<UserDocu>Return a string of group name to a given group ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getGroupElementType" Const="true">
<Documentation>
<UserDocu>Return a string of group element type to a given group ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getGroupElements" Const="true">
<Documentation>
<UserDocu>Return a tuple of ElementIDs to a given group ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="addGroup" Const="true">
<Documentation>
<UserDocu>Add a group to mesh with specific name and type
addGroup(name, typestring, [id])
name: string
typestring: "All", "Node", "Edge", "Face", "Volume", "0DElement", "Ball"
id: int
Optional id is used to force specific id for group, but does
not work, yet.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="addGroupElements" Const="true">
<Documentation>
<UserDocu>Add a tuple of ElementIDs to a given group ID
addGroupElements(groupid, list_of_elements)
groupid: int
list_of_elements: list of int
Notice that the elements have to be in the mesh.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="removeGroup" Const="true">
<Documentation>
<UserDocu>Remove a group with a given group ID
removeGroup(groupid)
groupid: int
Returns boolean.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="getElementType" Const="true">
<Documentation>
<UserDocu>Return the element type of a given ID</UserDocu>
</Documentation>
</Methode>
<Methode Name="getIdByElementType" Const="true">
<Documentation>
<UserDocu>Return a tuple of IDs to a given element type</UserDocu>
</Documentation>
</Methode>
<Attribute Name="Nodes" ReadOnly="true">
<Documentation>
<UserDocu>Dictionary of Nodes by ID (int ID:Vector())</UserDocu>
</Documentation>
<Parameter Name="Nodes" Type="Dict"/>
</Attribute>
<Attribute Name="NodeCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of nodes in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="NodeCount" Type="Long"/>
</Attribute>
<Attribute Name="Edges" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of edge IDs</UserDocu>
</Documentation>
<Parameter Name="Edges" Type="Tuple"/>
</Attribute>
<Attribute Name="EdgesOnly" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of edge IDs which does not belong to any face (and thus not belong to any volume too)</UserDocu>
</Documentation>
<Parameter Name="EdgesOnly" Type="Tuple"/>
</Attribute>
<Attribute Name="EdgeCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of edges in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="EdgeCount" Type="Long"/>
</Attribute>
<Attribute Name="Faces" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of face IDs</UserDocu>
</Documentation>
<Parameter Name="Faces" Type="Tuple"/>
</Attribute>
<Attribute Name="FacesOnly" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of face IDs which does not belong to any volume</UserDocu>
</Documentation>
<Parameter Name="FacesOnly" Type="Tuple"/>
</Attribute>
<Attribute Name="FaceCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Faces in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="FaceCount" Type="Long"/>
</Attribute>
<Attribute Name="TriangleCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Triangles in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="TriangleCount" Type="Long"/>
</Attribute>
<Attribute Name="QuadrangleCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Quadrangles in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="QuadrangleCount" Type="Long"/>
</Attribute>
<Attribute Name="PolygonCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Quadrangles in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="PolygonCount" Type="Long"/>
</Attribute>
<Attribute Name="Volumes" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of volume IDs</UserDocu>
</Documentation>
<Parameter Name="Volumes" Type="Tuple"/>
</Attribute>
<Attribute Name="VolumeCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Volumes in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="VolumeCount" Type="Long"/>
</Attribute>
<Attribute Name="TetraCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Tetras in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="TetraCount" Type="Long"/>
</Attribute>
<Attribute Name="HexaCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Hexas in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="HexaCount" Type="Long"/>
</Attribute>
<Attribute Name="PyramidCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Pyramids in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="PyramidCount" Type="Long"/>
</Attribute>
<Attribute Name="PrismCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Prisms in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="PrismCount" Type="Long"/>
</Attribute>
<Attribute Name="PolyhedronCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Polyhedrons in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="PolyhedronCount" Type="Long"/>
</Attribute>
<Attribute Name="SubMeshCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of SubMeshs in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="SubMeshCount" Type="Long"/>
</Attribute>
<Attribute Name="GroupCount" ReadOnly="true">
<Documentation>
<UserDocu>Number of Groups in the Mesh.</UserDocu>
</Documentation>
<Parameter Name="GroupCount" Type="Long"/>
</Attribute>
<Attribute Name="Groups" ReadOnly="true">
<Documentation>
<UserDocu>Tuple of Group IDs.</UserDocu>
</Documentation>
<Parameter Name="Groups" Type="Tuple"/>
</Attribute>
<Attribute Name="Volume" ReadOnly="true">
<Documentation>
<UserDocu>Volume of the mesh.</UserDocu>
</Documentation>
<Parameter Name="Volume" Type="Object"/>
</Attribute>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,12 @@ from Base.Metadata import export
from Fem.FemPostFilter import FemPostFilter
@export(
Father="FemPostFilterPy",
Name="FemPostBranchFilterPy",
Twin="FemPostBranchFilter",
TwinPointer="FemPostBranchFilter",
Include="Mod/Fem/App/FemPostBranchFilter.h",
Namespace="Fem",
FatherInclude="Mod/Fem/App/FemPostFilterPy.h",
FatherNamespace="Fem",
)
class FemPostBranchFilterPy(FemPostFilter):
class FemPostBranchFilter(FemPostFilter):
"""
The FemPostBranch class.
"""

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="FemPostFilterPy"
Name="FemPostBranchFilterPy"
Twin="FemPostBranchFilter"
TwinPointer="FemPostBranchFilter"
Include="Mod/Fem/App/FemPostBranchFilter.h"
Namespace="Fem"
FatherInclude="Mod/Fem/App/FemPostFilterPy.h"
FatherNamespace="Fem">
<Documentation>
<Author Licence="LGPL" Name="Stefan Tröger" EMail="stefantroeger@gmx.net" />
<UserDocu>The FemPostBranch class.</UserDocu>
</Documentation>
<Methode Name="getFilter">
<Documentation>
<UserDocu>Returns all filters, that this pipeline uses (non recursive, result does not contain branch child filters)</UserDocu>
</Documentation>
</Methode>
<Methode Name="recomputeChildren">
<Documentation>
<UserDocu>Recomputes all children of the pipeline</UserDocu>
</Documentation>
</Methode>
<Methode Name="getLastPostObject">
<Documentation>
<UserDocu>Get the last post-processing object</UserDocu>
</Documentation>
</Methode>
<Methode Name="holdsPostObject">
<Documentation>
<UserDocu>Check if this pipeline holds a given post-processing object</UserDocu>
</Documentation>
</Methode>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,12 @@ from Base.Metadata import export
from Fem.FemPostObject import FemPostObject
@export(
Father="FemPostObjectPy",
Name="FemPostFilterPy",
Twin="FemPostFilter",
TwinPointer="FemPostFilter",
Include="Mod/Fem/App/FemPostFilter.h",
Namespace="Fem",
FatherInclude="Mod/Fem/App/FemPostObjectPy.h",
FatherNamespace="Fem",
)
class FemPostFilterPy(FemPostObject):
class FemPostFilter(FemPostObject):
"""
The FemPostFilter class.
"""

View File

@@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="FemPostObjectPy"
Name="FemPostFilterPy"
Twin="FemPostFilter"
TwinPointer="FemPostFilter"
Include="Mod/Fem/App/FemPostFilter.h"
Namespace="Fem"
FatherInclude="Mod/Fem/App/FemPostObjectPy.h"
FatherNamespace="Fem">
<Documentation>
<Author Licence="LGPL" Name="Stefan Tröger" EMail="stefantroeger@gmx.net" />
<UserDocu>The FemPostFilter class.</UserDocu>
</Documentation>
<Methode Name="addFilterPipeline">
<Documentation>
<UserDocu>Registers a new vtk filter pipeline for data processing. Arguments are (name, source algorithm, target algorithm).</UserDocu>
</Documentation>
</Methode>
<Methode Name="setActiveFilterPipeline">
<Documentation>
<UserDocu>Sets the filter pipeline that shall be used for data processing. Argument is the name of the filter pipeline to activate.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getParentPostGroup">
<Documentation>
<UserDocu>Returns the postprocessing group the filter is in (e.g. a pipeline or branch object). None is returned if not in any.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getInputData">
<Documentation>
<UserDocu>
Returns the dataset available at the filter's input.
Note: Can lead to a full recompute of the whole pipeline, hence best to call this only in "execute", where the user expects long calculation cycles.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="getInputVectorFields">
<Documentation>
<UserDocu>
Returns the names of all vector fields available on this filter's input.
Note: Can lead to a full recompute of the whole pipeline, hence best to call this only in "execute", where the user expects long calculation cycles.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="getInputScalarFields">
<Documentation>
<UserDocu>
Returns the names of all scalar fields available on this filter's input.
Note: Can lead to a full recompute of the whole pipeline, hence best to call this only in "execute", where the user expects long calculation cycles.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="getOutputAlgorithm">
<Documentation>
<UserDocu>
Returns the filters vtk algorithm currently used as output (the one generating the Data field). Note that the output algorithm may change depending on filter settings.
</UserDocu>
</Documentation>
</Methode>"
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,12 @@ from Base.Metadata import export
from App.GeoFeature import GeoFeature
@export(
Father="GeoFeaturePy",
Name="FemPostObjectPy",
Twin="FemPostObject",
TwinPointer="FemPostObject",
Include="Mod/Fem/App/FemPostObject.h",
Namespace="Fem",
FatherInclude="App/GeoFeaturePy.h",
FatherNamespace="App",
FatherInclude="App/GeoFeaturePy.h",
)
class FemPostObjectPy(GeoFeature):
class FemPostObject(GeoFeature):
"""
The FemPostObject class.
"""

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="GeoFeaturePy"
Name="FemPostObjectPy"
Twin="FemPostObject"
TwinPointer="FemPostObject"
Include="Mod/Fem/App/FemPostObject.h"
Namespace="Fem"
FatherInclude="App/GeoFeaturePy.h"
FatherNamespace="App">
<Documentation>
<Author Licence="LGPL" Name="Mario Passaglia" EMail="mpassaglia@cbc.uba.ar" />
<UserDocu>The FemPostObject class.</UserDocu>
</Documentation>
<Methode Name="writeVTK">
<Documentation>
<UserDocu>writeVTK(filename) -> None
Write data object to VTK file.
filename: str
File extension is automatically detected from data type.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getDataSet">
<Documentation>
<UserDocu>getDataset() -> vtkDataSet
Returns the current output dataset. For normal filters this is equal to the objects Data property output. However, a pipelines Data property could store multiple frames, and hence Data can be of type vtkCompositeData, which is not a vtkDataset. To simplify implementations this function always returns a vtkDataSet, and for a pipeline it will be the dataset of the currently selected frame. Note that the returned value could be None, if no data is set at all.</UserDocu>
</Documentation>
</Methode>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,12 @@ from Base.Metadata import export
from Fem.FemPostObject import FemPostObject
@export(
Father="FemPostObjectPy",
Name="FemPostPipelinePy",
Twin="FemPostPipeline",
TwinPointer="FemPostPipeline",
Include="Mod/Fem/App/FemPostPipeline.h",
Namespace="Fem",
FatherInclude="Mod/Fem/App/FemPostObjectPy.h",
FatherNamespace="Fem",
)
class FemPostPipelinePy(FemPostObject):
class FemPostPipeline(FemPostObject):
"""
The FemPostPipeline class.
"""

View File

@@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="FemPostObjectPy"
Name="FemPostPipelinePy"
Twin="FemPostPipeline"
TwinPointer="FemPostPipeline"
Include="Mod/Fem/App/FemPostPipeline.h"
Namespace="Fem"
FatherInclude="Mod/Fem/App/FemPostObjectPy.h"
FatherNamespace="Fem">
<Documentation>
<Author Licence="LGPL" Name="Stefan Tröger" EMail="stefantroeger@gmx.net" />
<UserDocu>The FemPostPipeline class.</UserDocu>
</Documentation>
<Methode Name="read">
<Documentation>
<UserDocu>
read(filepath)
read([filepaths], [values], unit, frame_type)
Reads in a single vtk file or creates a multiframe result by reading in multiple result files. If multiframe is wanted, 4 argumenhts are needed:
1. List of result files each being one frame,
2. List of values valid for each frame (e.g. [s] if time data),
3. the unit of the value as FreeCAD.Units.Unit,
4. the Description of the frame type
</UserDocu>
</Documentation>
</Methode>
<Methode Name="scale">
<Documentation>
<UserDocu>scale the points of a loaded vtk file</UserDocu>
</Documentation>
</Methode>
<Methode Name="load">
<Documentation>
<UserDocu>
load(result_object)
load([result_objects], [values], unit, frame_type)
Load a single result object or create a multiframe result by loading multiple result frames. If multiframe is wanted, 4 argumenhts are needed:
1. List of result files each being one frame,
2. List of values valid for each frame (e.g. [s] if time data),
3. the unit of the value as FreeCAD.Units.Unit,
4. the Description of the frame type
</UserDocu>
</Documentation>
</Methode>
<Methode Name="getFilter">
<Documentation>
<UserDocu>Returns all filters, that this pipeline uses (non recursive, result does not contain branch child filters)</UserDocu>
</Documentation>
</Methode>
<Methode Name="recomputeChildren">
<Documentation>
<UserDocu>Recomputes all children of the pipeline</UserDocu>
</Documentation>
</Methode>
<Methode Name="getLastPostObject">
<Documentation>
<UserDocu>Get the last post-processing object</UserDocu>
</Documentation>
</Methode>
<Methode Name="holdsPostObject">
<Documentation>
<UserDocu>Check if this pipeline holds a given post-processing object</UserDocu>
</Documentation>
</Methode>
<Methode Name="renameArrays">
<Documentation>
<UserDocu>Change name of data arrays</UserDocu>
</Documentation>
</Methode>
<Methode Name="getOutputAlgorithm">
<Documentation>
<UserDocu>
Returns the pipeline vtk algorithm, which generates the data passed to the pipelines filters. Note that the output algorithm may change depending on pipeline settings.
</UserDocu>
</Documentation>
</Methode>"
</PythonExport>
</GenerateModel>

View File

@@ -33,28 +33,23 @@ set(FemGui_LIBS
PartGui
)
generate_from_xml(ViewProviderFemConstraintPy)
generate_from_xml(ViewProviderFemMeshPy)
generate_from_xml(ViewProviderFemPostPipelinePy)
generate_from_xml(ViewProviderFemPostFilterPy)
generate_from_py_(ViewProviderFemConstraintPy)
generate_from_py_(ViewProviderFemMeshPy)
generate_from_py_(ViewProviderFemPostPipelinePy)
generate_from_py_(ViewProviderFemPostFilterPy)
generate_from_py(ViewProviderFemConstraint)
generate_from_py(ViewProviderFemMesh)
generate_from_py(ViewProviderFemPostPipeline)
generate_from_py(ViewProviderFemPostFilter)
SET(Python_SRCS
ViewProviderFemConstraintPy.xml
ViewProviderFemConstraint.pyi
ViewProviderFemConstraintPyImp.cpp
ViewProviderFemMeshPy.xml
ViewProviderFemMesh.pyi
ViewProviderFemMeshPyImp.cpp
)
if(BUILD_FEM_VTK)
set(Python_SRCS
${Python_SRCS}
ViewProviderFemPostPipelinePy.xml
ViewProviderFemPostPipeline.pyi
ViewProviderFemPostPipelinePyImp.cpp
ViewProviderFemPostFilterPy.xml
ViewProviderFemPostFilter.pyi
ViewProviderFemPostFilterPyImp.cpp
)
endif(BUILD_FEM_VTK)

View File

@@ -5,16 +5,10 @@ from Base.Metadata import export
from Gui.ViewProviderGeometryObject import ViewProviderGeometryObject
@export(
Father="ViewProviderGeometryObjectPy",
Name="ViewProviderFemConstraintPy",
Twin="ViewProviderFemConstraint",
TwinPointer="ViewProviderFemConstraint",
Include="Mod/Fem/Gui/ViewProviderFemConstraint.h",
Namespace="FemGui",
FatherInclude="Gui/ViewProviderGeometryObjectPy.h",
FatherNamespace="Gui",
)
class ViewProviderFemConstraintPy(ViewProviderGeometryObject):
class ViewProviderFemConstraint(ViewProviderGeometryObject):
"""
This is the ViewProviderFemConstraint class
"""

View File

@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="ViewProviderGeometryObjectPy"
Name="ViewProviderFemConstraintPy"
Twin="ViewProviderFemConstraint"
TwinPointer="ViewProviderFemConstraint"
Include="Mod/Fem/Gui/ViewProviderFemConstraint.h"
Namespace="FemGui"
FatherInclude="Gui/ViewProviderGeometryObjectPy.h"
FatherNamespace="Gui">
<Documentation>
<Author Licence="LGPL" Name="Mario Passaglia" EMail="mpassaglia@cbc.uba.ar" />
<UserDocu>This is the ViewProviderFemConstraint class</UserDocu>
</Documentation>
<Methode Name="loadSymbol">
<Documentation>
<UserDocu>loadSymbol(filename) -> None
Load constraint symbol from Open Inventor file.
The file structure should be as follows:
A separator containing a separator with the symbol used in
multiple copies at points on the surface and an optional
separator with a symbol excluded from multiple copies.
filename : str
Open Inventor file.</UserDocu>
</Documentation>
</Methode>
<Attribute Name="SymbolNode" ReadOnly="true">
<Documentation>
<UserDocu>A pivy SoSeparator with the nodes of the constraint symbols</UserDocu>
</Documentation>
<Parameter Name="SymbolNode" Type="Object" />
</Attribute>
<Attribute Name="ExtraSymbolNode" ReadOnly="true">
<Documentation>
<UserDocu>A pivy SoSeparator with the nodes of the constraint extra symbols</UserDocu>
</Documentation>
<Parameter Name="ExtraSymbolNode" Type="Object" />
</Attribute>
<Attribute Name="RotateSymbol">
<Documentation>
<UserDocu>Apply rotation on copies of the constraint symbol</UserDocu>
</Documentation>
<Parameter Name="SymbolNode" Type="Boolean" />
</Attribute>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,10 @@ from Base.Metadata import export
from Gui.ViewProviderGeometryObject import ViewProviderGeometryObject
@export(
Father="ViewProviderGeometryObjectPy",
Name="ViewProviderFemMeshPy",
Twin="ViewProviderFemMesh",
TwinPointer="ViewProviderFemMesh",
Include="Mod/Fem/Gui/ViewProviderFemMesh.h",
Namespace="FemGui",
FatherInclude="Gui/ViewProviderGeometryObjectPy.h",
FatherNamespace="Gui",
)
class ViewProviderFemMeshPy(ViewProviderGeometryObject):
class ViewProviderFemMesh(ViewProviderGeometryObject):
"""
ViewProviderFemMesh class
"""

View File

@@ -1,79 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="ViewProviderGeometryObjectPy"
Name="ViewProviderFemMeshPy"
Twin="ViewProviderFemMesh"
TwinPointer="ViewProviderFemMesh"
Include="Mod/Fem/Gui/ViewProviderFemMesh.h"
Namespace="FemGui"
FatherInclude="Gui/ViewProviderGeometryObjectPy.h"
FatherNamespace="Gui"
Constructor="false"
Delete="false">
<Documentation>
<Author Licence="LGPL" Name="Juergen Riegel" EMail="Juergen.Riegel@web.de" />
<UserDocu>ViewProviderFemMesh class</UserDocu>
</Documentation>
<Methode Name="applyDisplacement">
<Documentation>
<UserDocu></UserDocu>
</Documentation>
</Methode>
<Methode Name="resetNodeColor">
<Documentation>
<UserDocu>Reset color set by method setNodeColorByScalars.</UserDocu>
</Documentation>
</Methode>
<Methode Name="resetNodeDisplacement">
<Documentation>
<UserDocu>Reset displacements set by method setNodeDisplacementByVectors.</UserDocu>
</Documentation>
</Methode>
<Methode Name="resetHighlightedNodes">
<Documentation>
<UserDocu>Reset highlighted nodes.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setNodeColorByScalars">
<Documentation>
<UserDocu>Sets mesh node colors using element list and value list.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setNodeDisplacementByVectors">
<Documentation>
<UserDocu></UserDocu>
</Documentation>
</Methode>
<Attribute Name="NodeColor" ReadOnly="false">
<Documentation>
<UserDocu>Postprocessing color of the nodes. The faces between the nodes get interpolated.</UserDocu>
</Documentation>
<Parameter Name="NodeColor" Type="Dict"/>
</Attribute>
<Attribute Name="ElementColor" ReadOnly="false">
<Documentation>
<UserDocu>Postprocessing color of the elements. All faces of the element get the same color.</UserDocu>
</Documentation>
<Parameter Name="ElementColor" Type="Dict"/>
</Attribute>
<Attribute Name="NodeDisplacement" ReadOnly="false">
<Documentation>
<UserDocu>Postprocessing color of the nodes. The faces between the nodes get interpolated.</UserDocu>
</Documentation>
<Parameter Name="NodeDisplacement" Type="Dict"/>
</Attribute>
<Attribute Name="HighlightedNodes" ReadOnly="false">
<Documentation>
<UserDocu>List of nodes which get highlighted.</UserDocu>
</Documentation>
<Parameter Name="HighlightedNodes" Type="List"/>
</Attribute>
<Attribute Name="VisibleElementFaces" ReadOnly="true">
<Documentation>
<UserDocu>List of elements and faces which are actually shown. These are all surface faces of the mesh.</UserDocu>
</Documentation>
<Parameter Name="VisibleElementFaces" Type="List"/>
</Attribute>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,13 @@ from Base.Metadata import export
from Gui.ViewProviderDocumentObject import ViewProviderDocumentObject
@export(
Father="ViewProviderDocumentObjectPy",
Name="ViewProviderFemPostFilterPy",
Twin="ViewProviderFemPostObject",
TwinPointer="ViewProviderFemPostObject",
Include="Mod/Fem/Gui/ViewProviderFemPostObject.h",
Namespace="FemGui",
FatherInclude="Gui/ViewProviderDocumentObjectPy.h",
FatherNamespace="Gui",
)
class ViewProviderFemPostFilterPy(ViewProviderDocumentObject):
class ViewProviderFemPostFilter(ViewProviderDocumentObject):
"""
ViewProviderFemPostPipeline class
"""

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="ViewProviderDocumentObjectPy"
Name="ViewProviderFemPostFilterPy"
Twin="ViewProviderFemPostObject"
TwinPointer="ViewProviderFemPostObject"
Include="Mod/Fem/Gui/ViewProviderFemPostObject.h"
Namespace="FemGui"
FatherInclude="Gui/ViewProviderDocumentObjectPy.h"
FatherNamespace="Gui"
Constructor="false"
Delete="false">
<Documentation>
<Author Licence="LGPL" Name="Stefan Tröger" EMail="stefantroeger@gmx.net" />
<UserDocu>ViewProviderFemPostPipeline class</UserDocu>
</Documentation>
<Methode Name="createDisplayTaskWidget">
<Documentation>
<UserDocu>Returns the display option task panel for a post processing edit task dialog.</UserDocu>
</Documentation>
</Methode>
<Methode Name="createExtractionTaskWidget">
<Documentation>
<UserDocu>Returns the data extraction task panel for a post processing edit task dialog.</UserDocu>
</Documentation>
</Methode>
</PythonExport>
</GenerateModel>

View File

@@ -5,16 +5,10 @@ from Base.Metadata import export
from Gui.ViewProviderDocumentObject import ViewProviderDocumentObject
@export(
Father="ViewProviderDocumentObjectPy",
Name="ViewProviderFemPostPipelinePy",
Twin="ViewProviderFemPostPipeline",
TwinPointer="ViewProviderFemPostPipeline",
Include="Mod/Fem/Gui/ViewProviderFemPostPipeline.h",
Namespace="FemGui",
FatherInclude="Gui/ViewProviderDocumentObjectPy.h",
FatherNamespace="Gui",
)
class ViewProviderFemPostPipelinePy(ViewProviderDocumentObject):
class ViewProviderFemPostPipeline(ViewProviderDocumentObject):
"""
ViewProviderFemPostPipeline class
"""

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="ViewProviderDocumentObjectPy"
Name="ViewProviderFemPostPipelinePy"
Twin="ViewProviderFemPostPipeline"
TwinPointer="ViewProviderFemPostPipeline"
Include="Mod/Fem/Gui/ViewProviderFemPostPipeline.h"
Namespace="FemGui"
FatherInclude="Gui/ViewProviderDocumentObjectPy.h"
FatherNamespace="Gui"
Constructor="false"
Delete="false">
<Documentation>
<Author Licence="LGPL" Name="Uwe Stöhr" EMail="uwestoehr@lyx.org" />
<UserDocu>ViewProviderFemPostPipeline class</UserDocu>
</Documentation>
<Methode Name="transformField">
<Documentation>
<UserDocu>Scales values of given result mesh field by given factor</UserDocu>
</Documentation>
</Methode>
<Methode Name="updateColorBars">
<Documentation>
<UserDocu>Update coloring of pipeline and its childs</UserDocu>
</Documentation>
</Methode>
</PythonExport>
</GenerateModel>

View File

@@ -42,6 +42,7 @@ class TemplateClassPyExport(template.ModelTemplate):
"App",
"Assembly",
"CAM",
"Fem",
"Gui",
"Part",
"PartDesign",