Salome HOME
PAL0023627: [IMACS] ASERIS: project point to the mesh
[modules/smesh.git] / src / SMESH / SMESH_MeshEditor.hxx
index 1773a1bf6980c605141cbc56f74586c4bfe1f2ed..8e605ab9294f43ebb94a88e69554620dc3c40714 100644 (file)
@@ -199,7 +199,7 @@ public:
                   const bool         the13Diag);
   /*!
    * \brief Split each of given quadrangles into 4 triangles.
-   * \param theElems - The faces to be splitted. If empty all faces are split.
+   * \param theElems - The faces to be split. If empty all faces are split.
    */
   void QuadTo4Tri (TIDSortedElemSet & theElems);
 
@@ -465,6 +465,14 @@ public:
                        SMESH_Mesh*        theTargetMesh=0);
   // Move or copy theElements applying theTrsf to their nodes
 
+  PGroupIDs Offset( TIDSortedElemSet & theElements,
+                    const double       theValue,
+                    SMESH_Mesh*        theTgtMesh,
+                    const bool         theMakeGroups,
+                    const bool         theCopyElements,
+                    const bool         theFixSelfIntersection);
+  // Make an offset mesh from a source 2D mesh
+
   typedef std::list< std::list< const SMDS_MeshNode* > > TListOfListOfNodes;
 
   void FindCoincidentNodes (TIDSortedNodeSet &   theNodes,
@@ -542,7 +550,7 @@ public:
   // of the side 2. If nb of links in the free border and
   // between theSide2FirstNode and theSide2LastNode are different,
   // additional nodes are inserted on a link provided that no
-  // volume elements share the splitted link.
+  // volume elements share the split link.
   // The side 2 is a free border if theSide2IsFreeBorder == true.
   // Sewing is performed between the given first, second and last
   // nodes on the sides.
@@ -713,12 +721,19 @@ public:
   // structure used in MakePolyLine() to define a cutting plane
   struct PolySegment
   {
-    // 2 points: if myNode2 != 0, then the point is the middle of a face edge defined
-    //           by two nodes, else it is at myNode1
-    const SMDS_MeshNode* myNode1[2];
-    const SMDS_MeshNode* myNode2[2];
-
-    gp_Vec myVector; // vector on the plane; to use a default plane set vector = (0,0,0)
+    // 2 points, each defined as follows:
+    // ( myNode1 &&  myNode2 ) ==> point is in the middle of an edge defined by two nodes
+    // ( myNode1 && !myNode2 ) ==> point is at myNode1
+    // else                    ==> point is at myXYZ
+    const SMDS_MeshNode*    myNode1[2];
+    const SMDS_MeshNode*    myNode2[2];
+    gp_XYZ                  myXYZ  [2];
+
+    // face on which myXYZ projects (found by MakePolyLine())
+    const SMDS_MeshElement* myFace [2];
+
+    // vector on the plane; to use a default plane set vector = (0,0,0)
+    gp_Vec myVector;
 
     // point to return coordinates of a middle of the two points, projected to mesh
     gp_Pnt myMidProjPoint;