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
38 boolean RemoveElements(in long_array IDsOfElements);
40 boolean RemoveNodes(in long_array IDsOfNodes);
42 long AddNode(in double x, in double y, in double z);
45 * Create 0D element on the given node.
46 * \param IdOfNode Node IDs for creation of element.
48 long Add0DElement(in long IDOfNode);
51 * Create edge, either linear and quadratic (this is determed
52 * by number of given nodes).
53 * \param IdsOfNodes List of node IDs for creation of element.
54 * Needed order of nodes in this list corresponds to description
55 * of MED. This description is located by the following link:
56 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
58 long AddEdge(in long_array IDsOfNodes);
61 * Create face, either linear and quadratic (this is determed
62 * by number of given nodes).
63 * \param IdsOfNodes List of node IDs for creation of element.
64 * Needed order of nodes in this list corresponds to description
65 * of MED. This description is located by the following link:
66 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
68 long AddFace(in long_array IDsOfNodes);
70 long AddPolygonalFace(in long_array IdsOfNodes);
73 * Create volume, either linear and quadratic (this is determed
74 * by number of given nodes).
75 * \param IdsOfNodes List of node IDs for creation of element.
76 * Needed order of nodes in this list corresponds to description
77 * of MED. This description is located by the following link:
78 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
80 long AddVolume(in long_array IDsOfNodes);
83 * Create volume of many faces, giving nodes for each face.
84 * \param IdsOfNodes List of node IDs for volume creation face by face.
85 * \param Quantities List of integer values, Quantities[i]
86 * gives quantity of nodes in face number i.
88 long AddPolyhedralVolume (in long_array IdsOfNodes,
89 in long_array Quantities);
92 * Create volume of many faces, giving IDs of existing faces.
93 * \param IdsOfFaces List of face IDs for volume creation.
94 * \note The created volume will refer only to nodes
95 * of the given faces, not to the faces itself.
97 long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces);
100 * \brief Bind a node to a vertex
101 * \param NodeID - node ID
102 * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
104 void SetNodeOnVertex(in long NodeID, in long VertexID)
105 raises (SALOME::SALOME_Exception);
107 * \brief Store node position on an edge
108 * \param NodeID - node ID
109 * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
110 * \param paramOnEdge - parameter on edge where the node is located
112 void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
113 raises (SALOME::SALOME_Exception);
115 * \brief Store node position on a face
116 * \param NodeID - node ID
117 * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
118 * \param u - U parameter on face where the node is located
119 * \param v - V parameter on face where the node is located
121 void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
122 raises (SALOME::SALOME_Exception);
124 * \brief Bind a node to a solid
125 * \param NodeID - node ID
126 * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
128 void SetNodeInVolume(in long NodeID, in long SolidID)
129 raises (SALOME::SALOME_Exception);
131 * \brief Bind an element to a shape
132 * \param ElementID - element ID
133 * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
135 void SetMeshElementOnShape(in long ElementID, in long ShapeID)
136 raises (SALOME::SALOME_Exception);
139 boolean MoveNode(in long NodeID, in double x, in double y, in double z);
141 boolean InverseDiag(in long NodeID1, in long NodeID2);
143 boolean DeleteDiag(in long NodeID1, in long NodeID2);
145 boolean Reorient(in long_array IDsOfElements);
147 boolean ReorientObject(in SMESH_IDSource theObject);
150 * \brief Fuse neighbour triangles into quadrangles.
151 * \param theElems The triangles to be fused.
152 * \param theCriterion Is used to choose a neighbour to fuse with.
153 * \param theMaxAngle Is a max angle between element normals at which fusion
154 * is still performed; theMaxAngle is mesured in radians.
155 * \return TRUE in case of success, FALSE otherwise.
157 boolean TriToQuad (in long_array IDsOfElements,
158 in NumericalFunctor Criterion,
162 * \brief Fuse neighbour triangles into quadrangles.
164 * Behaves like the above method, taking list of elements from \a theObject
166 boolean TriToQuadObject (in SMESH_IDSource theObject,
167 in NumericalFunctor Criterion,
171 * \brief Split quadrangles into triangles.
172 * \param theElems The faces to be splitted.
173 * \param theCriterion Is used to choose a diagonal for splitting.
174 * \return TRUE in case of success, FALSE otherwise.
176 boolean QuadToTri (in long_array IDsOfElements,
177 in NumericalFunctor Criterion);
180 * \brief Split quadrangles into triangles.
182 * Behaves like the above method, taking list of elements from \a theObject
184 boolean QuadToTriObject (in SMESH_IDSource theObject,
185 in NumericalFunctor Criterion);
188 * \brief Split quadrangles into triangles.
189 * \param theElems The faces to be splitted.
190 * \param the13Diag Is used to choose a diagonal for splitting.
191 * \return TRUE in case of success, FALSE otherwise.
193 boolean SplitQuad (in long_array IDsOfElements,
197 * \brief Split quadrangles into triangles.
199 * Behaves like the above method, taking list of elements from \a theObject
201 boolean SplitQuadObject (in SMESH_IDSource theObject,
205 * Find better splitting of the given quadrangle.
206 * \param IDOfQuad ID of the quadrangle to be splitted.
207 * \param Criterion A criterion to choose a diagonal for splitting.
208 * \return 1 if 1-3 diagonal is better, 2 if 2-4
209 * diagonal is better, 0 if error occurs.
211 long BestSplit (in long IDOfQuad,
212 in NumericalFunctor Criterion);
214 enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
216 boolean Smooth(in long_array IDsOfElements,
217 in long_array IDsOfFixedNodes,
218 in long MaxNbOfIterations,
219 in double MaxAspectRatio,
220 in Smooth_Method Method);
222 boolean SmoothObject(in SMESH_IDSource theObject,
223 in long_array IDsOfFixedNodes,
224 in long MaxNbOfIterations,
225 in double MaxAspectRatio,
226 in Smooth_Method Method);
228 boolean SmoothParametric(in long_array IDsOfElements,
229 in long_array IDsOfFixedNodes,
230 in long MaxNbOfIterations,
231 in double MaxAspectRatio,
232 in Smooth_Method Method);
234 boolean SmoothParametricObject(in SMESH_IDSource theObject,
235 in long_array IDsOfFixedNodes,
236 in long MaxNbOfIterations,
237 in double MaxAspectRatio,
238 in Smooth_Method Method);
240 void ConvertToQuadratic(in boolean theForce3d);
242 boolean ConvertFromQuadratic();
244 void RenumberNodes();
246 void RenumberElements();
249 * \brief Genarate dim+1 elements by rotation of given elements around axis
250 * \param IDsOfElements - elements to ratate
251 * \param Axix - rotation axis
252 * \param AngleInRadians - rotation angle
253 * \param NbOfSteps - number of elements to generate from one element
255 void RotationSweep(in long_array IDsOfElements,
257 in double AngleInRadians,
259 in double Tolerance);
261 * \brief Same as previous but additionally create groups of elements
262 * generated from elements belonging to preexisting groups
264 ListOfGroups RotationSweepMakeGroups(in long_array IDsOfElements,
266 in double AngleInRadians,
268 in double Tolerance);
270 * \brief Genarate dim+1 elements by rotation of the object around axis
271 * \param theObject - object containing elements to ratate
272 * \param Axix - rotation axis
273 * \param AngleInRadians - rotation angle
274 * \param NbOfSteps - number of elements to generate from one element
276 void RotationSweepObject(in SMESH_IDSource theObject,
278 in double AngleInRadians,
280 in double Tolerance);
282 * \brief Same as previous but additionally create groups of elements
283 * generated from elements belonging to preexisting groups
285 ListOfGroups RotationSweepObjectMakeGroups(in SMESH_IDSource theObject,
287 in double AngleInRadians,
289 in double Tolerance);
291 * \brief Genarate dim+1 elements by rotation of the object around axis
292 * \param theObject - object containing elements to ratate
293 * \param Axix - rotation axis
294 * \param AngleInRadians - rotation angle
295 * \param NbOfSteps - number of elements to generate from one element
297 void RotationSweepObject1D(in SMESH_IDSource theObject,
299 in double AngleInRadians,
301 in double Tolerance);
303 * \brief Same as previous but additionally create groups of elements
304 * generated from elements belonging to preexisting groups
306 ListOfGroups RotationSweepObject1DMakeGroups(in SMESH_IDSource theObject,
308 in double AngleInRadians,
310 in double Tolerance);
312 * \brief Genarate dim+1 elements by rotation of the object around axis
313 * \param theObject - object containing elements to ratate
314 * \param Axix - rotation axis
315 * \param AngleInRadians - rotation angle
316 * \param NbOfSteps - number of elements to generate from one element
318 void RotationSweepObject2D(in SMESH_IDSource theObject,
320 in double AngleInRadians,
322 in double Tolerance);
324 * \brief Same as previous but additionally create groups of elements
325 * generated from elements belonging to preexisting groups
327 ListOfGroups RotationSweepObject2DMakeGroups(in SMESH_IDSource theObject,
329 in double AngleInRadians,
331 in double Tolerance);
333 * \brief Genarate dim+1 elements by extrusion of elements along vector
334 * \param IDsOfElements - elements to sweep
335 * \param StepVector - vector giving direction and distance of an extrusion step
336 * \param NbOfSteps - number of elements to generate from one element
338 void ExtrusionSweep(in long_array IDsOfElements,
339 in DirStruct StepVector,
342 * \brief Same as previous but additionally create groups of elements
343 * generated from elements belonging to preexisting groups
345 ListOfGroups ExtrusionSweepMakeGroups(in long_array IDsOfElements,
346 in DirStruct StepVector,
349 * Generate new elements by extrusion of theElements
350 * by StepVector by NbOfSteps
351 * param ExtrFlags set flags for performing extrusion
352 * param SewTolerance - uses for comparing locations of nodes if flag
353 * EXTRUSION_FLAG_SEW is set
355 void AdvancedExtrusion(in long_array IDsOfElements,
356 in DirStruct StepVector,
359 in double SewTolerance);
361 * \brief Same as previous but additionally create groups of elements
362 * generated from elements belonging to preexisting groups
364 ListOfGroups AdvancedExtrusionMakeGroups(in long_array IDsOfElements,
365 in DirStruct StepVector,
368 in double SewTolerance);
370 void ExtrusionSweepObject(in SMESH_IDSource theObject,
371 in DirStruct StepVector,
373 ListOfGroups ExtrusionSweepObjectMakeGroups(in SMESH_IDSource theObject,
374 in DirStruct StepVector,
377 void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
378 in DirStruct StepVector,
380 ListOfGroups ExtrusionSweepObject1DMakeGroups(in SMESH_IDSource theObject,
381 in DirStruct StepVector,
384 void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
385 in DirStruct StepVector,
387 ListOfGroups ExtrusionSweepObject2DMakeGroups(in SMESH_IDSource theObject,
388 in DirStruct StepVector,
391 enum Extrusion_Error {
396 EXTR_BAD_STARTING_NODE,
397 EXTR_BAD_ANGLES_NUMBER,
398 EXTR_CANT_GET_TANGENT
401 ListOfGroups ExtrusionAlongPathX(in long_array IDsOfElements,
402 in SMESH_IDSource Path,
404 in boolean HasAngles,
405 in double_array Angles,
406 in boolean LinearVariation,
407 in boolean HasRefPoint,
408 in PointStruct RefPoint,
409 in boolean MakeGroups,
410 in ElementType ElemType,
411 out Extrusion_Error Error);
413 ListOfGroups ExtrusionAlongPathObjX(in SMESH_IDSource theObject,
414 in SMESH_IDSource Path,
416 in boolean HasAngles,
417 in double_array Angles,
418 in boolean LinearVariation,
419 in boolean HasRefPoint,
420 in PointStruct RefPoint,
421 in boolean MakeGroups,
422 in ElementType ElemType,
423 out Extrusion_Error Error);
425 Extrusion_Error ExtrusionAlongPath(in long_array IDsOfElements,
426 in SMESH_Mesh PathMesh,
427 in GEOM::GEOM_Object PathShape,
429 in boolean HasAngles,
430 in double_array Angles,
431 in boolean HasRefPoint,
432 in PointStruct RefPoint);
433 ListOfGroups ExtrusionAlongPathMakeGroups(in long_array IDsOfElements,
434 in SMESH_Mesh PathMesh,
435 in GEOM::GEOM_Object PathShape,
437 in boolean HasAngles,
438 in double_array Angles,
439 in boolean HasRefPoint,
440 in PointStruct RefPoint,
441 out Extrusion_Error Error);
443 Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject,
444 in SMESH_Mesh PathMesh,
445 in GEOM::GEOM_Object PathShape,
447 in boolean HasAngles,
448 in double_array Angles,
449 in boolean HasRefPoint,
450 in PointStruct RefPoint);
451 ListOfGroups ExtrusionAlongPathObjectMakeGroups(in SMESH_IDSource theObject,
452 in SMESH_Mesh PathMesh,
453 in GEOM::GEOM_Object PathShape,
455 in boolean HasAngles,
456 in double_array Angles,
457 in boolean HasRefPoint,
458 in PointStruct RefPoint,
459 out Extrusion_Error Error);
461 Extrusion_Error ExtrusionAlongPathObject1D(in SMESH_IDSource theObject,
462 in SMESH_Mesh PathMesh,
463 in GEOM::GEOM_Object PathShape,
465 in boolean HasAngles,
466 in double_array Angles,
467 in boolean HasRefPoint,
468 in PointStruct RefPoint);
469 ListOfGroups ExtrusionAlongPathObject1DMakeGroups(in SMESH_IDSource theObject,
470 in SMESH_Mesh PathMesh,
471 in GEOM::GEOM_Object PathShape,
473 in boolean HasAngles,
474 in double_array Angles,
475 in boolean HasRefPoint,
476 in PointStruct RefPoint,
477 out Extrusion_Error Error);
479 Extrusion_Error ExtrusionAlongPathObject2D(in SMESH_IDSource theObject,
480 in SMESH_Mesh PathMesh,
481 in GEOM::GEOM_Object PathShape,
483 in boolean HasAngles,
484 in double_array Angles,
485 in boolean HasRefPoint,
486 in PointStruct RefPoint);
487 ListOfGroups ExtrusionAlongPathObject2DMakeGroups(in SMESH_IDSource theObject,
488 in SMESH_Mesh PathMesh,
489 in GEOM::GEOM_Object PathShape,
491 in boolean HasAngles,
492 in double_array Angles,
493 in boolean HasRefPoint,
494 in PointStruct RefPoint,
495 out Extrusion_Error Error);
498 * Compute rotation angles for ExtrusionAlongPath as linear variation
499 * of given angles along path steps
500 * param PathMesh mesh containing a 1D sub-mesh on the edge, along
501 * which proceeds the extrusion
502 * param PathShape is shape(edge); as the mesh can be complex, the edge
503 * is used to define the sub-mesh for the path
505 double_array LinearAnglesVariation(in SMESH_Mesh PathMesh,
506 in GEOM::GEOM_Object PathShape,
507 in double_array Angles);
509 enum MirrorType { POINT, AXIS, PLANE };
511 void Mirror (in long_array IDsOfElements,
512 in AxisStruct Mirror,
515 ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
516 in AxisStruct Mirror,
518 SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
519 in AxisStruct Mirror,
521 in boolean CopyGroups,
524 void MirrorObject (in SMESH_IDSource theObject,
525 in AxisStruct Mirror,
528 ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject,
529 in AxisStruct Mirror,
531 SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject,
532 in AxisStruct Mirror,
534 in boolean CopyGroups,
537 void Translate (in long_array IDsOfElements,
540 ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
541 in DirStruct Vector);
542 SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
544 in boolean CopyGroups,
547 void TranslateObject (in SMESH_IDSource theObject,
550 ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject,
551 in DirStruct Vector);
552 SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject,
554 in boolean CopyGroups,
557 void Rotate (in long_array IDsOfElements,
559 in double AngleInRadians,
561 ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
563 in double AngleInRadians);
564 SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
566 in double AngleInRadians,
567 in boolean CopyGroups,
570 void RotateObject (in SMESH_IDSource theObject,
572 in double AngleInRadians,
574 ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject,
576 in double AngleInRadians);
577 SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject,
579 in double AngleInRadians,
580 in boolean CopyGroups,
583 void FindCoincidentNodes (in double Tolerance,
584 out array_of_long_array GroupsOfNodes);
586 void FindCoincidentNodesOnPart (in SMESH_IDSource SubMeshOrGroup,
588 out array_of_long_array GroupsOfNodes);
590 void MergeNodes (in array_of_long_array GroupsOfNodes);
593 * \brief Find elements built on the same nodes.
594 * \param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching.
595 * \return List of groups of equal elements.
597 void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup,
598 out array_of_long_array GroupsOfElementsID);
601 * \brief Merge elements in each given group.
602 * \param GroupsOfElementsID Groups of elements for merging.
604 void MergeElements(in array_of_long_array GroupsOfElementsID);
607 * \brief Merge equal elements in the whole mesh.
609 void MergeEqualElements();
612 * If the given ID is a valid node ID (nodeID > 0), just move this node, else
613 * move the node closest to the point to point's location and return ID of the node
615 long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID);
619 SEW_BORDER1_NOT_FOUND,
620 SEW_BORDER2_NOT_FOUND,
621 SEW_BOTH_BORDERS_NOT_FOUND,
623 SEW_VOLUMES_TO_SPLIT,
624 // for SewSideElements() only:
625 SEW_DIFF_NB_OF_ELEMENTS,
626 SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
631 Sew_Error SewFreeBorders (in long FirstNodeID1,
632 in long SecondNodeID1,
634 in long FirstNodeID2,
635 in long SecondNodeID2,
637 in boolean CreatePolygons,
638 in boolean CreatePolyedrs);
640 Sew_Error SewConformFreeBorders (in long FirstNodeID1,
641 in long SecondNodeID1,
643 in long FirstNodeID2,
644 in long SecondNodeID2);
646 Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
647 in long SecondNodeIDOnFreeBorder,
648 in long LastNodeIDOnFreeBorder,
649 in long FirstNodeIDOnSide,
650 in long LastNodeIDOnSide,
651 in boolean CreatePolygons,
652 in boolean CreatePolyedrs);
654 Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
655 in long_array IDsOfSide2Elements,
656 in long NodeID1OfSide1ToMerge,
657 in long NodeID1OfSide2ToMerge,
658 in long NodeID2OfSide1ToMerge,
659 in long NodeID2OfSide2ToMerge);
662 * Set new nodes for given element.
663 * If number of nodes is not corresponded to type of
664 * element - returns false
666 boolean ChangeElemNodes(in long ide, in long_array newIDs);
669 * Return data of mesh edition preview which is computed provided
670 * that the editor was obtained trough SMESH_Mesh::GetMeshEditPreviewer()
672 MeshPreviewStruct GetPreviewData();
675 * If during last operation of MeshEditor some nodes were
676 * created this method returns list of it's IDs, if new nodes
677 * not creared - returns empty list
679 long_array GetLastCreatedNodes();
682 * If during last operation of MeshEditor some elements were
683 * created this method returns list of it's IDs, if new elements
684 * not creared - returns empty list
686 long_array GetLastCreatedElems();
689 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
690 * \param theElems - the list of elements (edges or faces) to be replicated
691 * The nodes for duplication could be found from these elements
692 * \param theNodesNot - list of nodes to NOT replicate
693 * \param theAffectedElems - the list of elements (cells and edges) to which the
694 * replicated nodes should be associated to.
695 * \return TRUE if operation has been completed successfully, FALSE otherwise
696 * \sa DoubleNodeGroup(), DoubleNodeGroups()
698 boolean DoubleNodes( in long_array theElems,
699 in long_array theNodesNot,
700 in long_array theAffectedElems );
703 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
704 * \param theElems - the list of elements (edges or faces) to be replicated
705 * The nodes for duplication could be found from these elements
706 * \param theNodesNot - list of nodes to NOT replicate
707 * \param theShape - shape to detect affected elements (element which geometric center
708 * located on or inside shape).
709 * The replicated nodes should be associated to affected elements.
710 * \return TRUE if operation has been completed successfully, FALSE otherwise
711 * \sa DoubleNodeGroupInRegion(), DoubleNodeGroupsInRegion()
713 boolean DoubleNodesInRegion( in long_array theElems,
714 in long_array theNodesNot,
715 in GEOM::GEOM_Object theShape );
718 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
719 * This method provided for convenience works as DoubleNodes() described above.
720 * \param theElems - group of of elements (edges or faces) to be replicated
721 * \param theNodesNot - group of nodes not to replicated
722 * \param theAffectedElems - group of elements to which the replicated nodes
723 * should be associated to.
724 * \return TRUE if operation has been completed successfully, FALSE otherwise
725 * \sa DoubleNodes(), DoubleNodeGroups()
727 boolean DoubleNodeGroup( in SMESH_GroupBase theElems,
728 in SMESH_GroupBase theNodesNot,
729 in SMESH_GroupBase theAffectedElems );
732 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
733 * This method provided for convenience works as DoubleNodes() described above.
734 * \param theElems - group of elements (edges or faces) to be replicated
735 * \param theNodesNot - group of nodes not to replicated
736 * \param theShape - shape to detect affected elements (element which geometric center
737 * located on or inside shape).
738 * The replicated nodes should be associated to affected elements.
739 * \return TRUE if operation has been completed successfully, FALSE otherwise
740 * \sa DoubleNodesInRegion(), DoubleNodeGroupsInRegion()
742 boolean DoubleNodeGroupInRegion( in SMESH_GroupBase theElems,
743 in SMESH_GroupBase theNodesNot,
744 in GEOM::GEOM_Object theShape );
747 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
748 * This method provided for convenience works as DoubleNodes() described above.
749 * \param theElems - list of groups of elements (edges or faces) to be replicated
750 * \param theNodesNot - list of groups of nodes not to replicated
751 * \param theAffectedElems - group of elements to which the replicated nodes
752 * should be associated to.
753 * \return TRUE if operation has been completed successfully, FALSE otherwise
754 * \sa DoubleNodeGroup(), DoubleNodes()
756 boolean DoubleNodeGroups( in ListOfGroups theElems,
757 in ListOfGroups theNodesNot,
758 in ListOfGroups theAffectedElems );
761 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
762 * This method provided for convenience works as DoubleNodes() described above.
763 * \param theElems - list of groups of elements (edges or faces) to be replicated
764 * \param theNodesNot - list of groups of nodes not to replicated
765 * \param theShape - shape to detect affected elements (element which geometric center
766 * located on or inside shape).
767 * The replicated nodes should be associated to affected elements.
768 * \return TRUE if operation has been completed successfully, FALSE otherwise
769 * \sa DoubleNodeGroupInRegion(), DoubleNodesInRegion()
771 boolean DoubleNodeGroupsInRegion( in ListOfGroups theElems,
772 in ListOfGroups theNodesNot,
773 in GEOM::GEOM_Object theShape );