1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 // File : SMESH_MeshEditor.idl
25 #ifndef _SMESH_MESHEDITOR_IDL_
26 #define _SMESH_MESHEDITOR_IDL_
28 #include "SMESH_Mesh.idl"
33 * This interface makes modifications on the Mesh - removing elements and nodes etc.
35 interface NumericalFunctor;
36 interface SMESH_MeshEditor
39 * \brief Wrap a sequence of ids in a SMESH_IDSource
41 SMESH_IDSource MakeIDSource(in long_array IDsOfElements);
43 boolean RemoveElements(in long_array IDsOfElements);
45 boolean RemoveNodes(in long_array IDsOfNodes);
47 long AddNode(in double x, in double y, in double z);
50 * Create 0D element on the given node.
51 * \param IdOfNode Node IDs for creation of element.
53 long Add0DElement(in long IDOfNode);
56 * Create edge, either linear and quadratic (this is determed
57 * by number of given nodes).
58 * \param IdsOfNodes List of node IDs for creation of element.
59 * Needed order of nodes in this list corresponds to description
60 * of MED. This description is located by the following link:
61 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
63 long AddEdge(in long_array IDsOfNodes);
66 * Create face, either linear and quadratic (this is determed
67 * by number of given nodes).
68 * \param IdsOfNodes List of node IDs for creation of element.
69 * Needed order of nodes in this list corresponds to description
70 * of MED. This description is located by the following link:
71 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
73 long AddFace(in long_array IDsOfNodes);
75 long AddPolygonalFace(in long_array IdsOfNodes);
78 * Create volume, either linear and quadratic (this is determed
79 * by number of given nodes).
80 * \param IdsOfNodes List of node IDs for creation of element.
81 * Needed order of nodes in this list corresponds to description
82 * of MED. This description is located by the following link:
83 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
85 long AddVolume(in long_array IDsOfNodes);
88 * Create volume of many faces, giving nodes for each face.
89 * \param IdsOfNodes List of node IDs for volume creation face by face.
90 * \param Quantities List of integer values, Quantities[i]
91 * gives quantity of nodes in face number i.
93 long AddPolyhedralVolume (in long_array IdsOfNodes,
94 in long_array Quantities);
97 * Create volume of many faces, giving IDs of existing faces.
98 * \param IdsOfFaces List of face IDs for volume creation.
99 * \note The created volume will refer only to nodes
100 * of the given faces, not to the faces itself.
102 long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces);
105 * \brief Bind a node to a vertex
106 * \param NodeID - node ID
107 * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
109 void SetNodeOnVertex(in long NodeID, in long VertexID)
110 raises (SALOME::SALOME_Exception);
112 * \brief Store node position on an edge
113 * \param NodeID - node ID
114 * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
115 * \param paramOnEdge - parameter on edge where the node is located
117 void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
118 raises (SALOME::SALOME_Exception);
120 * \brief Store node position on a face
121 * \param NodeID - node ID
122 * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
123 * \param u - U parameter on face where the node is located
124 * \param v - V parameter on face where the node is located
126 void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
127 raises (SALOME::SALOME_Exception);
129 * \brief Bind a node to a solid
130 * \param NodeID - node ID
131 * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
133 void SetNodeInVolume(in long NodeID, in long SolidID)
134 raises (SALOME::SALOME_Exception);
136 * \brief Bind an element to a shape
137 * \param ElementID - element ID
138 * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
140 void SetMeshElementOnShape(in long ElementID, in long ShapeID)
141 raises (SALOME::SALOME_Exception);
144 boolean MoveNode(in long NodeID, in double x, in double y, in double z);
146 boolean InverseDiag(in long NodeID1, in long NodeID2);
148 boolean DeleteDiag(in long NodeID1, in long NodeID2);
150 boolean Reorient(in long_array IDsOfElements);
152 boolean ReorientObject(in SMESH_IDSource theObject);
155 * \brief Fuse neighbour triangles into quadrangles.
156 * \param theElems The triangles to be fused.
157 * \param theCriterion Is used to choose a neighbour to fuse with.
158 * \param theMaxAngle Is a max angle between element normals at which fusion
159 * is still performed; theMaxAngle is mesured in radians.
160 * \return TRUE in case of success, FALSE otherwise.
162 boolean TriToQuad (in long_array IDsOfElements,
163 in NumericalFunctor Criterion,
167 * \brief Fuse neighbour triangles into quadrangles.
169 * Behaves like the above method, taking list of elements from \a theObject
171 boolean TriToQuadObject (in SMESH_IDSource theObject,
172 in NumericalFunctor Criterion,
176 * \brief Split quadrangles into triangles.
177 * \param theElems The faces to be splitted.
178 * \param theCriterion Is used to choose a diagonal for splitting.
179 * \return TRUE in case of success, FALSE otherwise.
181 boolean QuadToTri (in long_array IDsOfElements,
182 in NumericalFunctor Criterion);
185 * \brief Split quadrangles into triangles.
187 * Behaves like the above method, taking list of elements from \a theObject
189 boolean QuadToTriObject (in SMESH_IDSource theObject,
190 in NumericalFunctor Criterion);
193 * \brief Split quadrangles into triangles.
194 * \param theElems The faces to be splitted.
195 * \param the13Diag Is used to choose a diagonal for splitting.
196 * \return TRUE in case of success, FALSE otherwise.
198 boolean SplitQuad (in long_array IDsOfElements,
202 * \brief Split quadrangles into triangles.
204 * Behaves like the above method, taking list of elements from \a theObject
206 boolean SplitQuadObject (in SMESH_IDSource theObject,
210 * Find better splitting of the given quadrangle.
211 * \param IDOfQuad ID of the quadrangle to be splitted.
212 * \param Criterion A criterion to choose a diagonal for splitting.
213 * \return 1 if 1-3 diagonal is better, 2 if 2-4
214 * diagonal is better, 0 if error occurs.
216 long BestSplit (in long IDOfQuad,
217 in NumericalFunctor Criterion);
220 * \brief Split volumic elements into tetrahedrons
221 * \param elems - elements to split
222 * \param methodFlags - flags passing splitting method:
223 * 1 - split the hexahedron into 5 tetrahedrons
224 * 2 - split the hexahedron into 6 tetrahedrons
226 //void SplitVolumesIntoTetra(in SMESH_IDSource elems, in short methodFlags)
227 //raises (SALOME::SALOME_Exception);
230 enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
232 boolean Smooth(in long_array IDsOfElements,
233 in long_array IDsOfFixedNodes,
234 in long MaxNbOfIterations,
235 in double MaxAspectRatio,
236 in Smooth_Method Method);
238 boolean SmoothObject(in SMESH_IDSource theObject,
239 in long_array IDsOfFixedNodes,
240 in long MaxNbOfIterations,
241 in double MaxAspectRatio,
242 in Smooth_Method Method);
244 boolean SmoothParametric(in long_array IDsOfElements,
245 in long_array IDsOfFixedNodes,
246 in long MaxNbOfIterations,
247 in double MaxAspectRatio,
248 in Smooth_Method Method);
250 boolean SmoothParametricObject(in SMESH_IDSource theObject,
251 in long_array IDsOfFixedNodes,
252 in long MaxNbOfIterations,
253 in double MaxAspectRatio,
254 in Smooth_Method Method);
256 void ConvertToQuadratic(in boolean theForce3d);
258 boolean ConvertFromQuadratic();
260 void RenumberNodes();
262 void RenumberElements();
265 * \brief Genarate dim+1 elements by rotation of given elements around axis
266 * \param IDsOfElements - elements to ratate
267 * \param Axix - rotation axis
268 * \param AngleInRadians - rotation angle
269 * \param NbOfSteps - number of elements to generate from one element
271 void RotationSweep(in long_array IDsOfElements,
273 in double AngleInRadians,
275 in double Tolerance);
277 * \brief Same as previous but additionally create groups of elements
278 * generated from elements belonging to preexisting groups
280 ListOfGroups RotationSweepMakeGroups(in long_array IDsOfElements,
282 in double AngleInRadians,
284 in double Tolerance);
286 * \brief Genarate dim+1 elements by rotation of the object around axis
287 * \param theObject - object containing elements to ratate
288 * \param Axix - rotation axis
289 * \param AngleInRadians - rotation angle
290 * \param NbOfSteps - number of elements to generate from one element
292 void RotationSweepObject(in SMESH_IDSource theObject,
294 in double AngleInRadians,
296 in double Tolerance);
298 * \brief Same as previous but additionally create groups of elements
299 * generated from elements belonging to preexisting groups
301 ListOfGroups RotationSweepObjectMakeGroups(in SMESH_IDSource theObject,
303 in double AngleInRadians,
305 in double Tolerance);
307 * \brief Genarate dim+1 elements by rotation of the object around axis
308 * \param theObject - object containing elements to ratate
309 * \param Axix - rotation axis
310 * \param AngleInRadians - rotation angle
311 * \param NbOfSteps - number of elements to generate from one element
313 void RotationSweepObject1D(in SMESH_IDSource theObject,
315 in double AngleInRadians,
317 in double Tolerance);
319 * \brief Same as previous but additionally create groups of elements
320 * generated from elements belonging to preexisting groups
322 ListOfGroups RotationSweepObject1DMakeGroups(in SMESH_IDSource theObject,
324 in double AngleInRadians,
326 in double Tolerance);
328 * \brief Genarate dim+1 elements by rotation of the object around axis
329 * \param theObject - object containing elements to ratate
330 * \param Axix - rotation axis
331 * \param AngleInRadians - rotation angle
332 * \param NbOfSteps - number of elements to generate from one element
334 void RotationSweepObject2D(in SMESH_IDSource theObject,
336 in double AngleInRadians,
338 in double Tolerance);
340 * \brief Same as previous but additionally create groups of elements
341 * generated from elements belonging to preexisting groups
343 ListOfGroups RotationSweepObject2DMakeGroups(in SMESH_IDSource theObject,
345 in double AngleInRadians,
347 in double Tolerance);
349 * \brief Genarate dim+1 elements by extrusion of elements along vector
350 * \param IDsOfElements - elements to sweep
351 * \param StepVector - vector giving direction and distance of an extrusion step
352 * \param NbOfSteps - number of elements to generate from one element
354 void ExtrusionSweep(in long_array IDsOfElements,
355 in DirStruct StepVector,
358 * \brief Same as previous but additionally create groups of elements
359 * generated from elements belonging to preexisting groups
361 ListOfGroups ExtrusionSweepMakeGroups(in long_array IDsOfElements,
362 in DirStruct StepVector,
365 * Generate new elements by extrusion of theElements
366 * by StepVector by NbOfSteps
367 * param ExtrFlags set flags for performing extrusion
368 * param SewTolerance - uses for comparing locations of nodes if flag
369 * EXTRUSION_FLAG_SEW is set
371 void AdvancedExtrusion(in long_array IDsOfElements,
372 in DirStruct StepVector,
375 in double SewTolerance);
377 * \brief Same as previous but additionally create groups of elements
378 * generated from elements belonging to preexisting groups
380 ListOfGroups AdvancedExtrusionMakeGroups(in long_array IDsOfElements,
381 in DirStruct StepVector,
384 in double SewTolerance);
386 void ExtrusionSweepObject(in SMESH_IDSource theObject,
387 in DirStruct StepVector,
389 ListOfGroups ExtrusionSweepObjectMakeGroups(in SMESH_IDSource theObject,
390 in DirStruct StepVector,
393 void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
394 in DirStruct StepVector,
396 ListOfGroups ExtrusionSweepObject1DMakeGroups(in SMESH_IDSource theObject,
397 in DirStruct StepVector,
400 void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
401 in DirStruct StepVector,
403 ListOfGroups ExtrusionSweepObject2DMakeGroups(in SMESH_IDSource theObject,
404 in DirStruct StepVector,
407 enum Extrusion_Error {
412 EXTR_BAD_STARTING_NODE,
413 EXTR_BAD_ANGLES_NUMBER,
414 EXTR_CANT_GET_TANGENT
417 ListOfGroups ExtrusionAlongPathX(in long_array IDsOfElements,
418 in SMESH_IDSource Path,
420 in boolean HasAngles,
421 in double_array Angles,
422 in boolean LinearVariation,
423 in boolean HasRefPoint,
424 in PointStruct RefPoint,
425 in boolean MakeGroups,
426 in ElementType ElemType,
427 out Extrusion_Error Error);
429 ListOfGroups ExtrusionAlongPathObjX(in SMESH_IDSource theObject,
430 in SMESH_IDSource Path,
432 in boolean HasAngles,
433 in double_array Angles,
434 in boolean LinearVariation,
435 in boolean HasRefPoint,
436 in PointStruct RefPoint,
437 in boolean MakeGroups,
438 in ElementType ElemType,
439 out Extrusion_Error Error);
441 Extrusion_Error ExtrusionAlongPath(in long_array IDsOfElements,
442 in SMESH_Mesh PathMesh,
443 in GEOM::GEOM_Object PathShape,
445 in boolean HasAngles,
446 in double_array Angles,
447 in boolean HasRefPoint,
448 in PointStruct RefPoint);
449 ListOfGroups ExtrusionAlongPathMakeGroups(in long_array IDsOfElements,
450 in SMESH_Mesh PathMesh,
451 in GEOM::GEOM_Object PathShape,
453 in boolean HasAngles,
454 in double_array Angles,
455 in boolean HasRefPoint,
456 in PointStruct RefPoint,
457 out Extrusion_Error Error);
459 Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject,
460 in SMESH_Mesh PathMesh,
461 in GEOM::GEOM_Object PathShape,
463 in boolean HasAngles,
464 in double_array Angles,
465 in boolean HasRefPoint,
466 in PointStruct RefPoint);
467 ListOfGroups ExtrusionAlongPathObjectMakeGroups(in SMESH_IDSource theObject,
468 in SMESH_Mesh PathMesh,
469 in GEOM::GEOM_Object PathShape,
471 in boolean HasAngles,
472 in double_array Angles,
473 in boolean HasRefPoint,
474 in PointStruct RefPoint,
475 out Extrusion_Error Error);
477 Extrusion_Error ExtrusionAlongPathObject1D(in SMESH_IDSource theObject,
478 in SMESH_Mesh PathMesh,
479 in GEOM::GEOM_Object PathShape,
481 in boolean HasAngles,
482 in double_array Angles,
483 in boolean HasRefPoint,
484 in PointStruct RefPoint);
485 ListOfGroups ExtrusionAlongPathObject1DMakeGroups(in SMESH_IDSource theObject,
486 in SMESH_Mesh PathMesh,
487 in GEOM::GEOM_Object PathShape,
489 in boolean HasAngles,
490 in double_array Angles,
491 in boolean HasRefPoint,
492 in PointStruct RefPoint,
493 out Extrusion_Error Error);
495 Extrusion_Error ExtrusionAlongPathObject2D(in SMESH_IDSource theObject,
496 in SMESH_Mesh PathMesh,
497 in GEOM::GEOM_Object PathShape,
499 in boolean HasAngles,
500 in double_array Angles,
501 in boolean HasRefPoint,
502 in PointStruct RefPoint);
503 ListOfGroups ExtrusionAlongPathObject2DMakeGroups(in SMESH_IDSource theObject,
504 in SMESH_Mesh PathMesh,
505 in GEOM::GEOM_Object PathShape,
507 in boolean HasAngles,
508 in double_array Angles,
509 in boolean HasRefPoint,
510 in PointStruct RefPoint,
511 out Extrusion_Error Error);
514 * Compute rotation angles for ExtrusionAlongPath as linear variation
515 * of given angles along path steps
516 * param PathMesh mesh containing a 1D sub-mesh on the edge, along
517 * which proceeds the extrusion
518 * param PathShape is shape(edge); as the mesh can be complex, the edge
519 * is used to define the sub-mesh for the path
521 double_array LinearAnglesVariation(in SMESH_Mesh PathMesh,
522 in GEOM::GEOM_Object PathShape,
523 in double_array Angles);
525 enum MirrorType { POINT, AXIS, PLANE };
527 void Mirror (in long_array IDsOfElements,
528 in AxisStruct Mirror,
531 ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
532 in AxisStruct Mirror,
534 SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
535 in AxisStruct Mirror,
537 in boolean CopyGroups,
540 void MirrorObject (in SMESH_IDSource theObject,
541 in AxisStruct Mirror,
544 ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject,
545 in AxisStruct Mirror,
547 SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject,
548 in AxisStruct Mirror,
550 in boolean CopyGroups,
553 void Translate (in long_array IDsOfElements,
556 ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
557 in DirStruct Vector);
558 SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
560 in boolean CopyGroups,
563 void TranslateObject (in SMESH_IDSource theObject,
566 ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject,
567 in DirStruct Vector);
568 SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject,
570 in boolean CopyGroups,
573 void Scale (in SMESH_IDSource theObject,
574 in PointStruct thePoint,
575 in double_array theScaleFact,
577 ListOfGroups ScaleMakeGroups (in SMESH_IDSource theObject,
578 in PointStruct thePoint,
579 in double_array theScaleFact);
580 SMESH_Mesh ScaleMakeMesh (in SMESH_IDSource theObject,
581 in PointStruct thePoint,
582 in double_array theScaleFact,
583 in boolean CopyGroups,
586 void Rotate (in long_array IDsOfElements,
588 in double AngleInRadians,
590 ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
592 in double AngleInRadians);
593 SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
595 in double AngleInRadians,
596 in boolean CopyGroups,
599 void RotateObject (in SMESH_IDSource theObject,
601 in double AngleInRadians,
603 ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject,
605 in double AngleInRadians);
606 SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject,
608 in double AngleInRadians,
609 in boolean CopyGroups,
612 void FindCoincidentNodes (in double Tolerance,
613 out array_of_long_array GroupsOfNodes);
615 void FindCoincidentNodesOnPart (in SMESH_IDSource SubMeshOrGroup,
617 out array_of_long_array GroupsOfNodes);
619 void MergeNodes (in array_of_long_array GroupsOfNodes);
622 * \brief Find elements built on the same nodes.
623 * \param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching.
624 * \return List of groups of equal elements.
626 void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup,
627 out array_of_long_array GroupsOfElementsID);
630 * \brief Merge elements in each given group.
631 * \param GroupsOfElementsID Groups of elements for merging.
633 void MergeElements(in array_of_long_array GroupsOfElementsID);
636 * \brief Merge equal elements in the whole mesh.
638 void MergeEqualElements();
641 * If the given ID is a valid node ID (nodeID > 0), just move this node, else
642 * move the node closest to the point to point's location and return ID of the node
644 long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID);
647 * Return ID of node closest to a given point
649 long FindNodeClosestTo(in double x, in double y, in double z);
652 * Return elements of given type where the given point is IN or ON.
654 * 'ALL' type means elements of any type excluding nodes and 0D elements
656 long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type);
660 SEW_BORDER1_NOT_FOUND,
661 SEW_BORDER2_NOT_FOUND,
662 SEW_BOTH_BORDERS_NOT_FOUND,
664 SEW_VOLUMES_TO_SPLIT,
665 // for SewSideElements() only:
666 SEW_DIFF_NB_OF_ELEMENTS,
667 SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
672 Sew_Error SewFreeBorders (in long FirstNodeID1,
673 in long SecondNodeID1,
675 in long FirstNodeID2,
676 in long SecondNodeID2,
678 in boolean CreatePolygons,
679 in boolean CreatePolyedrs);
681 Sew_Error SewConformFreeBorders (in long FirstNodeID1,
682 in long SecondNodeID1,
684 in long FirstNodeID2,
685 in long SecondNodeID2);
687 Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
688 in long SecondNodeIDOnFreeBorder,
689 in long LastNodeIDOnFreeBorder,
690 in long FirstNodeIDOnSide,
691 in long LastNodeIDOnSide,
692 in boolean CreatePolygons,
693 in boolean CreatePolyedrs);
695 Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
696 in long_array IDsOfSide2Elements,
697 in long NodeID1OfSide1ToMerge,
698 in long NodeID1OfSide2ToMerge,
699 in long NodeID2OfSide1ToMerge,
700 in long NodeID2OfSide2ToMerge);
703 * Set new nodes for given element.
704 * If number of nodes is not corresponded to type of
705 * element - returns false
707 boolean ChangeElemNodes(in long ide, in long_array newIDs);
710 * Return data of mesh edition preview which is computed provided
711 * that the editor was obtained trough SMESH_Mesh::GetMeshEditPreviewer()
713 MeshPreviewStruct GetPreviewData();
716 * If during last operation of MeshEditor some nodes were
717 * created this method returns list of it's IDs, if new nodes
718 * not creared - returns empty list
720 long_array GetLastCreatedNodes();
723 * If during last operation of MeshEditor some elements were
724 * created this method returns list of it's IDs, if new elements
725 * not creared - returns empty list
727 long_array GetLastCreatedElems();
730 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
731 * \param theNodes - identifiers of nodes to be doubled
732 * \param theModifiedElems - identifiers of elements to be updated by the new (doubled)
733 * nodes. If list of element identifiers is empty then nodes are doubled but
734 * they not assigned to elements
735 * \return TRUE if operation has been completed successfully, FALSE otherwise
736 * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodeGroups()
738 boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems );
741 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
742 * This method provided for convenience works as DoubleNodes() described above.
743 * \param theNodeId - identifier of node to be doubled.
744 * \param theModifiedElems - identifiers of elements to be updated.
745 * \return TRUE if operation has been completed successfully, FALSE otherwise
746 * \sa DoubleNodes(), DoubleNodeGroup(), DoubleNodeGroups()
748 boolean DoubleNode( in long theNodeId, in long_array theModifiedElems );
751 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
752 * This method provided for convenience works as DoubleNodes() described above.
753 * \param theNodes - group of nodes to be doubled.
754 * \param theModifiedElems - group of elements to be updated.
755 * \return TRUE if operation has been completed successfully, FALSE otherwise
756 * \sa DoubleNode(), DoubleNodes(), DoubleNodeGroups()
758 boolean DoubleNodeGroup( in SMESH_GroupBase theNodes,
759 in SMESH_GroupBase theModifiedElems );
762 \brief Creates a hole in a mesh by doubling the nodes of some particular elements
763 This method provided for convenience works as DoubleNodes() described above.
764 \param theNodes - list of groups of nodes to be doubled
765 \param theModifiedElems - list of groups of elements to be updated.
766 \return TRUE if operation has been completed successfully, FALSE otherwise
767 \sa DoubleNode(), DoubleNodeGroup(), DoubleNodes()
769 boolean DoubleNodeGroups( in ListOfGroups theNodes,
770 in ListOfGroups theModifiedElems );
773 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
774 * \param theElems - the list of elements (edges or faces) to be replicated
775 * The nodes for duplication could be found from these elements
776 * \param theNodesNot - list of nodes to NOT replicate
777 * \param theAffectedElems - the list of elements (cells and edges) to which the
778 * replicated nodes should be associated to.
779 * \return TRUE if operation has been completed successfully, FALSE otherwise
780 * \sa DoubleNodeGroup(), DoubleNodeGroups()
782 boolean DoubleNodeElem( in long_array theElems,
783 in long_array theNodesNot,
784 in long_array theAffectedElems );
787 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
788 * \param theElems - the list of elements (edges or faces) to be replicated
789 * The nodes for duplication could be found from these elements
790 * \param theNodesNot - list of nodes to NOT replicate
791 * \param theShape - shape to detect affected elements (element which geometric center
792 * located on or inside shape).
793 * The replicated nodes should be associated to affected elements.
794 * \return TRUE if operation has been completed successfully, FALSE otherwise
795 * \sa DoubleNodeGroupInRegion(), DoubleNodeGroupsInRegion()
797 boolean DoubleNodeElemInRegion( in long_array theElems,
798 in long_array theNodesNot,
799 in GEOM::GEOM_Object theShape );
802 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
803 * This method provided for convenience works as DoubleNodes() described above.
804 * \param theElems - group of of elements (edges or faces) to be replicated
805 * \param theNodesNot - group of nodes not to replicated
806 * \param theAffectedElems - group of elements to which the replicated nodes
807 * should be associated to.
808 * \return TRUE if operation has been completed successfully, FALSE otherwise
809 * \sa DoubleNodes(), DoubleNodeGroups()
811 boolean DoubleNodeElemGroup( in SMESH_GroupBase theElems,
812 in SMESH_GroupBase theNodesNot,
813 in SMESH_GroupBase theAffectedElems );
816 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
817 * This method provided for convenience works as DoubleNodes() described above.
818 * \param theElems - group of elements (edges or faces) to be replicated
819 * \param theNodesNot - group of nodes not to replicated
820 * \param theShape - shape to detect affected elements (element which geometric center
821 * located on or inside shape).
822 * The replicated nodes should be associated to affected elements.
823 * \return TRUE if operation has been completed successfully, FALSE otherwise
824 * \sa DoubleNodesInRegion(), DoubleNodeGroupsInRegion()
826 boolean DoubleNodeElemGroupInRegion( in SMESH_GroupBase theElems,
827 in SMESH_GroupBase theNodesNot,
828 in GEOM::GEOM_Object theShape );
831 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
832 * This method provided for convenience works as DoubleNodes() described above.
833 * \param theElems - list of groups of elements (edges or faces) to be replicated
834 * \param theNodesNot - list of groups of nodes not to replicated
835 * \param theAffectedElems - group of elements to which the replicated nodes
836 * should be associated to.
837 * \return TRUE if operation has been completed successfully, FALSE otherwise
838 * \sa DoubleNodeGroup(), DoubleNodes()
840 boolean DoubleNodeElemGroups( in ListOfGroups theElems,
841 in ListOfGroups theNodesNot,
842 in ListOfGroups theAffectedElems );
845 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
846 * This method provided for convenience works as DoubleNodes() described above.
847 * \param theElems - list of groups of elements (edges or faces) to be replicated
848 * \param theNodesNot - list of groups of nodes not to replicated
849 * \param theShape - shape to detect affected elements (element which geometric center
850 * located on or inside shape).
851 * The replicated nodes should be associated to affected elements.
852 * \return TRUE if operation has been completed successfully, FALSE otherwise
853 * \sa DoubleNodeGroupInRegion(), DoubleNodesInRegion()
855 boolean DoubleNodeElemGroupsInRegion( in ListOfGroups theElems,
856 in ListOfGroups theNodesNot,
857 in GEOM::GEOM_Object theShape );
860 * \brief Generated skin mesh (containing 2D cells) from 3D mesh
861 * The created 2D mesh elements based on nodes of free faces of boundary volumes
862 * \return TRUE if operation has been completed successfully, FALSE otherwise
864 boolean Make2DMeshFrom3D();