Salome HOME
23617: EDF 14133 - Complete Merge Nodes / Merge Elements operations
[modules/smesh.git] / src / SMESH_I / SMESH_MeshEditor_i.hxx
index 89c730f7b1b768af52869d9372b48a10b548a4a4..d8c46a64f77641695ba48795a25469db84bdcc87 100644 (file)
@@ -501,7 +501,7 @@ public:
                                  SMESH::array_of_long_array_out GroupsOfNodes,
                                  CORBA::Boolean                 SeparateCornersAndMedium)
     throw (SALOME::SALOME_Exception);
-  void FindCoincidentNodesOnPartBut(SMESH::SMESH_IDSource_ptr      Object,
+  void FindCoincidentNodesOnPartBut(const SMESH::ListOfIDSources&  Objects,
                                     CORBA::Double                  Tolerance,
                                     SMESH::array_of_long_array_out GroupsOfNodes,
                                     const SMESH::ListOfIDSources&  ExceptSubMeshOrGroups,
@@ -511,10 +511,12 @@ public:
                    const SMESH::ListOfIDSources&     NodesToKeep,
                    CORBA::Boolean                    AvoidMakingHoles )
     throw (SALOME::SALOME_Exception);
-  void FindEqualElements(SMESH::SMESH_IDSource_ptr      Object,
+  void FindEqualElements(const SMESH::ListOfIDSources&  Objects,
+                         const SMESH::ListOfIDSources&  ExceptSubMeshOrGroups,
                          SMESH::array_of_long_array_out GroupsOfElementsID)
     throw (SALOME::SALOME_Exception);
-  void MergeElements(const SMESH::array_of_long_array& GroupsOfElementsID)
+  void MergeElements(const SMESH::array_of_long_array& GroupsOfElementsID,
+                     const SMESH::ListOfIDSources&     ElementsToKeep)
     throw (SALOME::SALOME_Exception);
   void MergeEqualElements()
     throw (SALOME::SALOME_Exception);
@@ -560,8 +562,8 @@ public:
   CORBA::Long ProjectPoint(CORBA::Double             x,
                            CORBA::Double             y,
                            CORBA::Double             z,
-                           SMESH::SMESH_IDSource_ptr meshObject,
                            SMESH::ElementType        type,
+                           SMESH::SMESH_IDSource_ptr meshObject,
                            SMESH::double_array_out   projecton)
     throw (SALOME::SALOME_Exception);
 
@@ -584,6 +586,18 @@ public:
   CORBA::Boolean IsCoherentOrientation2D()
     throw (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.
+   */
+  SMESH::array_of_long_array* Get1DBranches( SMESH::SMESH_IDSource_ptr      edges,
+                                             CORBA::Long                    startNode,
+                                             SMESH::array_of_long_array_out nodeGroups)
+    throw (SALOME::SALOME_Exception);
+
   /*!
    * Return sharp edges of faces and non-manifold ones. Optionally adds existing edges.
    */
@@ -920,7 +934,17 @@ public:
    *        be added.
    */
   void MakePolyLine(SMESH::ListOfPolySegments& segments,
-                    const char*               groupName)
+                    const char*                groupName)
+    throw (SALOME::SALOME_Exception);
+
+  /*!
+   * \brief Create a slot of given width around given 1D elements lying on a triangle mesh.
+   *        The slot is consrtucted 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
+   */
+  SMESH::ListOfEdges* MakeSlot(SMESH::SMESH_GroupBase_ptr segments,
+                               CORBA::Double              width)
     throw (SALOME::SALOME_Exception);