+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# File : smesh.py
+# Author : Francis KLOSS, OCC
+# Module : SMESH
+
"""
\namespace smesh
\brief Module smesh
import StdMeshers
-## import NETGENPlugin module if possible
+# import NETGENPlugin module if possible
noNETGENPlugin = 0
try:
import NETGENPlugin
noNETGENPlugin = 1
pass
-
-## Types of algo
+# Types of algo
REGULAR = 1
PYTHON = 2
GHS3D = 5
FULL_NETGEN = 6
-## MirrorType enumeration
+# MirrorType enumeration
POINT = SMESH_MeshEditor.POINT
AXIS = SMESH_MeshEditor.AXIS
PLANE = SMESH_MeshEditor.PLANE
-## Smooth_Method enumeration
+# Smooth_Method enumeration
LAPLACIAN_SMOOTH = SMESH_MeshEditor.LAPLACIAN_SMOOTH
CENTROIDAL_SMOOTH = SMESH_MeshEditor.CENTROIDAL_SMOOTH
-## Fineness enumeration(for NETGEN)
+# Fineness enumeration(for NETGEN)
VeryCoarse = 0
Coarse = 1
Moderate = 2
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
-## Global functions
+# Global functions
## Gets object name
def GetName(obj):
attr.SetValue(name)
## Returns long value from enumeration
-# Uses for FT_... enumeration
+# Uses for SMESH.FunctorType enumeration
def EnumToLong(theItem):
return theItem._v
return axis
return None
-## From SMESH_Gen interface:
-# ------------------------
+# From SMESH_Gen interface:
+# ------------------------
## Set the current mode
def SetEmbeddedMode( theMode ):
-## Filtering. Auxiliary functions:
-# ------------------------------
+# Filtering. Auxiliary functions:
+# ------------------------------
## Creates an empty criterion
# @return SMESH.Filter.Criterion
if Compare in [FT_LessThan, FT_MoreThan, FT_EqualTo]:
aCriterion.Compare = EnumToLong(Compare)
+ elif Compare == "=" or Compare == "==":
+ aCriterion.Compare = EnumToLong(FT_EqualTo)
+ elif Compare == "<":
+ aCriterion.Compare = EnumToLong(FT_LessThan)
+ elif Compare == ">":
+ aCriterion.Compare = EnumToLong(FT_MoreThan)
else:
aCriterion.Compare = EnumToLong(FT_EqualTo)
aTreshold = Compare
- if CritType in [FT_BelongToGeom, FT_BelongToPlane,
+ if CritType in [FT_BelongToGeom, FT_BelongToPlane, FT_BelongToGenSurface,
FT_BelongToCylinder, FT_LyingOnGeom]:
# Check treshold
if isinstance(aTreshold, geompy.GEOM._objref_GEOM_Object):
print "Error: given parameter is not numerucal functor type."
+## Private method. Print error message if a hypothesis was not assigned.
+def TreatHypoStatus(status, hypName, geomName, isAlgo):
+ if isAlgo:
+ hypType = "algorithm"
+ else:
+ hypType = "hypothesis"
+ pass
+ if status == HYP_UNKNOWN_FATAL :
+ reason = "for unknown reason"
+ elif status == HYP_INCOMPATIBLE :
+ reason = "this hypothesis mismatches algorithm"
+ elif status == HYP_NOTCONFORM :
+ reason = "not conform mesh would be built"
+ elif status == HYP_ALREADY_EXIST :
+ reason = hypType + " of the same dimension already assigned to this shape"
+ elif status == HYP_BAD_DIM :
+ reason = hypType + " mismatches shape"
+ elif status == HYP_CONCURENT :
+ reason = "there are concurrent hypotheses on sub-shapes"
+ elif status == HYP_BAD_SUBSHAPE :
+ reason = "shape is neither the main one, nor its subshape, nor a valid group"
+ elif status == HYP_BAD_GEOMETRY:
+ reason = "geometry mismatches algorithm's expectation"
+ elif status == HYP_HIDDEN_ALGO:
+ reason = "it is hidden by an algorithm of upper dimension generating all-dimensions elements"
+ elif status == HYP_HIDING_ALGO:
+ reason = "it hides algorithm(s) of lower dimension by generating all-dimensions elements"
+ else:
+ return
+ hypName = '"' + hypName + '"'
+ geomName= '"' + geomName+ '"'
+ if status < HYP_UNKNOWN_FATAL:
+ print hypName, "was assigned to", geomName,"but", reason
+ else:
+ print hypName, "was not assigned to",geomName,":", reason
+ pass
+
## Mother class to define algorithm, recommended to don't use directly.
subm = 0
algo = 0
- ## If the algorithm is global, return 0
- # \fn else return the submesh associated to this algorithm.
- #
- # More details.
+ ## If the algorithm is global, return 0; \n
+ # else return the submesh associated to this algorithm.
def GetSubMesh(self):
return self.subm
def GetId(self):
return self.algo.GetId()
- ## Private method. Print error message if a hypothesis was not assigned.
- def TreatHypoStatus(self, status, hypName, geomName, isAlgo):
- if isAlgo:
- hypType = "algorithm"
- else:
- hypType = "hypothesis"
- if status == HYP_UNKNOWN_FATAL :
- reason = "for unknown reason"
- elif status == HYP_INCOMPATIBLE :
- reason = "this hypothesis mismatches algorithm"
- elif status == HYP_NOTCONFORM :
- reason = "not conform mesh would be built"
- elif status == HYP_ALREADY_EXIST :
- reason = hypType + " of the same dimension already assigned to this shape"
- elif status == HYP_BAD_DIM :
- reason = hypType + " mismatches shape"
- elif status == HYP_CONCURENT :
- reason = "there are concurrent hypotheses on sub-shapes"
- elif status == HYP_BAD_SUBSHAPE :
- reason = "shape is neither the main one, nor its subshape, nor a valid group"
- else:
- return
- hypName = '"' + hypName + '"'
- geomName= '"' + geomName+ '"'
- if status < HYP_UNKNOWN_FATAL:
- print hypName, "was assigned to", geomName,"but", reason
- else:
- print hypName, "was not assigned to",geomName,":", reason
- pass
-
## Private method.
def Create(self, mesh, geom, hypo, so="libStdMeshersEngine.so"):
if geom is None:
self.algo = smesh.CreateHypothesis(hypo, so)
SetName(self.algo, name + "/" + hypo)
status = mesh.mesh.AddHypothesis(self.geom, self.algo)
- self.TreatHypoStatus( status, hypo, name, 1 )
+ TreatHypoStatus( status, hypo, name, 1 )
## Private method
def Hypothesis(self, hyp, args=[], so="libStdMeshersEngine.so"):
name = GetName(self.geom)
SetName(hypo, name + "/" + hyp + a)
status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
- self.TreatHypoStatus( status, hyp, name, 0 )
+ TreatHypoStatus( status, hyp, name, 0 )
return hypo
## Class to define a NETGEN-based 2D or 3D algorithm
# that need no discrete boundary (i.e. independent)
#
+# This class is deprecated, only for compatibility!
+#
# More details.
class Mesh_Netgen(Mesh_Algorithm):
else:
hyp = self.Hypothesis("NETGEN_Parameters_2D", [], "libNETGENEngine.so")
return hyp
+
+# Public class: Mesh_Projection1D
+# ------------------------------
+
+## Class to define a projection 1D algorithm
+#
+# More details.
+class Mesh_Projection1D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "Projection_1D")
+
+ ## Define "Source Edge" hypothesis, specifying a meshed edge to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source edge and a target one (where a hipothesis is assigned to)
+ # @param edge to take nodes distribution from
+ # @param mesh to take nodes distribution from (optional)
+ # @param srcV is vertex of \a edge to associate with \a tgtV (optional)
+ # @param tgtV is vertex of \a the edge where the algorithm is assigned,
+ # to associate with \a srcV (optional)
+ def SourceEdge(self, edge, mesh=None, srcV=None, tgtV=None):
+ hyp = self.Hypothesis("ProjectionSource1D")
+ hyp.SetSourceEdge( edge )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV, tgtV )
+ return hyp
+
+
+# Public class: Mesh_Projection2D
+# ------------------------------
+
+## Class to define a projection 2D algorithm
+#
+# More details.
+class Mesh_Projection2D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "Projection_2D")
+
+ ## Define "Source Face" hypothesis, specifying a meshed face to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source face and a target one (where a hipothesis is assigned to)
+ # @param face to take mesh pattern from
+ # @param mesh to take mesh pattern from (optional)
+ # @param srcV1 is vertex of \a face to associate with \a tgtV1 (optional)
+ # @param tgtV1 is vertex of \a the face where the algorithm is assigned,
+ # to associate with \a srcV1 (optional)
+ # @param srcV2 is vertex of \a face to associate with \a tgtV1 (optional)
+ # @param tgtV2 is vertex of \a the face where the algorithm is assigned,
+ # to associate with \a srcV2 (optional)
+ #
+ # Note: association vertices must belong to one edge of a face
+ def SourceFace(self, face, mesh=None, srcV1=None, tgtV1=None, srcV2=None, tgtV2=None):
+ hyp = self.Hypothesis("ProjectionSource2D")
+ hyp.SetSourceFace( face )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
+ return hyp
+
+# Public class: Mesh_Projection3D
+# ------------------------------
+
+## Class to define a projection 3D algorithm
+#
+# More details.
+class Mesh_Projection3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "Projection_3D")
+
+ ## Define "Source Shape 3D" hypothesis, specifying a meshed solid to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source solid and a target one (where a hipothesis is assigned to)
+ # @param solid to take mesh pattern from
+ # @param mesh to take mesh pattern from (optional)
+ # @param srcV1 is vertex of \a solid to associate with \a tgtV1 (optional)
+ # @param tgtV1 is vertex of \a the solid where the algorithm is assigned,
+ # to associate with \a srcV1 (optional)
+ # @param srcV2 is vertex of \a solid to associate with \a tgtV1 (optional)
+ # @param tgtV2 is vertex of \a the solid where the algorithm is assigned,
+ # to associate with \a srcV2 (optional)
+ #
+ # Note: association vertices must belong to one edge of a solid
+ def SourceShape3D(self, solid, mesh=0, srcV1=0, tgtV1=0, srcV2=0, tgtV2=0):
+ hyp = self.Hypothesis("ProjectionSource3D")
+ hyp.SetSource3DShape( solid )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
+ return hyp
+
+
+# Public class: Mesh_Prism
+# ------------------------
+
+## Class to define a Prism 3D algorithm
+#
+# More details.
+class Mesh_Prism3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "Prism_3D")
+
+# Public class: Mesh_RadialPrism
+# -------------------------------
+
+## Class to define a Radial Prism 3D algorithm
+#
+# More details.
+class Mesh_RadialPrism3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "RadialPrism_3D")
+ self.distribHyp = self.Hypothesis( "LayerDistribution" )
+ self.nbLayers = None
+
+ ## Return 3D hypothesis holding the 1D one
+ def Get3DHypothesis(self):
+ return self.distribHyp
+
+ ## Private method creating 1D hypothes and storing it in the LayerDistribution
+ # hypothes. Returns the created hypothes
+ def OwnHypothesis(self, hypType, args=[], so="libStdMeshersEngine.so"):
+ if not self.nbLayers is None:
+ self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers )
+ self.mesh.GetMesh().AddHypothesis( self.geom, self.distribHyp )
+ study = GetCurrentStudy() # prevent publishing of own 1D hypothesis
+ hyp = smesh.CreateHypothesis(hypType, so)
+ SetCurrentStudy( study ) # anable publishing
+ self.distribHyp.SetLayerDistribution( hyp )
+ return hyp
+
+ ## Define "NumberOfLayers" hypothesis, specifying a number of layers of
+ # prisms to build between the inner and outer shells
+ def NumberOfLayers(self, n ):
+ self.mesh.GetMesh().RemoveHypothesis( self.geom, self.distribHyp )
+ self.nbLayers = self.Hypothesis("NumberOfLayers")
+ self.nbLayers.SetNumberOfLayers( n )
+ return self.nbLayers
+
+ ## Define "LocalLength" hypothesis, specifying segment length
+ # to build between the inner and outer shells
+ # @param l for the length of segments
+ def LocalLength(self, l):
+ hyp = self.OwnHypothesis("LocalLength", [l])
+ hyp.SetLength(l)
+ return hyp
+ ## Define "NumberOfSegments" hypothesis, specifying a number of layers of
+ # prisms to build between the inner and outer shells
+ # @param n for the number of segments
+ # @param s for the scale factor (optional)
+ def NumberOfSegments(self, n, s=[]):
+ if s == []:
+ hyp = self.OwnHypothesis("NumberOfSegments", [n])
+ else:
+ hyp = self.OwnHypothesis("NumberOfSegments", [n,s])
+ hyp.SetDistrType( 1 )
+ hyp.SetScaleFactor(s)
+ hyp.SetNumberOfSegments(n)
+ return hyp
+
+ ## Define "Arithmetic1D" hypothesis, specifying distribution of segments
+ # to build between the inner and outer shells as arithmetic length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ def Arithmetic1D(self, start, end):
+ hyp = self.OwnHypothesis("Arithmetic1D", [start, end])
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Define "StartEndLength" hypothesis, specifying distribution of segments
+ # to build between the inner and outer shells as geometric length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ def StartEndLength(self, start, end):
+ hyp = self.OwnHypothesis("StartEndLength", [start, end])
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Define "AutomaticLength" hypothesis, specifying number of segments
+ # to build between the inner and outer shells
+ # @param fineness for the fineness [0-1]
+ def AutomaticLength(self, fineness=0):
+ hyp = self.OwnHypothesis("AutomaticLength")
+ hyp.SetFineness( fineness )
+ return hyp
+
+
# Public class: Mesh
# ==================
# @param obj Shape to be meshed or SMESH_Mesh object
# @param name Study name of the mesh
def __init__(self, obj=0, name=0):
+ if obj is None:
+ obj = 0
if obj != 0:
if isinstance(obj, geompy.GEOM._objref_GEOM_Object):
self.geom = obj
## Get the subMesh object associated to a subShape. The subMesh object
# gives access to nodes and elements IDs.
- # SubMesh will be used instead of SubShape in a next idl version to
+ # \n SubMesh will be used instead of SubShape in a next idl version to
# adress a specific subMesh...
def GetSubMesh(self, theSubObject, name):
submesh = self.mesh.GetSubMesh(theSubObject, name)
## Creates a segment discretization 1D algorithm.
# If the optional \a algo parameter is not sets, this algorithm is REGULAR.
# If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
# @param algo values are smesh.REGULAR or smesh.PYTHON for discretization via python function
# @param geom If defined, subshape to be meshed
def Segment(self, algo=REGULAR, geom=0):
## Creates a triangle 2D algorithm for faces.
# If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
# @param algo values are: smesh.MEFISTO or smesh.NETGEN
# @param geom If defined, subshape to be meshed
def Triangle(self, algo=MEFISTO, geom=0):
## Creates a quadrangle 2D algorithm for faces.
# If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
# @param geom If defined, subshape to be meshed
def Quadrangle(self, geom=0):
return Mesh_Quadrangle(self, geom)
## Creates a tetrahedron 3D algorithm for solids.
# The parameter \a algo permits to choice the algorithm: NETGEN or GHS3D
# If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
# @param algo values are: smesh.NETGEN, smesh.GHS3D, smesh.FULL_NETGEN
# @param geom If defined, subshape to be meshed
def Tetrahedron(self, algo=NETGEN, geom=0):
## Creates a hexahedron 3D algorithm for solids.
# If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
# @param geom If defined, subshape to be meshed
def Hexahedron(self, geom=0):
return Mesh_Hexahedron(self, geom)
## Deprecated, only for compatibility!
- # Creates a NETGEN-based 2D or 3D independent algorithm (i.e. needs no
- # discrete boundary).
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm defines a submesh based on \a geom subshape.
- # @param is3D If 0 then algorithm is 2D, otherwise 3D
- # @param geom If defined, subshape to be meshed
def Netgen(self, is3D, geom=0):
return Mesh_Netgen(self, is3D, geom)
-
+
+ ## Creates a projection 1D algorithm for edges.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection1D(self, geom=0):
+ return Mesh_Projection1D(self, geom)
+
+ ## Creates a projection 2D algorithm for faces.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection2D(self, geom=0):
+ return Mesh_Projection2D(self, geom)
+
+ ## Creates a projection 3D algorithm for solids.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection3D(self, geom=0):
+ return Mesh_Projection3D(self, geom)
+
+ ## Creates a Prism 3D or RadialPrism 3D algorithm for solids.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Prism(self, geom=0):
+ shape = geom
+ if shape==0:
+ shape = self.geom
+ nbSolids = len( geompy.SubShapeAll( shape, geompy.ShapeType["SOLID"] ))
+ nbShells = len( geompy.SubShapeAll( shape, geompy.ShapeType["SHELL"] ))
+ if nbSolids == 0 or nbSolids == nbShells:
+ return Mesh_Prism3D(self, geom)
+ return Mesh_RadialPrism3D(self, geom)
+
## Compute the mesh and return the status of the computation
def Compute(self, geom=0):
if geom == 0 or not isinstance(geom, geompy.GEOM._objref_GEOM_Object):
elif err.name == MISSING_HYPO:
name = '"' + err.algoName + '"'
reason = glob + dim + "D algorithm " + name + " misses " + dim + "D hypothesis"
- else:
+ elif err.name == NOT_CONFORM_MESH:
reason = "Global \"Not Conform mesh allowed\" hypothesis is missing"
+ elif err.name == BAD_PARAM_VALUE:
+ name = '"' + err.algoName + '"'
+ reason = "Hypothesis of" + glob + dim + "D algorithm " + name +\
+ " has a bad parameter value"
+ else:
+ reason = "For unknown reason."+\
+ " Revise Mesh.Compute() implementation in smesh.py!"
pass
if allReasons != "":
allReasons += "\n"
return ok
## Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN
- # The parameter \a fineness [0.-1.] defines mesh fineness
+ # The parameter \a fineness [0,-1] defines mesh fineness
def AutomaticTetrahedralization(self, fineness=0):
dim = self.MeshDimension()
# assign hypotheses
return self.Compute()
## Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron
- # The parameter \a fineness [0.-1.] defines mesh fineness
+ # The parameter \a fineness [0,-1] defines mesh fineness
def AutomaticHexahedralization(self, fineness=0):
dim = self.MeshDimension()
# assign hypotheses
pass
## Create a mesh group based on geometric object \a grp
- # and give a \a name, if this parameter is not defined
- # the name is the same as the geometric group name
- # Note: this function is obsolete. Works like GroupOnGeom().
+ # and give a \a name, \n if this parameter is not defined
+ # the name is the same as the geometric group name \n
+ # Note: Works like GroupOnGeom().
# @param grp is a geometric group, a vertex, an edge, a face or a solid
# @param name is the name of the mesh group
# @return SMESH_GroupOnGeom
# @param ascii defined the kind of file contents
def ExportSTL(self, f, ascii=1):
self.mesh.ExportSTL(f, ascii)
-
- ###################################################################################
+
- ## Operations with groups
- # ----------------------
+ # Operations with groups:
+ # ----------------------
## Creates an empty mesh group
# @param elementType is the type of elements in the group
return self.mesh.CreateGroup(elementType, name)
## Creates a mesh group based on geometric object \a grp
- # and give a \a name, if this parameter is not defined
+ # and give a \a name, \n if this parameter is not defined
# the name is the same as the geometric group name
# @param grp is a geometric group, a vertex, an edge, a face or a solid
# @param name is the name of the mesh group
def GetIdsFromFilter(self, theFilter):
return theFilter.GetElementsId(self.mesh)
- ## Verify whether 2D mesh element has free edges( i.e. edges connected to one face only )
+ ## Verify whether 2D mesh element has free edges(edges connected to one face only)\n
# Returns list of special structures(borders).
# @return list of SMESH.FreeEdges.Border structure: edge id and two its nodes ids.
def GetFreeBorders(self):
return self.mesh.CutGroups(mainGroup, toolGroup, name)
- ## Get some info about mesh:
- # ------------------------
+ # Get some info about mesh:
+ # ------------------------
## Get the log of nodes and elements added or removed since previous
# clear of the log.
return self.mesh.GetMEDMesh()
- ## Get informations about mesh contents:
- # ------------------------------------
+ # Get informations about mesh contents:
+ # ------------------------------------
## Returns number of nodes in mesh
def NbNodes(self):
def GetNodesId(self):
return self.mesh.GetNodesId()
- ## Get informations about mesh elements:
- # ------------------------------------
+ # Get informations about mesh elements:
+ # ------------------------------------
## Returns type of mesh element
def GetElementType(self, id, iselem):
return self.mesh.Dump()
- ## Get information about nodes and elements of mesh by its ids:
- # -----------------------------------------------------------
+ # Get information about nodes and elements of mesh by its ids:
+ # -----------------------------------------------------------
## Get XYZ coordinates of node as list of double
- # If there is not node for given ID - returns empty list
+ # \n If there is not node for given ID - returns empty list
def GetNodeXYZ(self, id):
return self.mesh.GetNodeXYZ(id)
## For given node returns list of IDs of inverse elements
- # If there is not node for given ID - returns empty list
+ # \n If there is not node for given ID - returns empty list
def GetNodeInverseElements(self, id):
return self.mesh.GetNodeInverseElements(id)
## If given element is node returns IDs of shape from position
- # If there is not node for given ID - returns -1
+ # \n If there is not node for given ID - returns -1
def GetShapeID(self, id):
return self.mesh.GetShapeID(id)
## For given element returns ID of result shape after
# FindShape() from SMESH_MeshEditor
- # If there is not element for given ID - returns -1
+ # \n If there is not element for given ID - returns -1
def GetShapeIDForElem(id):
return self.mesh.GetShapeIDForElem(id)
## Returns number of nodes for given element
- # If there is not element for given ID - returns -1
+ # \n If there is not element for given ID - returns -1
def GetElemNbNodes(self, id):
return self.mesh.GetElemNbNodes(id)
## Returns ID of node by given index for given element
- # If there is not element for given ID - returns -1
- # If there is not node for given index - returns -2
+ # \n If there is not element for given ID - returns -1
+ # \n If there is not node for given index - returns -2
def GetElemNode(self, id, index):
return self.mesh.GetElemNode(id, index)
## Returns XYZ coordinates of bary center for given element
# as list of double
- # If there is not element for given ID - returns empty list
+ # \n If there is not element for given ID - returns empty list
def BaryCenter(self, id):
return self.mesh.BaryCenter(id)
- ## Mesh edition (SMESH_MeshEditor functionality):
- # ---------------------------------------------
+ # Mesh edition (SMESH_MeshEditor functionality):
+ # ---------------------------------------------
## Removes elements from mesh by ids
# @param IDsOfElements is list of ids of elements to remove
# by number of given nodes).
# @param IdsOfNodes List of node IDs for creation of element.
# Needed order of nodes in this list corresponds to description
- # of MED. This description is located by the following link:
+ # of MED. \n This description is located by the following link:
# http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
def AddEdge(self, IDsOfNodes):
return self.editor.AddEdge(IDsOfNodes)
# by number of given nodes).
# @param IdsOfNodes List of node IDs for creation of element.
# Needed order of nodes in this list corresponds to description
- # of MED. This description is located by the following link:
+ # of MED. \n This description is located by the following link:
# http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
def AddFace(self, IDsOfNodes):
return self.editor.AddFace(IDsOfNodes)
# by number of given nodes).
# @param IdsOfNodes List of node IDs for creation of element.
# Needed order of nodes in this list corresponds to description
- # of MED. This description is located by the following link:
+ # of MED. \n This description is located by the following link:
# http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
def AddVolume(self, IDsOfNodes):
return self.editor.AddVolume(IDsOfNodes)
self.editor.ConvertToQuadratic(theForce3d)
## Converts all mesh from quadratic to ordinary ones,
- # deletes old quadratic elements, replacing
+ # deletes old quadratic elements, \n replacing
# them with ordinary mesh elements with the same id.
def ConvertFromQuadratic(self):
return self.editor.ConvertFromQuadratic()
return self.editor.ChangeElemNodes(ide, newIDs)
## If during last operation of MeshEditor some nodes were
- # created this method returns list of it's IDs, if new nodes
- # not created - returns empty list
+ # created this method returns list of it's IDs, \n
+ # if new nodes not created - returns empty list
def GetLastCreatedNodes(self):
return self.editor.GetLastCreatedNodes()
## If during last operation of MeshEditor some elements were
- # created this method returns list of it's IDs, if new elements
- # not creared - returns empty list
+ # created this method returns list of it's IDs, \n
+ # if new elements not creared - returns empty list
def GetLastCreatedElems(self):
return self.editor.GetLastCreatedElems()