1 // Copyright (C) 2007-2016 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, or (at your option) any later version.
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
24 #ifndef _SMESH_MESHEDITOR_IDL_
25 #define _SMESH_MESHEDITOR_IDL_
27 #include "SMESH_Mesh.idl"
28 #include "SMESH_Gen.idl"
32 interface NumericalFunctor;
34 enum Bnd_Dimension { BND_2DFROM3D, BND_1DFROM3D, BND_1DFROM2D };
39 SMESH::long_array nodeIDs; // all nodes defining a free border
40 // 1st and last node is same in a closed border
44 short border; // border index within a sequence<FreeBorder>
45 long node1; // node index within the border-th FreeBorder
49 typedef sequence<FreeBorder> ListOfFreeBorders;
50 typedef sequence<FreeBorderPart> FreeBordersGroup;
51 typedef sequence<FreeBordersGroup> ListOfFreeBorderGroups;
53 struct CoincidentFreeBorders
55 ListOfFreeBorders borders; // nodes of all free borders
56 ListOfFreeBorderGroups coincidentGroups; // groups of coincident parts of borders
60 // structure used in MakePolyLine() to define a cutting plane
63 // point 1: if node1ID2 > 0, then the point is in the middle of a face edge defined
64 // by two nodes, else it is at node1ID1
68 // point 2: if node2ID2 > 0, then the point is in the middle of a face edge defined
69 // by two nodes, else it is at node2ID1
73 DirStruct vector; // vector on the plane; to use a default plane set vector = (0,0,0)
75 typedef sequence<PolySegment> ListOfPolySegments;
79 * This interface makes modifications on the Mesh - removing elements and nodes etc.
81 interface SMESH_MeshEditor
84 * Returns a mesh subject to edition
89 * Return data of mesh edition preview which is computed provided
90 * that the editor was obtained through SMESH_Mesh::GetMeshEditPreviewer()
92 MeshPreviewStruct GetPreviewData() raises (SALOME::SALOME_Exception);
95 * If during last operation of MeshEditor some nodes were
96 * created, this method returns list of their IDs, if new nodes
97 * not created - returns empty list
99 long_array GetLastCreatedNodes() raises (SALOME::SALOME_Exception);
102 * If during last operation of MeshEditor some elements were
103 * created, this method returns list of their IDs, if new elements
104 * not created - returns empty list
106 long_array GetLastCreatedElems() raises (SALOME::SALOME_Exception);
109 * \brief Clears sequences of last created elements and nodes
111 void ClearLastCreated() raises (SALOME::SALOME_Exception);
114 * \brief Returns description of an error/warning occurred during the last operation
116 ComputeError GetLastError() raises (SALOME::SALOME_Exception);
119 * \brief Wrap a sequence of ids in a SMESH_IDSource
120 * \param IDsOfElements list of mesh elements identifiers
121 * \return new ID source object
123 SMESH_IDSource MakeIDSource(in long_array IDsOfElements, in ElementType type);
126 * \brief Remove mesh elements specified by their identifiers.
127 * \param IDsOfElements list of mesh elements identifiers
128 * \return \c true if elements are correctly removed or \c false otherwise
130 boolean RemoveElements(in long_array IDsOfElements) raises (SALOME::SALOME_Exception);
133 * \brief Remove mesh nodes specified by their identifiers.
134 * \param IDsOfNodes list of mesh nodes identifiers
135 * \return \c true if nodes are correctly removed or \c false otherwise
137 boolean RemoveNodes(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
140 * \brief Remove all orphan nodes.
141 * \return number of removed nodes
143 long RemoveOrphanNodes() raises (SALOME::SALOME_Exception);
146 * \brief Add a new node.
147 * \param x X coordinate of new node
148 * \param y Y coordinate of new node
149 * \param z Z coordinate of new node
150 * \return integer identifier of new node
152 long AddNode(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
155 * Create a 0D element on the given node.
156 * \param IdOfNode Node IDs for creation of element.
157 * \param DuplicateElements to add one more 0D element to a node or not
159 long Add0DElement(in long IDOfNode,
160 in boolean DuplicateElements) raises (SALOME::SALOME_Exception);
163 * Create a ball element on the given node.
164 * \param IdOfNode Node IDs for creation of element.
166 long AddBall(in long IDOfNode, in double diameter) raises (SALOME::SALOME_Exception);
169 * Create an edge, either linear and quadratic (this is determed
170 * by number of given nodes, two or three).
171 * \param IdsOfNodes List of node IDs for creation of element.
172 * Needed order of nodes in this list corresponds to description
173 * of MED. This description is located by the following link:
174 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
176 long AddEdge(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
179 * Create face, either linear and quadratic (this is determed
180 * by number of given nodes).
181 * \param IdsOfNodes List of node IDs for creation of element.
182 * Needed order of nodes in this list corresponds to description
183 * of MED. This description is located by the following link:
184 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
186 long AddFace(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
188 long AddPolygonalFace(in long_array IdsOfNodes) raises (SALOME::SALOME_Exception);
191 * Create a quadratic polygonal face
192 * \param IdsOfNodes - nodes of the polygon; corner nodes follow first
193 * \return long - ID of a new polygon
195 long AddQuadPolygonalFace(in long_array IdsOfNodes) raises (SALOME::SALOME_Exception);
198 * Create volume, either linear and quadratic (this is determed
199 * by number of given nodes).
200 * \param IdsOfNodes List of node IDs for creation of element.
201 * Needed order of nodes in this list corresponds to description
202 * of MED. This description is located by the following link:
203 * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.
205 long AddVolume(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception);
208 * Create volume of many faces, giving nodes for each face.
209 * \param IdsOfNodes List of node IDs for volume creation face by face.
210 * \param Quantities List of integer values, Quantities[i]
211 * gives quantity of nodes in face number i.
213 long AddPolyhedralVolume (in long_array IdsOfNodes,
214 in long_array Quantities) raises (SALOME::SALOME_Exception);
216 * Create volume of many faces, giving IDs of existing faces.
217 * \param IdsOfFaces List of face IDs for volume creation.
218 * \note The created volume will refer only to nodes
219 * of the given faces, not to the faces itself.
221 long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces) raises (SALOME::SALOME_Exception);
224 * Create 0D elements on all nodes of the given object.
225 * \param theObject object on whose nodes 0D elements will be created.
226 * \param theGroupName optional name of a group to add 0D elements created
227 * and/or found on nodes of \a theObject.
228 * \param theDuplicateElements to add one more 0D element to a node or not
229 * \return an object (a new group or a temporary SMESH_IDSource) holding
230 * ids of new and/or found 0D elements.
232 SMESH_IDSource Create0DElementsOnAllNodes(in SMESH_IDSource theObject,
233 in string theGroupName,
234 in boolean theDuplicateElements)
235 raises (SALOME::SALOME_Exception);
238 * \brief Bind a node to a vertex
239 * \param NodeID - node ID
240 * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
242 void SetNodeOnVertex(in long NodeID, in long VertexID)
243 raises (SALOME::SALOME_Exception);
245 * \brief Store node position on an edge
246 * \param NodeID - node ID
247 * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
248 * \param paramOnEdge - parameter on edge where the node is located
250 void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
251 raises (SALOME::SALOME_Exception);
253 * \brief Store node position on a face
254 * \param NodeID - node ID
255 * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
256 * \param u - U parameter on face where the node is located
257 * \param v - V parameter on face where the node is located
259 void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
260 raises (SALOME::SALOME_Exception);
262 * \brief Bind a node to a solid
263 * \param NodeID - node ID
264 * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
266 void SetNodeInVolume(in long NodeID, in long SolidID)
267 raises (SALOME::SALOME_Exception);
269 * \brief Bind an element to a shape
270 * \param ElementID - element ID
271 * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
273 void SetMeshElementOnShape(in long ElementID, in long ShapeID)
274 raises (SALOME::SALOME_Exception);
277 boolean MoveNode(in long NodeID, in double x, in double y, in double z)
278 raises (SALOME::SALOME_Exception);
280 boolean InverseDiag(in long NodeID1, in long NodeID2)
281 raises (SALOME::SALOME_Exception);
283 boolean DeleteDiag(in long NodeID1, in long NodeID2)
284 raises (SALOME::SALOME_Exception);
286 boolean Reorient(in long_array IDsOfElements)
287 raises (SALOME::SALOME_Exception);
289 boolean ReorientObject(in SMESH_IDSource theObject)
290 raises (SALOME::SALOME_Exception);
292 * \brief Reorient faces contained in \a the2Dgroup.
293 * \param the2Dgroup - the mesh or its part to reorient
294 * \param theDirection - desired direction of normal of \a theFace
295 * \param theFace - ID of face whose orientation is checked.
296 * It can be < 1 then \a thePoint is used to find a face.
297 * \param thePoint - is used to find a face if \a theFace < 1.
298 * \return number of reoriented faces.
300 long Reorient2D(in SMESH_IDSource the2Dgroup,
301 in DirStruct theDirection,
303 in PointStruct thePoint) raises (SALOME::SALOME_Exception);
305 * \brief Reorient faces basing on orientation of adjacent volumes.
306 * \param faces - a list of objects containing face to reorient
307 * \param volumes - an object containing volumes.
308 * \param outsideNormal - to orient faces to have their normal
309 * pointing either \a outside or \a inside the adjacent volumes.
310 * \return number of reoriented faces.
312 long Reorient2DBy3D(in ListOfIDSources faces,
313 in SMESH_IDSource volumes,
314 in boolean outsideNormal) raises (SALOME::SALOME_Exception);
317 * \brief Fuse neighbour triangles into quadrangles.
318 * \param IDsOfElements Ids of triangles to be fused.
319 * \param theCriterion Is used to choose a neighbour to fuse with.
320 * \param theMaxAngle Is a max angle between element normals at which fusion
321 * is still performed; theMaxAngle is measured in radians.
322 * \return \c true in case of success, FALSE otherwise.
324 boolean TriToQuad (in long_array IDsOfElements,
325 in NumericalFunctor Criterion,
326 in double MaxAngle) raises (SALOME::SALOME_Exception);
328 * \brief Fuse neighbour triangles into quadrangles.
330 * Behaves like the above method, taking a list of elements from \a theObject
332 boolean TriToQuadObject (in SMESH_IDSource theObject,
333 in NumericalFunctor Criterion,
334 in double MaxAngle) raises (SALOME::SALOME_Exception);
337 * \brief Split quadrangles into triangles.
338 * \param IDsOfElements Ids of quadrangles to split.
339 * \param theCriterion Is used to choose a diagonal for splitting.
340 * \return TRUE in case of success, FALSE otherwise.
342 boolean QuadToTri (in long_array IDsOfElements,
343 in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
345 * \brief Split quadrangles into triangles.
347 * Behaves like the above method, taking a list of elements from \a theObject
349 boolean QuadToTriObject (in SMESH_IDSource theObject,
350 in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
352 * \brief Split each of quadrangles into 4 triangles.
353 * \param theQuads Container of quadrangles to split.
355 void QuadTo4Tri (in SMESH_IDSource theQuads) raises (SALOME::SALOME_Exception);
358 * \brief Split quadrangles into triangles.
359 * \param theElems The faces to be split.
360 * \param the13Diag Is used to choose a diagonal for splitting.
361 * \return TRUE in case of success, FALSE otherwise.
363 boolean SplitQuad (in long_array IDsOfElements,
364 in boolean Diag13) raises (SALOME::SALOME_Exception);
366 * \brief Split quadrangles into triangles.
368 * Behaves like the above method, taking list of elements from \a theObject
370 boolean SplitQuadObject (in SMESH_IDSource theObject,
371 in boolean Diag13) raises (SALOME::SALOME_Exception);
374 * Find better splitting of the given quadrangle.
375 * \param IDOfQuad ID of the quadrangle to be split.
376 * \param Criterion A criterion to choose a diagonal for splitting.
377 * \return 1 if 1-3 diagonal is better, 2 if 2-4
378 * diagonal is better, 0 if error occurs.
380 long BestSplit (in long IDOfQuad,
381 in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception);
384 * \brief Split volumic elements into tetrahedrons
385 * \param elems - elements to split
386 * \param methodFlags - flags passing splitting method:
387 * 1 - split the hexahedron into 5 tetrahedrons
388 * 2 - split the hexahedron into 6 tetrahedrons
389 * 3 - split the hexahedron into 24 tetrahedrons
391 void SplitVolumesIntoTetra(in SMESH_IDSource elems, in short methodFlags)
392 raises (SALOME::SALOME_Exception);
395 * \brief Split hexahedra into triangular prisms
396 * \param elems - elements to split
397 * \param startHexPoint - a point used to find a hexahedron for which \a facetToSplitNormal
398 * gives a normal vector defining facets to split into triangles.
399 * \param facetToSplitNormal - normal used to find a facet of hexahedron
400 * to split into triangles.
401 * \param methodFlags - flags passing splitting method:
402 * 1 - split the hexahedron into 2 prisms
403 * 2 - split the hexahedron into 4 prisms
404 * \param allDomains - if \c False, only hexahedra adjacent to one closest
405 * to \a facetToSplitNormal location are split, else \a facetToSplitNormal
406 * is used to find the facet to split in all domains present in \a elems.
408 void SplitHexahedraIntoPrisms(in SMESH_IDSource elems,
409 in SMESH::PointStruct startHexPoint,
410 in SMESH::DirStruct facetToSplitNormal,
411 in short methodFlags,
412 in boolean allDomains)
413 raises (SALOME::SALOME_Exception);
416 * \brief Split bi-quadratic elements into linear ones without creation of additional nodes.
417 * - bi-quadratic triangle will be split into 3 linear quadrangles;
418 * - bi-quadratic quadrangle will be split into 4 linear quadrangles;
419 * - tri-quadratic hexahedron will be split into 8 linear hexahedra;
420 * Quadratic elements of lower dimension adjacent to the split bi-quadratic element
421 * will be split in order to keep the mesh conformal.
422 * \param elems - elements to split
424 void SplitBiQuadraticIntoLinear(in ListOfIDSources elems)
425 raises (SALOME::SALOME_Exception);
428 enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
430 boolean Smooth(in long_array IDsOfElements,
431 in long_array IDsOfFixedNodes,
432 in long MaxNbOfIterations,
433 in double MaxAspectRatio,
434 in Smooth_Method Method) raises (SALOME::SALOME_Exception);
436 boolean SmoothObject(in SMESH_IDSource theObject,
437 in long_array IDsOfFixedNodes,
438 in long MaxNbOfIterations,
439 in double MaxAspectRatio,
440 in Smooth_Method Method) raises (SALOME::SALOME_Exception);
442 boolean SmoothParametric(in long_array IDsOfElements,
443 in long_array IDsOfFixedNodes,
444 in long MaxNbOfIterations,
445 in double MaxAspectRatio,
446 in Smooth_Method Method) raises (SALOME::SALOME_Exception);
448 boolean SmoothParametricObject(in SMESH_IDSource theObject,
449 in long_array IDsOfFixedNodes,
450 in long MaxNbOfIterations,
451 in double MaxAspectRatio,
452 in Smooth_Method Method) raises (SALOME::SALOME_Exception);
454 void ConvertToQuadratic(in boolean theForce3d)
455 raises (SALOME::SALOME_Exception);
456 void ConvertToQuadraticObject(in boolean theForce3d,
457 in SMESH_IDSource theObject)
458 raises (SALOME::SALOME_Exception);
460 boolean ConvertFromQuadratic()
461 raises (SALOME::SALOME_Exception);
462 void ConvertFromQuadraticObject(in SMESH_IDSource theObject)
463 raises (SALOME::SALOME_Exception);
465 void ConvertToBiQuadratic(in boolean theForce3d,
466 in SMESH_IDSource theObject)
467 raises (SALOME::SALOME_Exception);
469 void RenumberNodes() raises (SALOME::SALOME_Exception);
471 void RenumberElements() raises (SALOME::SALOME_Exception);
474 * \brief Generate dim+1 elements by rotation of the object around axis
475 * \param Nodes - nodes to revolve: a list including groups, sub-meshes or a mesh
476 * \param Edges - edges to revolve: a list including groups, sub-meshes or a mesh
477 * \param Faces - faces to revolve: a list including groups, sub-meshes or a mesh
478 * \param Axis - rotation axis
479 * \param AngleInRadians - rotation angle
480 * \param NbOfSteps - number of elements to generate from one element
481 * \param ToMakeGroups - if true, new elements will be included into new groups
482 * corresponding to groups the input elements included in.
483 * \return ListOfGroups - new groups created if \a ToMakeGroups is true
485 ListOfGroups RotationSweepObjects(in ListOfIDSources Nodes,
486 in ListOfIDSources Edges,
487 in ListOfIDSources Faces,
489 in double AngleInRadians,
492 in boolean ToMakeGroups)
493 raises (SALOME::SALOME_Exception);
496 * \brief Generate dim+1 elements by extrusion of elements along vector
497 * \param nodes - nodes to extrude: a list including groups, sub-meshes or a mesh
498 * \param edges - edges to extrude: a list including groups, sub-meshes or a mesh
499 * \param faces - faces to extrude: a list including groups, sub-meshes or a mesh
500 * \param stepVector - vector giving direction and distance of an extrusion step
501 * \param nbOfSteps - number of elements to generate from one element
502 * \param toMakeGroups - if true, new elements will be included into new groups
503 * corresponding to groups the input elements included in.
504 * \return ListOfGroups - new groups created if \a toMakeGroups is true
506 ListOfGroups ExtrusionSweepObjects(in ListOfIDSources nodes,
507 in ListOfIDSources edges,
508 in ListOfIDSources faces,
509 in DirStruct stepVector,
511 in double_array scaleFactors,
512 in boolean linearVariation,
513 in double_array basePoint,
514 in boolean toMakeGroups)
515 raises (SALOME::SALOME_Exception);
517 /*! Generates new elements by extrusion along the normal to a discretized surface or wire
519 ListOfGroups ExtrusionByNormal(in ListOfIDSources theObjects,
522 in boolean byAverageNormal,
523 in boolean useInputElemsOnly,
524 in boolean makeGroups,
526 raises (SALOME::SALOME_Exception);
529 * Generate new elements by extrusion of theElements
530 * by StepVector by NbOfSteps
531 * \param ExtrFlags set flags for performing extrusion
532 * \param SewTolerance - uses for comparing locations of nodes if flag
533 * EXTRUSION_FLAG_SEW is set
534 * \param ToMakeGroups - if true, new elements will be included into new groups
535 * corresponding to groups the input elements included in.
536 * \return ListOfGroups - new groups created if \a ToMakeGroups is true
538 ListOfGroups AdvancedExtrusion(in long_array IDsOfElements,
539 in DirStruct StepVector,
542 in double SewTolerance,
543 in boolean ToMakeGroups)
544 raises (SALOME::SALOME_Exception);
546 enum Extrusion_Error {
551 EXTR_BAD_STARTING_NODE,
552 EXTR_BAD_ANGLES_NUMBER,
553 EXTR_CANT_GET_TANGENT
556 ListOfGroups ExtrusionAlongPathObjects(in ListOfIDSources Nodes,
557 in ListOfIDSources Edges,
558 in ListOfIDSources Faces,
559 in SMESH_IDSource Path,
560 in GEOM::GEOM_Object PathShape,
562 in boolean HasAngles,
563 in double_array Angles,
564 in boolean LinearVariation,
565 in boolean HasRefPoint,
566 in PointStruct RefPoint,
567 in boolean MakeGroups,
568 out Extrusion_Error Error)
569 raises (SALOME::SALOME_Exception);
572 * Compute rotation angles for ExtrusionAlongPath as linear variation
573 * of given angles along path steps
574 * param PathMesh mesh containing a 1D sub-mesh on the edge, along
575 * which proceeds the extrusion
576 * param PathShape is shape(edge); as the mesh can be complex, the edge
577 * is used to define the sub-mesh for the path
579 double_array LinearAnglesVariation(in SMESH_Mesh PathMesh,
580 in GEOM::GEOM_Object PathShape,
581 in double_array Angles);
583 enum MirrorType { POINT, AXIS, PLANE };
585 void Mirror (in long_array IDsOfElements,
586 in AxisStruct Mirror,
589 raises (SALOME::SALOME_Exception);
590 ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
591 in AxisStruct Mirror,
593 raises (SALOME::SALOME_Exception);
594 SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
595 in AxisStruct Mirror,
597 in boolean CopyGroups,
599 raises (SALOME::SALOME_Exception);
601 void MirrorObject (in SMESH_IDSource theObject,
602 in AxisStruct Mirror,
605 raises (SALOME::SALOME_Exception);
606 ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject,
607 in AxisStruct Mirror,
609 raises (SALOME::SALOME_Exception);
610 SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject,
611 in AxisStruct Mirror,
613 in boolean CopyGroups,
615 raises (SALOME::SALOME_Exception);
617 void Translate (in long_array IDsOfElements,
620 raises (SALOME::SALOME_Exception);
621 ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
623 raises (SALOME::SALOME_Exception);
624 SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
626 in boolean CopyGroups,
628 raises (SALOME::SALOME_Exception);
630 void TranslateObject (in SMESH_IDSource theObject,
633 raises (SALOME::SALOME_Exception);
634 ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject,
636 raises (SALOME::SALOME_Exception);
637 SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject,
639 in boolean CopyGroups,
641 raises (SALOME::SALOME_Exception);
643 void Scale (in SMESH_IDSource theObject,
644 in PointStruct thePoint,
645 in double_array theScaleFact,
647 raises (SALOME::SALOME_Exception);
648 ListOfGroups ScaleMakeGroups (in SMESH_IDSource theObject,
649 in PointStruct thePoint,
650 in double_array theScaleFact)
651 raises (SALOME::SALOME_Exception);
652 SMESH_Mesh ScaleMakeMesh (in SMESH_IDSource theObject,
653 in PointStruct thePoint,
654 in double_array theScaleFact,
655 in boolean CopyGroups,
657 raises (SALOME::SALOME_Exception);
659 void Rotate (in long_array IDsOfElements,
661 in double AngleInRadians,
663 raises (SALOME::SALOME_Exception);
664 ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
666 in double AngleInRadians)
667 raises (SALOME::SALOME_Exception);
668 SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
670 in double AngleInRadians,
671 in boolean CopyGroups,
673 raises (SALOME::SALOME_Exception);
675 void RotateObject (in SMESH_IDSource theObject,
677 in double AngleInRadians,
679 raises (SALOME::SALOME_Exception);
680 ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject,
682 in double AngleInRadians)
683 raises (SALOME::SALOME_Exception);
684 SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject,
686 in double AngleInRadians,
687 in boolean CopyGroups,
689 raises (SALOME::SALOME_Exception);
691 SMESH_Mesh Offset(in SMESH_IDSource theObject,
693 in boolean CopyGroups,
694 in boolean CopyElements,
696 out ListOfGroups Groups)
697 raises (SALOME::SALOME_Exception);
699 void FindCoincidentNodes (in double Tolerance,
700 out array_of_long_array GroupsOfNodes,
701 in boolean SeparateCornersAndMedium)
702 raises (SALOME::SALOME_Exception);
704 void FindCoincidentNodesOnPart (in SMESH_IDSource SubMeshOrGroup,
706 out array_of_long_array GroupsOfNodes,
707 in boolean SeparateCornersAndMedium)
708 raises (SALOME::SALOME_Exception);
710 void FindCoincidentNodesOnPartBut (in SMESH_IDSource SubMeshOrGroup,
712 out array_of_long_array GroupsOfNodes,
713 in ListOfIDSources ExceptSubMeshOrGroups,
714 in boolean SeparateCornersAndMedium)
715 raises (SALOME::SALOME_Exception);
717 void MergeNodes (in array_of_long_array GroupsOfNodes,
718 in SMESH::ListOfIDSources NodesToKeep,
719 in boolean AvoidMakingHoles)
720 raises (SALOME::SALOME_Exception);
723 * \brief Find elements built on the same nodes.
724 * \param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching.
725 * \return List of groups of equal elements.
727 void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup,
728 out array_of_long_array GroupsOfElementsID)
729 raises (SALOME::SALOME_Exception);
732 * \brief Merge elements in each given group.
733 * \param GroupsOfElementsID Groups of elements for merging.
735 void MergeElements(in array_of_long_array GroupsOfElementsID)
736 raises (SALOME::SALOME_Exception);
739 * \brief Merge equal elements in the whole mesh.
741 void MergeEqualElements()
742 raises (SALOME::SALOME_Exception);
745 * If the given ID is a valid node ID (nodeID > 0), just move this node, else
746 * move the node closest to the point to point's location and return ID of the node
748 long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID)
749 raises (SALOME::SALOME_Exception);
752 * Return ID of node closest to a given point
754 long FindNodeClosestTo(in double x, in double y, in double z)
755 raises (SALOME::SALOME_Exception);
758 * Return elements of given type where the given point is IN or ON.
760 * 'ALL' type means elements of any type excluding nodes and 0D elements
762 long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type)
763 raises (SALOME::SALOME_Exception);
766 * Searching among the given elements, return elements of given type
767 * where the given point is IN or ON.
769 * 'ALL' type means elements of any type excluding nodes and 0D elements
771 long_array FindAmongElementsByPoint(in SMESH_IDSource elements,
772 in double x, in double y, in double z,
774 raises (SALOME::SALOME_Exception);
777 * Project a point to a mesh object.
778 * Return ID of an element of given type where the given point is projected
779 * and coordinates of the projection point.
780 * In the case if nothing found, return -1 and []
782 long ProjectPoint(in double x,
785 in SMESH_IDSource meshObject,
787 out double_array projecton)
788 raises (SALOME::SALOME_Exception);
791 * Return point state in a closed 2D mesh in terms of TopAbs_State enumeration.
792 * TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails.
794 short GetPointState(in double x, in double y, in double z)
795 raises (SALOME::SALOME_Exception);
798 * Check if a 2D mesh is manifold
801 raises (SALOME::SALOME_Exception);
804 * Check if orientation of 2D elements is coherent
806 boolean IsCoherentOrientation2D()
807 raises (SALOME::SALOME_Exception);
810 * Returns all or only closed FreeBorder's.
812 ListOfFreeBorders FindFreeBorders(in boolean closedOnly)
813 raises (SALOME::SALOME_Exception);
816 * Fill with 2D elements a hole defined by a FreeBorder.
817 * Optionally add new faces to a given group, which is returned.
819 SMESH_Group FillHole(in FreeBorder hole, in string groupName)
820 raises (SALOME::SALOME_Exception);
823 * Returns groups of FreeBorder's coincident within the given tolerance.
824 * If the tolerance <= 0.0 then one tenth of an average size of elements adjacent
825 * to free borders being compared is used.
827 CoincidentFreeBorders FindCoincidentFreeBorders(in double tolerance);
830 * Sew FreeBorder's of each group
832 short SewCoincidentFreeBorders (in CoincidentFreeBorders freeBorders,
833 in boolean createPolygons,
834 in boolean createPolyedrs)
835 raises (SALOME::SALOME_Exception);
839 SEW_BORDER1_NOT_FOUND,
840 SEW_BORDER2_NOT_FOUND,
841 SEW_BOTH_BORDERS_NOT_FOUND,
843 SEW_VOLUMES_TO_SPLIT,
844 // for SewSideElements() only:
845 SEW_DIFF_NB_OF_ELEMENTS,
846 SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
852 Sew_Error SewFreeBorders (in long FirstNodeID1,
853 in long SecondNodeID1,
855 in long FirstNodeID2,
856 in long SecondNodeID2,
858 in boolean CreatePolygons,
859 in boolean CreatePolyedrs)
860 raises (SALOME::SALOME_Exception);
862 Sew_Error SewConformFreeBorders (in long FirstNodeID1,
863 in long SecondNodeID1,
865 in long FirstNodeID2,
866 in long SecondNodeID2)
867 raises (SALOME::SALOME_Exception);
869 Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
870 in long SecondNodeIDOnFreeBorder,
871 in long LastNodeIDOnFreeBorder,
872 in long FirstNodeIDOnSide,
873 in long LastNodeIDOnSide,
874 in boolean CreatePolygons,
875 in boolean CreatePolyedrs)
876 raises (SALOME::SALOME_Exception);
878 Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
879 in long_array IDsOfSide2Elements,
880 in long NodeID1OfSide1ToMerge,
881 in long NodeID1OfSide2ToMerge,
882 in long NodeID2OfSide1ToMerge,
883 in long NodeID2OfSide2ToMerge)
884 raises (SALOME::SALOME_Exception);
887 * Set new nodes for given element.
888 * If number of nodes is not corresponded to type of
889 * element - returns false
891 boolean ChangeElemNodes(in long ide, in long_array newIDs)
892 raises (SALOME::SALOME_Exception);
895 * \brief Duplicates given elements, i.e. creates new elements based on the
896 * same nodes as the given ones.
897 * \param theElements - container of elements to duplicate.
898 * \param theGroupName - a name of group to contain the generated elements.
899 * If a group with such a name already exists, the new elements
900 * are added to the existing group, else a new group is created.
901 * If \a theGroupName is empty, new elements are not added
903 * \return a group where the new elements are added. NULL if theGroupName == "".
906 SMESH_Group DoubleElements( in SMESH_IDSource theElements,
907 in string theGroupName )
908 raises (SALOME::SALOME_Exception);
911 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
912 * \param theNodes - identifiers of nodes to be doubled
913 * \param theModifiedElems - identifiers of elements to be updated by the new (doubled)
914 * nodes. If list of element identifiers is empty then nodes are doubled but
915 * they not assigned to elements
916 * \return TRUE if operation has been completed successfully, FALSE otherwise
917 * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodeGroups()
919 boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems )
920 raises (SALOME::SALOME_Exception);
923 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
924 * This method provided for convenience works as DoubleNodes() described above.
925 * \param theNodeId - identifier of node to be doubled.
926 * \param theModifiedElems - identifiers of elements to be updated.
927 * \return TRUE if operation has been completed successfully, FALSE otherwise
928 * \sa DoubleNodes(), DoubleNodeGroup(), DoubleNodeGroups()
930 boolean DoubleNode( in long theNodeId, in long_array theModifiedElems )
931 raises (SALOME::SALOME_Exception);
934 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
935 * This method provided for convenience works as DoubleNodes() described above.
936 * \param theNodes - group of nodes to be doubled.
937 * \param theModifiedElems - group of elements to be updated.
938 * \return TRUE if operation has been completed successfully, FALSE otherwise
939 * \sa DoubleNode(), DoubleNodes(), DoubleNodeGroups(), DoubleNodeGroupNew()
941 boolean DoubleNodeGroup( in SMESH_GroupBase theNodes,
942 in SMESH_GroupBase theModifiedElems )
943 raises (SALOME::SALOME_Exception);
945 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements.
946 * Works as DoubleNodeGroup() described above, but returns a new group with
947 * newly created nodes.
948 * \param theNodes - group of nodes to be doubled.
949 * \param theModifiedElems - group of elements to be updated.
950 * \return a new group with newly created nodes
951 * \sa DoubleNodeGroup()
953 SMESH_Group DoubleNodeGroupNew( in SMESH_GroupBase theNodes,
954 in SMESH_GroupBase theModifiedElems )
955 raises (SALOME::SALOME_Exception);
958 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
959 * This method provided for convenience works as DoubleNodes() described above.
960 * \param theNodes - list of groups of nodes to be doubled
961 * \param theModifiedElems - list of groups of elements to be updated.
962 * \return TRUE if operation has been completed successfully, FALSE otherwise
963 * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodes()
965 boolean DoubleNodeGroups( in ListOfGroups theNodes,
966 in ListOfGroups theModifiedElems )
967 raises (SALOME::SALOME_Exception);
969 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
970 * Works as DoubleNodeGroups() described above, but returns a new group with
971 * newly created nodes.
972 * \param theNodes - list of groups of nodes to be doubled
973 * \param theModifiedElems - list of groups of elements to be updated.
974 * \return a new group with newly created nodes
975 * \sa DoubleNodeGroups()
977 SMESH_Group DoubleNodeGroupsNew( in ListOfGroups theNodes,
978 in ListOfGroups theModifiedElems )
979 raises (SALOME::SALOME_Exception);
982 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
983 * \param theElems - the list of elements (edges or faces) to be replicated
984 * The nodes for duplication could be found from these elements
985 * \param theNodesNot - list of nodes to NOT replicate
986 * \param theAffectedElems - the list of elements (cells and edges) to which the
987 * replicated nodes should be associated to.
988 * \return TRUE if operation has been completed successfully, FALSE otherwise
989 * \sa DoubleNodeGroup(), DoubleNodeGroups()
991 boolean DoubleNodeElem( in long_array theElems,
992 in long_array theNodesNot,
993 in long_array theAffectedElems )
994 raises (SALOME::SALOME_Exception);
997 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
998 * \param theElems - the list of elements (edges or faces) to be replicated
999 * The nodes for duplication could be found from these elements
1000 * \param theNodesNot - list of nodes to NOT replicate
1001 * \param theShape - shape to detect affected elements (element which geometric center
1002 * located on or inside shape).
1003 * The replicated nodes should be associated to affected elements.
1004 * \return TRUE if operation has been completed successfully, FALSE otherwise
1005 * \sa DoubleNodeGroupInRegion(), DoubleNodeGroupsInRegion()
1007 boolean DoubleNodeElemInRegion( in long_array theElems,
1008 in long_array theNodesNot,
1009 in GEOM::GEOM_Object theShape )
1010 raises (SALOME::SALOME_Exception);
1013 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
1014 * This method provided for convenience works as DoubleNodes() described above.
1015 * \param theElems - group of of elements (edges or faces) to be replicated
1016 * \param theNodesNot - group of nodes not to replicated
1017 * \param theAffectedElems - group of elements to which the replicated nodes
1018 * should be associated to.
1019 * \return TRUE if operation has been completed successfully, FALSE otherwise
1020 * \sa DoubleNodes(), DoubleNodeGroups(), DoubleNodeElemGroupNew()
1022 boolean DoubleNodeElemGroup( in SMESH_GroupBase theElems,
1023 in SMESH_GroupBase theNodesNot,
1024 in SMESH_GroupBase theAffectedElems )
1025 raises (SALOME::SALOME_Exception);
1027 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements.
1028 * Works as DoubleNodeElemGroup() described above, but returns a new group with
1029 * newly created elements.
1030 * \param theElems - group of of elements (edges or faces) to be replicated
1031 * \param theNodesNot - group of nodes not to replicated
1032 * \param theAffectedElems - group of elements to which the replicated nodes
1033 * should be associated to.
1034 * \return a new group with newly created elements
1035 * \sa DoubleNodeElemGroup()
1037 SMESH_Group DoubleNodeElemGroupNew( in SMESH_GroupBase theElems,
1038 in SMESH_GroupBase theNodesNot,
1039 in SMESH_GroupBase theAffectedElems )
1040 raises (SALOME::SALOME_Exception);
1042 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements.
1043 * Works as DoubleNodeElemGroup() described above, but returns two new groups:
1044 * a group of newly created elements and a group of newly created nodes
1045 * \param theElems - group of of elements (edges or faces) to be replicated
1046 * \param theNodesNot - group of nodes not to replicated
1047 * \param theAffectedElems - group of elements to which the replicated nodes
1048 * should be associated to.
1049 * \param theElemGroupNeeded - to create group of new elements or not
1050 * \param theNodeGroupNeeded - to create group of new nodes or not
1051 * \return two new groups of newly created elements (1st) and nodes (2nd)
1052 * \sa DoubleNodeElemGroup()
1054 ListOfGroups DoubleNodeElemGroup2New( in SMESH_GroupBase theElems,
1055 in SMESH_GroupBase theNodesNot,
1056 in SMESH_GroupBase theAffectedElems,
1057 in boolean theElemGroupNeeded,
1058 in boolean theNodeGroupNeeded)
1059 raises (SALOME::SALOME_Exception);
1062 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
1063 * This method provided for convenience works as DoubleNodes() described above.
1064 * \param theElems - group of elements (edges or faces) to be replicated
1065 * \param theNodesNot - group of nodes not to replicated
1066 * \param theShape - shape to detect affected elements (element which geometric center
1067 * located on or inside shape).
1068 * The replicated nodes should be associated to affected elements.
1069 * \return TRUE if operation has been completed successfully, FALSE otherwise
1070 * \sa DoubleNodesInRegion(), DoubleNodeGroupsInRegion()
1072 boolean DoubleNodeElemGroupInRegion( in SMESH_GroupBase theElems,
1073 in SMESH_GroupBase theNodesNot,
1074 in GEOM::GEOM_Object theShape )
1075 raises (SALOME::SALOME_Exception);
1078 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
1079 * This method provided for convenience works as DoubleNodes() described above.
1080 * \param theElems - list of groups of elements (edges or faces) to be replicated
1081 * \param theNodesNot - list of groups of nodes not to replicated
1082 * \param theAffectedElems - group of elements to which the replicated nodes
1083 * should be associated to.
1084 * \return TRUE if operation has been completed successfully, FALSE otherwise
1085 * \sa DoubleNodeGroup(), DoubleNodes(), DoubleNodeElemGroupsNew()
1087 boolean DoubleNodeElemGroups( in ListOfGroups theElems,
1088 in ListOfGroups theNodesNot,
1089 in ListOfGroups theAffectedElems )
1090 raises (SALOME::SALOME_Exception);
1092 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements.
1093 * Works as DoubleNodeElemGroups() described above, but returns a new group with
1094 * newly created elements.
1095 * \param theElems - list of groups of elements (edges or faces) to be replicated
1096 * \param theNodesNot - list of groups of nodes not to replicated
1097 * \param theAffectedElems - group of elements to which the replicated nodes
1098 * should be associated to.
1099 * \return a new group with newly created elements
1100 * \sa DoubleNodeElemGroups()
1102 SMESH_Group DoubleNodeElemGroupsNew( in ListOfGroups theElems,
1103 in ListOfGroups theNodesNot,
1104 in ListOfGroups theAffectedElems )
1105 raises (SALOME::SALOME_Exception);
1107 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements.
1108 * Works as DoubleNodeElemGroups() described above, but returns two new groups:
1109 * a group of newly created elements and a group of newly created nodes.
1110 * \param theElems - list of groups of elements (edges or faces) to be replicated
1111 * \param theNodesNot - list of groups of nodes not to replicated
1112 * \param theAffectedElems - group of elements to which the replicated nodes
1113 * should be associated to.
1114 * \param theElemGroupNeeded - to create group of new elements or not
1115 * \param theNodeGroupNeeded - to create group of new nodes or not
1116 * \return two new groups of newly created elements (1st) and nodes (2nd)
1117 * \sa DoubleNodeElemGroups()
1119 ListOfGroups DoubleNodeElemGroups2New( in ListOfGroups theElems,
1120 in ListOfGroups theNodesNot,
1121 in ListOfGroups theAffectedElems,
1122 in boolean theElemGroupNeeded,
1123 in boolean theNodeGroupNeeded )
1124 raises (SALOME::SALOME_Exception);
1127 * \brief Creates a hole in a mesh by doubling the nodes of some particular elements
1128 * This method provided for convenience works as DoubleNodes() described above.
1129 * \param theElems - list of groups of elements (edges or faces) to be replicated
1130 * \param theNodesNot - list of groups of nodes not to replicated
1131 * \param theShape - shape to detect affected elements (element which geometric center
1132 * located on or inside shape).
1133 * The replicated nodes should be associated to affected elements.
1134 * \return TRUE if operation has been completed successfully, FALSE otherwise
1135 * \sa DoubleNodeGroupInRegion(), DoubleNodesInRegion()
1137 boolean DoubleNodeElemGroupsInRegion( in ListOfGroups theElems,
1138 in ListOfGroups theNodesNot,
1139 in GEOM::GEOM_Object theShape )
1140 raises (SALOME::SALOME_Exception);
1143 * \brief Identify the elements that will be affected by node duplication (actual duplication is not performed).
1144 * This method is the first step of DoubleNodeElemGroupsInRegion.
1145 * \param theElems - list of groups of elements (edges or faces) to be replicated
1146 * \param theNodesNot - list of groups of nodes not to replicated
1147 * \param theShape - shape to detect affected elements (element which geometric center
1148 * located on or inside shape).
1149 * The replicated nodes should be associated to affected elements.
1150 * \return groups of affected elements
1151 * \sa DoubleNodeElemGroupsInRegion()
1153 ListOfGroups AffectedElemGroupsInRegion( in ListOfGroups theElems,
1154 in ListOfGroups theNodesNot,
1155 in GEOM::GEOM_Object theShape )
1156 raises (SALOME::SALOME_Exception);
1159 * \brief Generates skin mesh (containing 2D cells) from 3D mesh
1160 * The created 2D mesh elements based on nodes of free faces of boundary volumes
1161 * \return TRUE if operation has been completed successfully, FALSE otherwise
1163 boolean Make2DMeshFrom3D() raises (SALOME::SALOME_Exception);
1166 * \brief Creates missing boundary elements
1167 * \param elements - elements whose boundary is to be checked
1168 * \param dimension - defines type of boundary elements to create
1169 * BND_1DFROM3D creates mesh edges on all borders of free facets of 3D elements.
1170 * \param groupName - a name of group to store created boundary elements in,
1171 * "" means not to create the group
1172 * \param meshName - a name of new mesh to store created boundary elements in,
1173 * "" means not to create the new mesh
1174 * \param toCopyElements - if true, the checked elements will be copied into the new mesh
1175 * else only boundary elements will be copied into the new mesh
1176 * \param toCopyExistingBondary - if true, not only new but also pre-existing
1177 * boundary elements will be copied into the new mesh
1178 * \param group - returns the create group, if any
1179 * \retval SMESH::SMESH_Mesh - the mesh where elements were added to
1181 SMESH_Mesh MakeBoundaryMesh(in SMESH_IDSource elements,
1182 in Bnd_Dimension dimension,
1183 in string groupName,
1185 in boolean toCopyElements,
1186 in boolean toCopyExistingBondary,
1187 out SMESH_Group group) raises (SALOME::SALOME_Exception);
1189 * \brief Creates missing boundary elements around either the whole mesh or
1190 * groups of 2D elements
1191 * \param dimension - defines type of boundary elements to create
1192 * \param groupName - a name of group to store all boundary elements in,
1193 * "" means not to create the group
1194 * \param meshName - a name of a new mesh, which is a copy of the initial
1195 * mesh + created boundary elements; "" means not to create the new mesh
1196 * \param toCopyAll - if true, the whole initial mesh will be copied into
1197 * the new mesh else only boundary elements will be copied into the new mesh
1198 * \param groups - optional groups of 2D elements to make boundary around
1199 * \param mesh - returns the mesh where elements were added to
1200 * \param group - returns the created group, if any
1201 * \retval long - number of added boundary elements
1203 long MakeBoundaryElements(in Bnd_Dimension dimension,
1204 in string groupName,
1206 in boolean toCopyAll,
1207 in ListOfIDSources groups,
1208 out SMESH_Mesh mesh,
1209 out SMESH_Group group) raises (SALOME::SALOME_Exception);
1212 * \brief Double nodes on shared faces between groups of volumes and create flat elements on demand.
1213 * Flat elements are mainly used by some types of mechanic calculations.
1215 * The list of groups must describe a partition of the mesh volumes.
1216 * The nodes of the internal faces at the boundaries of the groups are doubled.
1217 * In option, the internal faces are replaced by flat elements.
1218 * Triangles are transformed in prisms, and quadrangles in hexahedrons.
1219 * \param theDomains - list of groups of volumes
1220 * \param createJointElems - if TRUE, create the elements
1221 * \param onAllBoundaries - if TRUE, the nodes and elements are also created on
1222 * the boundary between \a theDomains and the rest mesh
1223 * \return TRUE if operation has been completed successfully, FALSE otherwise
1225 boolean DoubleNodesOnGroupBoundaries( in ListOfGroups theDomains,
1226 in boolean createJointElems,
1227 in boolean onAllBoundaries)
1228 raises (SALOME::SALOME_Exception);
1231 * \brief Double nodes on some external faces and create flat elements.
1232 * Flat elements are mainly used by some types of mechanic calculations.
1234 * Each group of the list must be constituted of faces.
1235 * Triangles are transformed in prisms, and quadrangles in hexahedrons.
1236 * \param theGroupsOfFaces - list of groups of faces
1237 * \return TRUE if operation has been completed successfully, FALSE otherwise
1239 boolean CreateFlatElementsOnFacesGroups( in ListOfGroups theGroupsOfFaces )
1240 raises (SALOME::SALOME_Exception);
1243 * \brief identify all the elements around a geom shape, get the faces delimiting the hole
1244 * Build groups of volume to remove, groups of faces to replace on the skin of the object,
1245 * groups of faces to remove insidethe object, (idem edges).
1246 * Build ordered list of nodes at the border of each group of faces to replace (to be used to build a geom subshape)
1248 void CreateHoleSkin(in double radius,
1249 in GEOM::GEOM_Object theShape,
1250 in string groupName,
1251 in double_array theNodesCoords,
1252 out array_of_long_array GroupsOfNodes)
1253 raises (SALOME::SALOME_Exception);
1257 * \brief Create a polyline consisting of 1D mesh elements each lying on a 2D element of
1258 * the initial mesh. Positions of new nodes are found by cutting the mesh by the
1259 * plane passing through pairs of points specified by each PolySegment structure.
1260 * If there are several paths connecting a pair of points, the shortest path is
1261 * selected by the module. Position of the cutting plane is defined by the two
1262 * points and an optional vector lying on the plane specified by a PolySegment.
1263 * By default the vector is defined by Mesh module as following. A middle point
1264 * of the two given points is computed. The middle point is projected to the mesh.
1265 * The vector goes from the middle point to the projection point. In case of planar
1266 * mesh, the vector is normal to the mesh.
1267 * \param [inout] segments - PolySegment's defining positions of cutting planes.
1268 * Return the used vector which goes from the middle point to its projection.
1269 * \param [in] groupName - optional name of a group where created mesh segments will
1272 void MakePolyLine(inout ListOfPolySegments segments,
1273 in string groupName)
1274 raises (SALOME::SALOME_Exception);