// structure used in MakePolyLine() to define a cutting plane
struct PolySegment
{
- // point 1: if node1ID2 > 0, then the point is in the middle of a face edge defined
- // by two nodes, else it is at node1ID1
+ // 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
long node1ID1;
long node1ID2;
+ PointStruct xyz1;
- // point 2: if node2ID2 > 0, then the point is in the middle of a face edge defined
- // by two nodes, else it is at node2ID1
+ // point 2
long node2ID1;
long node2ID2;
+ PointStruct xyz2;
- DirStruct vector; // vector on the plane; to use a default plane set vector = (0,0,0)
+ // 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
+ {
+ long node1;
+ long node2;
+ long 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
{
* \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,
/*!
* \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.
*/
/*!
* 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.
* \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,
* \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 ExtrusionSweepObjects(in ListOfIDSources nodes,
in ListOfIDSources edges,
* 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 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 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 []
+ */
+ long ProjectPoint(in double x,
+ in double y,
+ in double z,
+ in SMESH_IDSource meshObject,
+ in ElementType type,
+ 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.
boolean IsCoherentOrientation2D()
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.
*/
/*!
* Fill with 2D elements a hole defined by a FreeBorder.
+ * Optionally add new faces to a given group, which is returned.
*/
- void FillHole(in FreeBorder hole)
+ SMESH_Group FillHole(in FreeBorder hole, in string groupName)
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 == "".
/*!
* \brief Create a polyline consisting of 1D mesh elements each lying on a 2D element of
- * the initial mesh. Positions of new nodes are found by cutting the mesh by the
- * plane passing through pairs of points specified by each PolySegment structure.
+ * 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.