-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include "SMESH_Mesh.idl"
#include "SMESH_Gen.idl"
+#include "SMESH_smIdType.idl"
module SMESH
{
struct FreeBorder
{
- SMESH::long_array nodeIDs; // all nodes defining a free border
+ SMESH::smIdType_array nodeIDs; // all nodes defining a free border
// 1st and last node is same in a closed border
};
struct FreeBorderPart
};
+ // structure used in MakePolyLine() to define a cutting plane
+ struct PolySegment
+ {
+ // a point is defined as follows:
+ // ( node*ID1 > 0 && node*ID2 > 0 ) ==> point is in the middle of an edge defined by two nodes
+ // ( node*ID1 > 0 && node*ID2 <=0 ) ==> point is at node*ID1
+ // else ==> point is at xyz*
+
+ // point 1
+ smIdType node1ID1;
+ smIdType node1ID2;
+ PointStruct xyz1;
+
+ // point 2
+ smIdType node2ID1;
+ smIdType node2ID2;
+ PointStruct xyz2;
+
+ // vector on the plane; to use a default plane set vector = (0,0,0)
+ DirStruct vector;
+ };
+ typedef sequence<PolySegment> ListOfPolySegments;
+
+ // face edge defined by two nodes + optional medium node
+ struct FaceEdge
+ {
+ smIdType node1;
+ smIdType node2;
+ smIdType medium;
+ };
+ typedef sequence<FaceEdge> ListOfEdges;
+
+
/*!
* This interface makes modifications on the Mesh - removing elements and nodes etc.
+ * Also provides some analysis functions.
*/
interface SMESH_MeshEditor
{
* created, this method returns list of their IDs, if new nodes
* not created - returns empty list
*/
- long_array GetLastCreatedNodes() raises (SALOME::SALOME_Exception);
+ smIdType_array GetLastCreatedNodes() raises (SALOME::SALOME_Exception);
/*!
* If during last operation of MeshEditor some elements were
* created, this method returns list of their IDs, if new elements
* not created - returns empty list
*/
- long_array GetLastCreatedElems() raises (SALOME::SALOME_Exception);
+ smIdType_array GetLastCreatedElems() raises (SALOME::SALOME_Exception);
/*!
* \brief Clears sequences of last created elements and nodes
void ClearLastCreated() raises (SALOME::SALOME_Exception);
/*!
- * \brief Returns description of an error/warning occured during the last operation
+ * \brief Returns description of an error/warning occurred during the last operation
*/
ComputeError GetLastError() raises (SALOME::SALOME_Exception);
* \param IDsOfElements list of mesh elements identifiers
* \return new ID source object
*/
- SMESH_IDSource MakeIDSource(in long_array IDsOfElements, in ElementType type);
+ SMESH_IDSource MakeIDSource(in smIdType_array IDsOfElements, in ElementType type);
/*!
* \brief Remove mesh elements specified by their identifiers.
* \param IDsOfElements list of mesh elements identifiers
* \return \c true if elements are correctly removed or \c false otherwise
*/
- boolean RemoveElements(in long_array IDsOfElements) raises (SALOME::SALOME_Exception);
+ boolean RemoveElements(in smIdType_array IDsOfElements) raises (SALOME::SALOME_Exception);
/*!
* \brief Remove mesh nodes specified by their identifiers.
* \param IDsOfNodes list of mesh nodes identifiers
* \return \c true if nodes are correctly removed or \c false otherwise
*/
- boolean RemoveNodes(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
+ boolean RemoveNodes(in smIdType_array IDsOfNodes) raises (SALOME::SALOME_Exception);
/*!
* \brief Remove all orphan nodes.
* \return number of removed nodes
*/
- long RemoveOrphanNodes() raises (SALOME::SALOME_Exception);
+ smIdType RemoveOrphanNodes() raises (SALOME::SALOME_Exception);
/*!
* \brief Add a new node.
* \param z Z coordinate of new node
* \return integer identifier of new node
*/
- long AddNode(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
+ smIdType AddNode(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
/*!
* Create a 0D element on the given node.
* \param IdOfNode Node IDs for creation of element.
+ * \param DuplicateElements to add one more 0D element to a node or not
*/
- long Add0DElement(in long IDOfNode) raises (SALOME::SALOME_Exception);
+ smIdType Add0DElement(in smIdType IDOfNode,
+ in boolean DuplicateElements) raises (SALOME::SALOME_Exception);
/*!
* Create a ball element on the given node.
* \param IdOfNode Node IDs for creation of element.
*/
- long AddBall(in long IDOfNode, in double diameter) raises (SALOME::SALOME_Exception);
+ smIdType AddBall(in smIdType IDOfNode, in double diameter) raises (SALOME::SALOME_Exception);
/*!
* Create an edge, either linear and quadratic (this is determed
* of MED. 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.
*/
- long AddEdge(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
+ smIdType AddEdge(in smIdType_array IDsOfNodes) raises (SALOME::SALOME_Exception);
/*!
* Create face, either linear and quadratic (this is determed
* of MED. 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.
*/
- long AddFace(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
+ smIdType AddFace(in smIdType_array IDsOfNodes) raises (SALOME::SALOME_Exception);
- long AddPolygonalFace(in long_array IdsOfNodes) raises (SALOME::SALOME_Exception);
+ smIdType AddPolygonalFace(in smIdType_array IdsOfNodes) raises (SALOME::SALOME_Exception);
/*!
* Create a quadratic polygonal face
* \param IdsOfNodes - nodes of the polygon; corner nodes follow first
- * \return long - ID of a new polygon
+ * \return smIdType- ID of a new polygon
*/
- long AddQuadPolygonalFace(in long_array IdsOfNodes) raises (SALOME::SALOME_Exception);
+ smIdType AddQuadPolygonalFace(in smIdType_array IdsOfNodes) raises (SALOME::SALOME_Exception);
/*!
* Create volume, either linear and quadratic (this is determed
* of MED. 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.
*/
- long AddVolume(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
+ smIdType AddVolume(in smIdType_array IDsOfNodes) raises (SALOME::SALOME_Exception);
/*!
* Create volume of many faces, giving nodes for each face.
* \param Quantities List of integer values, Quantities[i]
* gives quantity of nodes in face number i.
*/
- long AddPolyhedralVolume (in long_array IdsOfNodes,
- in long_array Quantities) raises (SALOME::SALOME_Exception);
+ smIdType AddPolyhedralVolume (in smIdType_array IdsOfNodes,
+ in long_array Quantities) raises (SALOME::SALOME_Exception);
/*!
* Create volume of many faces, giving IDs of existing faces.
* \param IdsOfFaces List of face IDs for volume creation.
* \note The created volume will refer only to nodes
* of the given faces, not to the faces itself.
*/
- long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces) raises (SALOME::SALOME_Exception);
+ smIdType AddPolyhedralVolumeByFaces (in smIdType_array IdsOfFaces) raises (SALOME::SALOME_Exception);
/*!
- * Create 0D elements on all nodes of the given object except those
- * nodes on which a 0D element already exists.
+ * Create 0D elements on all nodes of the given object.
* \param theObject object on whose nodes 0D elements will be created.
* \param theGroupName optional name of a group to add 0D elements created
* and/or found on nodes of \a theObject.
+ * \param theDuplicateElements to add one more 0D element to a node or not
* \return an object (a new group or a temporary SMESH_IDSource) holding
* ids of new and/or found 0D elements.
*/
SMESH_IDSource Create0DElementsOnAllNodes(in SMESH_IDSource theObject,
- in string theGroupName)
+ in string theGroupName,
+ in boolean theDuplicateElements)
raises (SALOME::SALOME_Exception);
/*!
* \param NodeID - node ID
* \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
*/
- void SetNodeOnVertex(in long NodeID, in long VertexID)
+ void SetNodeOnVertex(in smIdType NodeID, in long VertexID)
raises (SALOME::SALOME_Exception);
/*!
* \brief Store node position on an edge
* \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
* \param paramOnEdge - parameter on edge where the node is located
*/
- void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
+ void SetNodeOnEdge(in smIdType NodeID, in long EdgeID, in double paramOnEdge)
raises (SALOME::SALOME_Exception);
/*!
* \brief Store node position on a face
* \param u - U parameter on face where the node is located
* \param v - V parameter on face where the node is located
*/
- void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
+ void SetNodeOnFace(in smIdType NodeID, in long FaceID, in double u, in double v)
raises (SALOME::SALOME_Exception);
/*!
* \brief Bind a node to a solid
* \param NodeID - node ID
* \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
*/
- void SetNodeInVolume(in long NodeID, in long SolidID)
+ void SetNodeInVolume(in smIdType NodeID, in long SolidID)
raises (SALOME::SALOME_Exception);
/*!
* \brief Bind an element to a shape
* \param ElementID - element ID
* \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
*/
- void SetMeshElementOnShape(in long ElementID, in long ShapeID)
+ void SetMeshElementOnShape(in smIdType ElementID, in long ShapeID)
raises (SALOME::SALOME_Exception);
- boolean MoveNode(in long NodeID, in double x, in double y, in double z)
+ boolean MoveNode(in smIdType NodeID, in double x, in double y, in double z)
raises (SALOME::SALOME_Exception);
- boolean InverseDiag(in long NodeID1, in long NodeID2)
+ boolean InverseDiag(in smIdType NodeID1, in smIdType NodeID2)
raises (SALOME::SALOME_Exception);
- boolean DeleteDiag(in long NodeID1, in long NodeID2)
+ boolean DeleteDiag(in smIdType NodeID1, in smIdType NodeID2)
raises (SALOME::SALOME_Exception);
- boolean Reorient(in long_array IDsOfElements)
+ boolean Reorient(in smIdType_array IDsOfElements)
raises (SALOME::SALOME_Exception);
boolean ReorientObject(in SMESH_IDSource theObject)
* \param IDsOfElements Ids of triangles to be fused.
* \param theCriterion Is used to choose a neighbour to fuse with.
* \param theMaxAngle Is a max angle between element normals at which fusion
- * is still performed; theMaxAngle is mesured in radians.
+ * is still performed; theMaxAngle is measured in radians.
* \return \c true in case of success, FALSE otherwise.
*/
- boolean TriToQuad (in long_array IDsOfElements,
+ boolean TriToQuad (in smIdType_array IDsOfElements,
in NumericalFunctor Criterion,
in double MaxAngle) raises (SALOME::SALOME_Exception);
/*!
* \param theCriterion Is used to choose a diagonal for splitting.
* \return TRUE in case of success, FALSE otherwise.
*/
- boolean QuadToTri (in long_array IDsOfElements,
+ boolean QuadToTri (in smIdType_array IDsOfElements,
in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
/*!
* \brief Split quadrangles into triangles.
/*!
* \brief Split quadrangles into triangles.
- * \param theElems The faces to be splitted.
+ * \param theElems The faces to be split.
* \param the13Diag Is used to choose a diagonal for splitting.
* \return TRUE in case of success, FALSE otherwise.
*/
- boolean SplitQuad (in long_array IDsOfElements,
- in boolean Diag13) raises (SALOME::SALOME_Exception);
+ boolean SplitQuad (in smIdType_array IDsOfElements,
+ in boolean Diag13) raises (SALOME::SALOME_Exception);
/*!
* \brief Split quadrangles into triangles.
*
/*!
* Find better splitting of the given quadrangle.
- * \param IDOfQuad ID of the quadrangle to be splitted.
+ * \param IDOfQuad ID of the quadrangle to be split.
* \param Criterion A criterion to choose a diagonal for splitting.
* \return 1 if 1-3 diagonal is better, 2 if 2-4
* diagonal is better, 0 if error occurs.
*/
- long BestSplit (in long IDOfQuad,
+ long BestSplit (in long IDOfQuad,
in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
/*!
enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
- boolean Smooth(in long_array IDsOfElements,
- in long_array IDsOfFixedNodes,
- in long MaxNbOfIterations,
- in double MaxAspectRatio,
- in Smooth_Method Method) raises (SALOME::SALOME_Exception);
-
- boolean SmoothObject(in SMESH_IDSource theObject,
- in long_array IDsOfFixedNodes,
- in long MaxNbOfIterations,
- in double MaxAspectRatio,
- in Smooth_Method Method) raises (SALOME::SALOME_Exception);
-
- boolean SmoothParametric(in long_array IDsOfElements,
- in long_array IDsOfFixedNodes,
- in long MaxNbOfIterations,
- in double MaxAspectRatio,
- in Smooth_Method Method) raises (SALOME::SALOME_Exception);
-
- boolean SmoothParametricObject(in SMESH_IDSource theObject,
- in long_array IDsOfFixedNodes,
- in long MaxNbOfIterations,
- in double MaxAspectRatio,
- in Smooth_Method Method) raises (SALOME::SALOME_Exception);
+ boolean Smooth(in smIdType_array IDsOfElements,
+ in smIdType_array IDsOfFixedNodes,
+ in short MaxNbOfIterations,
+ in double MaxAspectRatio,
+ in Smooth_Method Method) raises (SALOME::SALOME_Exception);
+
+ boolean SmoothObject(in SMESH_IDSource theObject,
+ in smIdType_array IDsOfFixedNodes,
+ in short MaxNbOfIterations,
+ in double MaxAspectRatio,
+ in Smooth_Method Method) raises (SALOME::SALOME_Exception);
+
+ boolean SmoothParametric(in smIdType_array IDsOfElements,
+ in smIdType_array IDsOfFixedNodes,
+ in short MaxNbOfIterations,
+ in double MaxAspectRatio,
+ in Smooth_Method Method) raises (SALOME::SALOME_Exception);
+
+ boolean SmoothParametricObject(in SMESH_IDSource theObject,
+ in smIdType_array IDsOfFixedNodes,
+ in short MaxNbOfIterations,
+ in double MaxAspectRatio,
+ in Smooth_Method Method) raises (SALOME::SALOME_Exception);
void ConvertToQuadratic(in boolean theForce3d)
raises (SALOME::SALOME_Exception);
* \param NbOfSteps - number of elements to generate from one element
* \param ToMakeGroups - if true, new elements will be included into new groups
* corresponding to groups the input elements included in.
- * \return ListOfGroups - new groups craeted if \a ToMakeGroups is true
+ * \return ListOfGroups - new groups created if \a ToMakeGroups is true
*/
ListOfGroups RotationSweepObjects(in ListOfIDSources Nodes,
in ListOfIDSources Edges,
/*!
* \brief Generate dim+1 elements by extrusion of elements along vector
- * \param nodes - nodes to extrude: a list including groups, sub-meshes or a mesh
- * \param edges - edges to extrude: a list including groups, sub-meshes or a mesh
- * \param faces - faces to extrude: a list including groups, sub-meshes or a mesh
- * \param stepVector - vector giving direction and distance of an extrusion step
- * \param nbOfSteps - number of elements to generate from one element
+ * \param nodes - nodes to extrude: a list including groups, sub-meshes or a mesh.
+ * \param edges - edges to extrude: a list including groups, sub-meshes or a mesh.
+ * \param faces - faces to extrude: a list including groups, sub-meshes or a mesh.
+ * \param stepVector - vector giving direction and distance of an extrusion step.
+ * \param nbOfSteps - number of elements to generate from one element.
* \param toMakeGroups - if true, new elements will be included into new groups
* corresponding to groups the input elements included in.
- * \return ListOfGroups - new groups craeted if \a toMakeGroups is true
+ * \param scaleFactors - optional scale factors to apply during extrusion; it's
+ * usage depends on \a scalesVariation parameter.
+ * \param scalesVariation - if \c True, \a scaleFactors are spread over all \a NbOfSteps,
+ otherwise \a scaleFactors[i] is applied to nodes at the i-th extrusion step.
+ * \param angles - optional rotation angles to apply during extrusion; it's
+ * usage depends on \a anglesVariation parameter.
+ * \param anglesVariation - if \c True, \a angles are spread over all \a NbOfSteps,
+ otherwise \a angle[i] is applied to nodes at the i-th extrusion step.
+ * \return ListOfGroups - new groups created if \a toMakeGroups is true
*/
ListOfGroups ExtrusionSweepObjects(in ListOfIDSources nodes,
in ListOfIDSources edges,
in ListOfIDSources faces,
in DirStruct stepVector,
in long nbOfSteps,
- in boolean toMakeGroups)
+ in boolean toMakeGroups,
+ in double_array scaleFactors,
+ in boolean scaleVariation,
+ in double_array basePoint,
+ in double_array angles,
+ in boolean angleVariation)
raises (SALOME::SALOME_Exception);
/*! Generates new elements by extrusion along the normal to a discretized surface or wire
* EXTRUSION_FLAG_SEW is set
* \param ToMakeGroups - if true, new elements will be included into new groups
* corresponding to groups the input elements included in.
- * \return ListOfGroups - new groups craeted if \a ToMakeGroups is true
+ * \return ListOfGroups - new groups created if \a ToMakeGroups is true
*/
- ListOfGroups AdvancedExtrusion(in long_array IDsOfElements,
- in DirStruct StepVector,
- in long NbOfSteps,
- in long ExtrFlags,
- in double SewTolerance,
- in boolean ToMakeGroups)
+ ListOfGroups AdvancedExtrusion(in smIdType_array IDsOfElements,
+ in DirStruct StepVector,
+ in long NbOfSteps,
+ in long ExtrFlags,
+ in double SewTolerance,
+ in boolean ToMakeGroups)
raises (SALOME::SALOME_Exception);
enum Extrusion_Error {
EXTR_CANT_GET_TANGENT
};
- ListOfGroups ExtrusionAlongPathObjects(in ListOfIDSources Nodes,
- in ListOfIDSources Edges,
- in ListOfIDSources Faces,
+ ListOfGroups ExtrusionAlongPathObjects(in ListOfIDSources Nodes,
+ in ListOfIDSources Edges,
+ in ListOfIDSources Faces,
in SMESH_IDSource Path,
in GEOM::GEOM_Object PathShape,
- in long NodeStart,
+ in smIdType NodeStart,
in boolean HasAngles,
in double_array Angles,
- in boolean LinearVariation,
+ in boolean AnglesVariation,
in boolean HasRefPoint,
in PointStruct RefPoint,
in boolean MakeGroups,
+ in double_array ScaleFactors,
+ in boolean ScaleVariation,
out Extrusion_Error Error)
raises (SALOME::SALOME_Exception);
enum MirrorType { POINT, AXIS, PLANE };
- void Mirror (in long_array IDsOfElements,
- in AxisStruct Mirror,
- in MirrorType Type,
- in boolean Copy)
+ void Mirror (in smIdType_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean Copy)
raises (SALOME::SALOME_Exception);
- ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
- in AxisStruct Mirror,
- in MirrorType Type)
+ ListOfGroups MirrorMakeGroups (in smIdType_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type)
raises (SALOME::SALOME_Exception);
- SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
- in AxisStruct Mirror,
- in MirrorType Type,
- in boolean CopyGroups,
- in string MeshName)
+ SMESH_Mesh MirrorMakeMesh (in smIdType_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean CopyGroups,
+ in string MeshName)
raises (SALOME::SALOME_Exception);
void MirrorObject (in SMESH_IDSource theObject,
in string MeshName)
raises (SALOME::SALOME_Exception);
- void Translate (in long_array IDsOfElements,
- in DirStruct Vector,
- in boolean Copy)
+ void Translate (in smIdType_array IDsOfElements,
+ in DirStruct Vector,
+ in boolean Copy)
raises (SALOME::SALOME_Exception);
- ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
- in DirStruct Vector)
+ ListOfGroups TranslateMakeGroups (in smIdType_array IDsOfElements,
+ in DirStruct Vector)
raises (SALOME::SALOME_Exception);
- SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
- in DirStruct Vector,
- in boolean CopyGroups,
- in string MeshName)
+ SMESH_Mesh TranslateMakeMesh (in smIdType_array IDsOfElements,
+ in DirStruct Vector,
+ in boolean CopyGroups,
+ in string MeshName)
raises (SALOME::SALOME_Exception);
void TranslateObject (in SMESH_IDSource theObject,
in string MeshName)
raises (SALOME::SALOME_Exception);
- void Rotate (in long_array IDsOfElements,
- in AxisStruct Axis,
- in double AngleInRadians,
- in boolean Copy)
+ void Rotate (in smIdType_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean Copy)
raises (SALOME::SALOME_Exception);
- ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
- in AxisStruct Axis,
- in double AngleInRadians)
+ ListOfGroups RotateMakeGroups (in smIdType_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians)
raises (SALOME::SALOME_Exception);
- SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
- in AxisStruct Axis,
- in double AngleInRadians,
- in boolean CopyGroups,
- in string MeshName)
+ SMESH_Mesh RotateMakeMesh (in smIdType_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean CopyGroups,
+ in string MeshName)
raises (SALOME::SALOME_Exception);
void RotateObject (in SMESH_IDSource theObject,
in string MeshName)
raises (SALOME::SALOME_Exception);
+ SMESH_Mesh Offset(in SMESH_IDSource theObject,
+ in double Value,
+ in boolean CopyGroups,
+ in boolean CopyElements,
+ in string MeshName,
+ out ListOfGroups Groups)
+ raises (SALOME::SALOME_Exception);
+
void FindCoincidentNodes (in double Tolerance,
out array_of_long_array GroupsOfNodes,
in boolean SeparateCornersAndMedium)
in boolean SeparateCornersAndMedium)
raises (SALOME::SALOME_Exception);
- void FindCoincidentNodesOnPartBut (in SMESH_IDSource SubMeshOrGroup,
+ void FindCoincidentNodesOnPartBut (in ListOfIDSources SubMeshOrGroup,
in double Tolerance,
out array_of_long_array GroupsOfNodes,
in ListOfIDSources ExceptSubMeshOrGroups,
raises (SALOME::SALOME_Exception);
void MergeNodes (in array_of_long_array GroupsOfNodes,
- in SMESH::ListOfIDSources NodesToKeep)
+ in SMESH::ListOfIDSources NodesToKeep,
+ in boolean AvoidMakingHoles)
raises (SALOME::SALOME_Exception);
/*!
* \param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching.
* \return List of groups of equal elements.
*/
- void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup,
+ void FindEqualElements (in ListOfIDSources MeshOrSubMeshOrGroup,
+ in ListOfIDSources ExceptSubMeshOrGroups,
out array_of_long_array GroupsOfElementsID)
raises (SALOME::SALOME_Exception);
* \brief Merge elements in each given group.
* \param GroupsOfElementsID Groups of elements for merging.
*/
- void MergeElements(in array_of_long_array GroupsOfElementsID)
+ void MergeElements(in array_of_long_array GroupsOfElementsID,
+ in SMESH::ListOfIDSources ElementsToKeep)
raises (SALOME::SALOME_Exception);
/*!
* If the given ID is a valid node ID (nodeID > 0), just move this node, else
* move the node closest to the point to point's location and return ID of the node
*/
- long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID)
+ smIdType MoveClosestNodeToPoint(in double x, in double y, in double z, in smIdType nodeID)
raises (SALOME::SALOME_Exception);
/*!
* Return ID of node closest to a given point
*/
- long FindNodeClosestTo(in double x, in double y, in double z)
+ smIdType FindNodeClosestTo(in double x, in double y, in double z)
raises (SALOME::SALOME_Exception);
/*!
*
* 'ALL' type means elements of any type excluding nodes and 0D elements
*/
- long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type)
+ smIdType_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type)
raises (SALOME::SALOME_Exception);
/*!
*
* 'ALL' type means elements of any type excluding nodes and 0D elements
*/
- long_array FindAmongElementsByPoint(in SMESH_IDSource elements,
- in double x, in double y, in double z,
- in ElementType type)
+ smIdType_array FindAmongElementsByPoint(in SMESH_IDSource elements,
+ in double x, in double y, in double z,
+ in ElementType type)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Project a point to a mesh object.
+ * Return ID of an element of given type where the given point is projected
+ * and coordinates of the projection point.
+ * In the case if nothing found, return -1 and []
+ */
+ smIdType ProjectPoint(in double x,
+ in double y,
+ in double z,
+ in ElementType type,
+ in SMESH_IDSource meshObject,
+ out double_array projecton)
raises (SALOME::SALOME_Exception);
/*!
* Return point state in a closed 2D mesh in terms of TopAbs_State enumeration.
* TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails.
*/
- short GetPointState(in double x, in double y, in double z)
+ short GetPointState(in double x, in double y, in double z)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Check if a 2D mesh is manifold
+ */
+ boolean IsManifold()
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Check if orientation of 2D elements is coherent
+ */
+ boolean IsCoherentOrientation2D()
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Partition given 1D elements into groups of contiguous edges.
+ * A node where number of meeting edges != 2 is a group end.
+ * An optional startNode is used to orient groups it belongs to.
+ * \return a list of edge groups and a list of corresponding node groups.
+ * If a group is closed, the first and last nodes of the group are same.
+ */
+ array_of_long_array Get1DBranches( in SMESH_IDSource edges,
+ in smIdType startNode,
+ out array_of_long_array nodeGroups)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Return sharp edges of faces and non-manifold ones.
+ * Optionally add existing edges. Angle is in degrees.
+ */
+ ListOfEdges FindSharpEdges(in double angle, in boolean addExistingEdges)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Returns all or only closed FreeBorder's.
+ */
+ ListOfFreeBorders FindFreeBorders(in boolean closedOnly)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Fill with 2D elements a hole defined by a FreeBorder.
+ * Optionally add new faces to a given group, which is returned.
+ */
+ SMESH_Group FillHole(in FreeBorder hole, in string groupName)
raises (SALOME::SALOME_Exception);
/*!
SEW_DIFF_NB_OF_ELEMENTS,
SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
SEW_BAD_SIDE1_NODES,
- SEW_BAD_SIDE2_NODES
- };
+ SEW_BAD_SIDE2_NODES,
+ SEW_INTERNAL_ERROR
+ };
- Sew_Error SewFreeBorders (in long FirstNodeID1,
- in long SecondNodeID1,
- in long LastNodeID1,
- in long FirstNodeID2,
- in long SecondNodeID2,
- in long LastNodeID2,
- in boolean CreatePolygons,
- in boolean CreatePolyedrs)
+ Sew_Error SewFreeBorders (in smIdType FirstNodeID1,
+ in smIdType SecondNodeID1,
+ in smIdType LastNodeID1,
+ in smIdType FirstNodeID2,
+ in smIdType SecondNodeID2,
+ in smIdType LastNodeID2,
+ in boolean CreatePolygons,
+ in boolean CreatePolyedrs)
raises (SALOME::SALOME_Exception);
- Sew_Error SewConformFreeBorders (in long FirstNodeID1,
- in long SecondNodeID1,
- in long LastNodeID1,
- in long FirstNodeID2,
- in long SecondNodeID2)
+ Sew_Error SewConformFreeBorders (in smIdType FirstNodeID1,
+ in smIdType SecondNodeID1,
+ in smIdType LastNodeID1,
+ in smIdType FirstNodeID2,
+ in smIdType SecondNodeID2)
raises (SALOME::SALOME_Exception);
- Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
- in long SecondNodeIDOnFreeBorder,
- in long LastNodeIDOnFreeBorder,
- in long FirstNodeIDOnSide,
- in long LastNodeIDOnSide,
- in boolean CreatePolygons,
- in boolean CreatePolyedrs)
+ Sew_Error SewBorderToSide (in smIdType FirstNodeIDOnFreeBorder,
+ in smIdType SecondNodeIDOnFreeBorder,
+ in smIdType LastNodeIDOnFreeBorder,
+ in smIdType FirstNodeIDOnSide,
+ in smIdType LastNodeIDOnSide,
+ in boolean CreatePolygons,
+ in boolean CreatePolyedrs)
raises (SALOME::SALOME_Exception);
- Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
- in long_array IDsOfSide2Elements,
- in long NodeID1OfSide1ToMerge,
- in long NodeID1OfSide2ToMerge,
- in long NodeID2OfSide1ToMerge,
- in long NodeID2OfSide2ToMerge)
+ Sew_Error SewSideElements (in smIdType_array IDsOfSide1Elements,
+ in smIdType_array IDsOfSide2Elements,
+ in smIdType NodeID1OfSide1ToMerge,
+ in smIdType NodeID1OfSide2ToMerge,
+ in smIdType NodeID2OfSide1ToMerge,
+ in smIdType NodeID2OfSide2ToMerge)
raises (SALOME::SALOME_Exception);
/*!
* If number of nodes is not corresponded to type of
* element - returns false
*/
- boolean ChangeElemNodes(in long ide, in long_array newIDs)
+ boolean ChangeElemNodes(in smIdType id, in smIdType_array newIDs)
raises (SALOME::SALOME_Exception);
/*!
* \param theElements - container of elements to duplicate.
* \param theGroupName - a name of group to contain the generated elements.
* If a group with such a name already exists, the new elements
- * are added to the existng group, else a new group is created.
+ * are added to the existing group, else a new group is created.
* If \a theGroupName is empty, new elements are not added
* in any group.
* \return a group where the new elements are added. NULL if theGroupName == "".
* \return TRUE if operation has been completed successfully, FALSE otherwise
* \sa DoubleNode(), DoubleNodeGroup(), DoubleNodeGroups()
*/
- boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems )
+ boolean DoubleNodes( in smIdType_array theNodes, in smIdType_array theModifiedElems )
raises (SALOME::SALOME_Exception);
/*!
* \return TRUE if operation has been completed successfully, FALSE otherwise
* \sa DoubleNodes(), DoubleNodeGroup(), DoubleNodeGroups()
*/
- boolean DoubleNode( in long theNodeId, in long_array theModifiedElems )
+ boolean DoubleNode( in smIdType theNodeId, in smIdType_array theModifiedElems )
raises (SALOME::SALOME_Exception);
/*!
* \return TRUE if operation has been completed successfully, FALSE otherwise
* \sa DoubleNodeGroup(), DoubleNodeGroups()
*/
- boolean DoubleNodeElem( in long_array theElems,
- in long_array theNodesNot,
- in long_array theAffectedElems )
+ boolean DoubleNodeElem( in smIdType_array theElems,
+ in smIdType_array theNodesNot,
+ in smIdType_array theAffectedElems )
raises (SALOME::SALOME_Exception);
/*!
* \return TRUE if operation has been completed successfully, FALSE otherwise
* \sa DoubleNodeGroupInRegion(), DoubleNodeGroupsInRegion()
*/
- boolean DoubleNodeElemInRegion( in long_array theElems,
- in long_array theNodesNot,
+ boolean DoubleNodeElemInRegion( in smIdType_array theElems,
+ in smIdType_array theNodesNot,
in GEOM::GEOM_Object theShape )
raises (SALOME::SALOME_Exception);
in GEOM::GEOM_Object theShape,
in string groupName,
in double_array theNodesCoords,
- out array_of_long_array GroupsOfNodes)
+ out array_of_long_array GroupsOfNodes)
+ raises (SALOME::SALOME_Exception);
+
+
+ /*!
+ * \brief Create a polyline consisting of 1D mesh elements each lying on a 2D element of
+ * the initial triangle mesh. Positions of new nodes are found by cutting the mesh by
+ * the plane passing through pairs of points specified by each PolySegment structure.
+ * If there are several paths connecting a pair of points, the shortest path is
+ * selected by the module. Position of the cutting plane is defined by the two
+ * points and an optional vector lying on the plane specified by a PolySegment.
+ * By default the vector is defined by Mesh module as following. A middle point
+ * of the two given points is computed. The middle point is projected to the mesh.
+ * The vector goes from the middle point to the projection point. In case of planar
+ * mesh, the vector is normal to the mesh.
+ * \param [inout] segments - PolySegment's defining positions of cutting planes.
+ * Return the used vector which goes from the middle point to its projection.
+ * \param [in] groupName - optional name of a group where created mesh segments will
+ * be added.
+ */
+ void MakePolyLine(inout ListOfPolySegments segments,
+ in string groupName)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * \brief Create a slot of given width around given 1D elements lying on a triangle mesh.
+ * The slot is constructed by cutting faces by cylindrical surfaces made
+ * around each segment. Segments are expected to be created by MakePolyLine().
+ * \return Edges located at the slot boundary
+ */
+ ListOfEdges MakeSlot( in SMESH_GroupBase segments,
+ in double width )
raises (SALOME::SALOME_Exception);
+
};
};