Salome HOME
23627: [IMACS] ASERIS: project point to the mesh and create a slot
[modules/smesh.git] / src / SMESH_I / SMESH_MeshEditor_i.hxx
index bcc0dfc64393f0eb06c0833b3f579b64cef59c8a..462d42db21222d4b8766bf48c7cc0d76409f7973 100644 (file)
@@ -20,7 +20,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
 //  File   : SMESH_MeshEditor_i.hxx
 //  Author : Nicolas REJNERI
 //  Module : SMESH
@@ -95,6 +95,11 @@ public:
   static bool               IsTemporaryIDSource( SMESH::SMESH_IDSource_ptr& idSource );
   static CORBA::Long*       GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idSource, int& nbIds );
 
+  /*!
+   * \brief Generates the unique group name
+   */
+  std::string GenerateGroupName(const std::string& thePrefix);
+
   CORBA::Boolean RemoveElements(const SMESH::long_array & IDsOfElements)
     throw (SALOME::SALOME_Exception);
   CORBA::Boolean RemoveNodes   (const SMESH::long_array & IDsOfNodes)
@@ -472,11 +477,19 @@ public:
                                        const SMESH::double_array& theScaleFact)
     throw (SALOME::SALOME_Exception);
 
-  SMESH::SMESH_Mesh_ptr ScaleMakeMesh(SMESH::SMESH_IDSource_ptr Object,
-                                      const SMESH::PointStruct& Point,
+  SMESH::SMESH_Mesh_ptr ScaleMakeMesh(SMESH::SMESH_IDSource_ptr  Object,
+                                      const SMESH::PointStruct&  Point,
                                       const SMESH::double_array& theScaleFact,
-                                      CORBA::Boolean            CopyGroups,
-                                      const char*               MeshName)
+                                      CORBA::Boolean             CopyGroups,
+                                      const char*                MeshName)
+    throw (SALOME::SALOME_Exception);
+
+  SMESH::SMESH_Mesh_ptr Offset( SMESH::SMESH_IDSource_ptr theObject,
+                                CORBA::Double             Value,
+                                CORBA::Boolean            CopyGroups,
+                                CORBA::Boolean            CopyElements,
+                                const char*               MeshName,
+                                SMESH::ListOfGroups_out   Groups)
     throw (SALOME::SALOME_Exception);
 
   void FindCoincidentNodes (CORBA::Double                  Tolerance,
@@ -538,6 +551,20 @@ public:
                                               SMESH::ElementType        type)
     throw (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 []
+   */
+  CORBA::Long ProjectPoint(CORBA::Double             x,
+                           CORBA::Double             y,
+                           CORBA::Double             z,
+                           SMESH::ElementType        type,
+                           SMESH::SMESH_IDSource_ptr meshObject,
+                           SMESH::double_array_out   projecton)
+    throw (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.
@@ -557,6 +584,24 @@ 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.
+   */
+  SMESH::ListOfEdges* FindSharpEdges(CORBA::Double angle, CORBA::Boolean addExisting)
+    throw (SALOME::SALOME_Exception);
+
   /*!
    * Returns all or only closed FreeBorder's.
    */
@@ -565,8 +610,10 @@ public:
 
   /*!
    * Fill with 2D elements a hole defined by a FreeBorder.
+   * Optionally add new faces to a given group, which is returned
    */
-  void FillHole(const SMESH::FreeBorder& hole)
+  SMESH::SMESH_Group_ptr FillHole(const SMESH::FreeBorder& hole,
+                                  const char*              groupName)
     throw (SALOME::SALOME_Exception);
 
   SMESH::CoincidentFreeBorders* FindCoincidentFreeBorders(CORBA::Double tolerance);
@@ -885,7 +932,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);
 
 
@@ -949,8 +1006,6 @@ public:
   void dumpGroupsList(SMESH::TPythonDump &        theDumpPython,
                       const SMESH::ListOfGroups * theGroupList);
 
-  std::string generateGroupName(const std::string& thePrefix);
-
   void prepareIdSource(SMESH::SMESH_IDSource_ptr theObject);
 
 
@@ -983,8 +1038,6 @@ public:
 
   // temporary IDSources
   struct _IDSource;
-  // std::list< _IDSource* >      myAuxIDSources;
-  // void                         deleteAuxIDSources();
 };
 
 #endif