Salome HOME
0020105: EDF 862 SMESH : Creation of the skin elements (2D) of a 3D Mesh
[modules/smesh.git] / idl / SMESH_MeshEditor.idl
index b1b36c257f1dd6384a435c088295d353263f57b6..b077a164d168f2e2102330831e219c6f21a267fa 100644 (file)
@@ -614,6 +614,18 @@ module SMESH
      */
     long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID);
 
+    /*!
+     * Return ID of node closest to a given point
+     */
+    long FindNodeClosestTo(in double x, in double y, in double z);
+
+    /*!
+     * Return elements of given type where the given point is IN or ON.
+     *
+     * '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);
+
     enum Sew_Error {
       SEW_OK,
       SEW_BORDER1_NOT_FOUND,
@@ -687,46 +699,97 @@ module SMESH
     
     /*!
      * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
-     * \param theNodes - identifiers of nodes to be doubled
-     * \param theModifiedElems - identifiers of elements to be updated by the new (doubled) 
-     *        nodes. If list of element identifiers is empty then nodes are doubled but 
-     *        they not assigned to elements
-     *        \return TRUE if operation has been completed successfully, FALSE otherwise
-     * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodeGroups()
+     * \param theElems - the list of elements (edges or faces) to be replicated
+     *        The nodes for duplication could be found from these elements
+     * \param theNodesNot - list of nodes to NOT replicate
+     * \param theAffectedElems - the list of elements (cells and edges) to which the 
+     *        replicated nodes should be associated to.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodeGroup(), DoubleNodeGroups()
     */
-    boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems ); 
+    boolean DoubleNodes( in long_array theElems,
+                         in long_array theNodesNot,
+                         in long_array theAffectedElems ); 
 
     /*!
-    * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
-    * This method provided for convenience works as DoubleNodes() described above.
-    * \param theNodeId - identifier of node to be doubled.
-    * \param theModifiedElems - identifiers of elements to be updated.
-    * \return TRUE if operation has been completed successfully, FALSE otherwise
-    * \sa DoubleNodes(), DoubleNodeGroup(), DoubleNodeGroups()
+     * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
+     * \param theElems - the list of elements (edges or faces) to be replicated
+     *        The nodes for duplication could be found from these elements
+     * \param theNodesNot - list of nodes to NOT replicate
+     * \param theShape - shape to detect affected elements (element which geometric center
+     *        located on or inside shape).
+     *        The replicated nodes should be associated to affected elements.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodeGroupInRegion(), DoubleNodeGroupsInRegion()
     */
-    boolean DoubleNode( in long theNodeId, in long_array theModifiedElems ); 
+    boolean DoubleNodesInRegion( in long_array theElems,
+                                 in long_array theNodesNot,
+                                 in GEOM::GEOM_Object theShape );
 
     /*!
-    * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
-    * This method provided for convenience works as DoubleNodes() described above.
-    * \param theNodes - group of nodes to be doubled.
-    * \param theModifiedElems - group of elements to be updated.
-    * \return TRUE if operation has been completed successfully, FALSE otherwise
-    * \sa DoubleNode(), DoubleNodes(), DoubleNodeGroups()
+     * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
+     * This method provided for convenience works as DoubleNodes() described above.
+     * \param theElems - group of of elements (edges or faces) to be replicated
+     * \param theNodesNot - group of nodes not to replicated
+     * \param theAffectedElems - group of elements to which the replicated nodes
+     *        should be associated to.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodes(), DoubleNodeGroups()
     */
-    boolean DoubleNodeGroup( in SMESH_GroupBase theNodes, 
-                             in SMESH_GroupBase theModifiedElems );
+    boolean DoubleNodeGroup( in SMESH_GroupBase theElems, 
+                             in SMESH_GroupBase theNodesNot,
+                             in SMESH_GroupBase theAffectedElems );
 
     /*!
-    \brief Creates a hole in a mesh by doubling the nodes of some particular elements
-    This method provided for convenience works as DoubleNodes() described above.
-    \param theNodes - list of groups of nodes to be doubled
-    \param theModifiedElems - list of groups of elements to be updated.
-    \return TRUE if operation has been completed successfully, FALSE otherwise
-    \sa DoubleNode(), DoubleNodeGroup(), DoubleNodes()
+     * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
+     * This method provided for convenience works as DoubleNodes() described above.
+     * \param theElems - group of elements (edges or faces) to be replicated
+     * \param theNodesNot - group of nodes not to replicated
+     * \param theShape - shape to detect affected elements (element which geometric center
+     *        located on or inside shape).
+     *        The replicated nodes should be associated to affected elements.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodesInRegion(), DoubleNodeGroupsInRegion()
     */
-    boolean DoubleNodeGroups( in ListOfGroups theNodes, 
-                              in ListOfGroups theModifiedElems );
+    boolean DoubleNodeGroupInRegion( in SMESH_GroupBase theElems, 
+                                     in SMESH_GroupBase theNodesNot,
+                                     in GEOM::GEOM_Object theShape );
+
+    /*!
+     * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
+     * This method provided for convenience works as DoubleNodes() described above.
+     * \param theElems - list of groups of elements (edges or faces) to be replicated
+     * \param theNodesNot - list of groups of nodes not to replicated
+     * \param theAffectedElems - group of elements to which the replicated nodes
+     *        should be associated to.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodeGroup(), DoubleNodes()
+    */
+    boolean DoubleNodeGroups( in ListOfGroups theElems,
+                              in ListOfGroups theNodesNot,
+                              in ListOfGroups theAffectedElems );
+
+    /*!
+     * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
+     * This method provided for convenience works as DoubleNodes() described above.
+     * \param theElems - list of groups of elements (edges or faces) to be replicated
+     * \param theNodesNot - list of groups of nodes not to replicated
+     * \param theShape - shape to detect affected elements (element which geometric center
+     *        located on or inside shape).
+     *        The replicated nodes should be associated to affected elements.
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     * \sa DoubleNodeGroupInRegion(), DoubleNodesInRegion()
+    */
+    boolean DoubleNodeGroupsInRegion( in ListOfGroups theElems,
+                                      in ListOfGroups theNodesNot,
+                                      in GEOM::GEOM_Object theShape );
+
+    /*!
+     * \brief Generated skin mesh (containing 2D cells) from 3D mesh
+     * The created 2D mesh elements based on nodes of free faces of boundary volumes
+     * \return TRUE if operation has been completed successfully, FALSE otherwise
+     */
+    boolean Make2DMeshFrom3D();
 
   };
 };