X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=idl%2FSMESH_MeshEditor.idl;h=f1b2fc82b86d3a86b7919cc81e11e8b86e6e7d38;hb=16ed45cd7d75a5763214f0a4aa8e806923852ba6;hp=8b038becf380de84e50c0e0ee3bb15cfb53d4bd5;hpb=e30e3628ce1c7687b6e462e793c9e402684811e1;p=modules%2Fsmesh.git diff --git a/idl/SMESH_MeshEditor.idl b/idl/SMESH_MeshEditor.idl index 8b038becf..f1b2fc82b 100644 --- a/idl/SMESH_MeshEditor.idl +++ b/idl/SMESH_MeshEditor.idl @@ -1,23 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SMESH_MeshEditor.idl @@ -25,6 +25,7 @@ #define _SMESH_MESHEDITOR_IDL_ #include "SMESH_Mesh.idl" +#include "SMESH_Gen.idl" module SMESH { @@ -34,8 +35,34 @@ module SMESH * This interface makes modifications on the Mesh - removing elements and nodes etc. */ interface NumericalFunctor; + interface SMESH_MeshEditor { + /*! + * Return data of mesh edition preview which is computed provided + * that the editor was obtained trough SMESH_Mesh::GetMeshEditPreviewer() + */ + MeshPreviewStruct GetPreviewData() raises (SALOME::SALOME_Exception); + + /*! + * If during last operation of MeshEditor some nodes were + * created this method returns list of their IDs, if new nodes + * not created - returns empty list + */ + long_array GetLastCreatedNodes() raises (SALOME::SALOME_Exception); + + /*! + * If during last operation of MeshEditor some elements were + * created this method returns list of their IDs, if new elements + * not created - returns empty list + */ + long_array GetLastCreatedElems() raises (SALOME::SALOME_Exception); + + /*! + * \brief Returns description of an error/warning occured during the last operation + */ + ComputeError GetLastError() raises (SALOME::SALOME_Exception); + /*! * \brief Wrap a sequence of ids in a SMESH_IDSource * \param IDsOfElements list of mesh elements identifiers @@ -48,45 +75,51 @@ module SMESH * \param IDsOfElements list of mesh elements identifiers * \return \c true if elements are correctly removed or \c false otherwise */ - boolean RemoveElements(in long_array IDsOfElements); + boolean RemoveElements(in long_array IDsOfElements) raises (SALOME::SALOME_Exception); /*! * \brief Remove mesh nodes specified by their identifiers. * \param IDsOfNodes list of mesh nodes identifiers * \return \c true if nodes are correctly removed or \c false otherwise */ - boolean RemoveNodes(in long_array IDsOfNodes); + boolean RemoveNodes(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception); /*! * \brief Remove all orphan nodes. * \return number of removed nodes */ - long RemoveOrphanNodes(); + long RemoveOrphanNodes() raises (SALOME::SALOME_Exception); /*! - * \brief Add new node. + * \brief Add a new node. * \param x X coordinate of new node * \param y Y coordinate of new node * \param z Z coordinate of new node * \return integer identifier of new node */ - long AddNode(in double x, in double y, in double z); + long AddNode(in double x, in double y, in double z) raises (SALOME::SALOME_Exception); /*! - * Create 0D element on the given node. + * Create a 0D element on the given node. * \param IdOfNode Node IDs for creation of element. */ - long Add0DElement(in long IDOfNode); + long Add0DElement(in long IDOfNode) raises (SALOME::SALOME_Exception); /*! - * Create edge, either linear and quadratic (this is determed - * by number of given nodes). + * Create a ball element on the given node. + * \param IdOfNode Node IDs for creation of element. + */ + long AddBall(in long IDOfNode, in double diameter) raises (SALOME::SALOME_Exception); + + /*! + * Create an edge, either linear and quadratic (this is determed + * by number of given nodes, two or three). * \param IdsOfNodes List of node IDs for creation of element. * Needed order of nodes in this list corresponds to description * of MED. This description is located by the following link: * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. */ - long AddEdge(in long_array IDsOfNodes); + long AddEdge(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception); /*! * Create face, either linear and quadratic (this is determed @@ -96,9 +129,9 @@ module SMESH * of MED. This description is located by the following link: * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. */ - long AddFace(in long_array IDsOfNodes); + long AddFace(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception); - long AddPolygonalFace(in long_array IdsOfNodes); + long AddPolygonalFace(in long_array IdsOfNodes) raises (SALOME::SALOME_Exception); /*! * Create volume, either linear and quadratic (this is determed @@ -108,7 +141,7 @@ module SMESH * of MED. This description is located by the following link: * http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3. */ - long AddVolume(in long_array IDsOfNodes); + long AddVolume(in long_array IDsOfNodes) raises (SALOME::SALOME_Exception); /*! * Create volume of many faces, giving nodes for each face. @@ -117,15 +150,27 @@ module SMESH * gives quantity of nodes in face number i. */ long AddPolyhedralVolume (in long_array IdsOfNodes, - in long_array Quantities); - + in long_array Quantities) raises (SALOME::SALOME_Exception); /*! * Create volume of many faces, giving IDs of existing faces. * \param IdsOfFaces List of face IDs for volume creation. * \note The created volume will refer only to nodes * of the given faces, not to the faces itself. */ - long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces); + long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces) raises (SALOME::SALOME_Exception); + + /*! + * Create 0D elements on all nodes of the given object except those + * nodes on which a 0D element already exists. + * \param theObject object on whose nodes 0D elements will be created. + * \param theGroupName optional name of a group to add 0D elements created + * and/or found on nodes of \a theObject. + * \return an object (a new group or a temporary SMESH_IDSource) holding + * ids of new and/or found 0D elements. + */ + SMESH_IDSource Create0DElementsOnAllNodes(in SMESH_IDSource theObject, + in string theGroupName) + raises (SALOME::SALOME_Exception); /*! * \brief Bind a node to a vertex @@ -167,15 +212,33 @@ module SMESH raises (SALOME::SALOME_Exception); - boolean MoveNode(in long NodeID, in double x, in double y, in double z); + boolean MoveNode(in long NodeID, in double x, in double y, in double z) + raises (SALOME::SALOME_Exception); - boolean InverseDiag(in long NodeID1, in long NodeID2); + boolean InverseDiag(in long NodeID1, in long NodeID2) + raises (SALOME::SALOME_Exception); - boolean DeleteDiag(in long NodeID1, in long NodeID2); + boolean DeleteDiag(in long NodeID1, in long NodeID2) + raises (SALOME::SALOME_Exception); - boolean Reorient(in long_array IDsOfElements); + boolean Reorient(in long_array IDsOfElements) + raises (SALOME::SALOME_Exception); - boolean ReorientObject(in SMESH_IDSource theObject); + boolean ReorientObject(in SMESH_IDSource theObject) + raises (SALOME::SALOME_Exception); + /*! + * \brief Reorient faces contained in \a the2Dgroup. + * \param the2Dgroup - the mesh or its part to reorient + * \param theDirection - desired direction of normal of \a theFace + * \param theFace - ID of face whose orientation is checked. + * It can be < 1 then \a thePoint is used to find a face. + * \param thePoint - is used to find a face if \a theFace < 1. + * \return number of reoriented elements. + */ + long Reorient2D(in SMESH_IDSource the2Dgroup, + in DirStruct theDirection, + in long theFace, + in PointStruct thePoint) raises (SALOME::SALOME_Exception); /*! * \brief Fuse neighbour triangles into quadrangles. @@ -187,7 +250,7 @@ module SMESH */ boolean TriToQuad (in long_array IDsOfElements, in NumericalFunctor Criterion, - in double MaxAngle); + in double MaxAngle) raises (SALOME::SALOME_Exception); /*! * \brief Fuse neighbour triangles into quadrangles. @@ -196,7 +259,7 @@ module SMESH */ boolean TriToQuadObject (in SMESH_IDSource theObject, in NumericalFunctor Criterion, - in double MaxAngle); + in double MaxAngle) raises (SALOME::SALOME_Exception); /*! * \brief Split quadrangles into triangles. @@ -205,7 +268,7 @@ module SMESH * \return TRUE in case of success, FALSE otherwise. */ boolean QuadToTri (in long_array IDsOfElements, - in NumericalFunctor Criterion); + in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception); /*! * \brief Split quadrangles into triangles. @@ -213,7 +276,7 @@ module SMESH * Behaves like the above method, taking list of elements from \a theObject */ boolean QuadToTriObject (in SMESH_IDSource theObject, - in NumericalFunctor Criterion); + in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception); /*! * \brief Split quadrangles into triangles. @@ -222,7 +285,7 @@ module SMESH * \return TRUE in case of success, FALSE otherwise. */ boolean SplitQuad (in long_array IDsOfElements, - in boolean Diag13); + in boolean Diag13) raises (SALOME::SALOME_Exception); /*! * \brief Split quadrangles into triangles. @@ -230,7 +293,7 @@ module SMESH * Behaves like the above method, taking list of elements from \a theObject */ boolean SplitQuadObject (in SMESH_IDSource theObject, - in boolean Diag13); + in boolean Diag13) raises (SALOME::SALOME_Exception); /*! * Find better splitting of the given quadrangle. @@ -240,7 +303,7 @@ module SMESH * diagonal is better, 0 if error occurs. */ long BestSplit (in long IDOfQuad, - in NumericalFunctor Criterion); + in NumericalFunctor Criterion) raises (SALOME::SALOME_Exception); /*! * \brief Split volumic elements into tetrahedrons @@ -260,33 +323,44 @@ module SMESH in long_array IDsOfFixedNodes, in long MaxNbOfIterations, in double MaxAspectRatio, - in Smooth_Method Method); + in Smooth_Method Method) raises (SALOME::SALOME_Exception); boolean SmoothObject(in SMESH_IDSource theObject, in long_array IDsOfFixedNodes, in long MaxNbOfIterations, in double MaxAspectRatio, - in Smooth_Method Method); + in Smooth_Method Method) raises (SALOME::SALOME_Exception); boolean SmoothParametric(in long_array IDsOfElements, in long_array IDsOfFixedNodes, in long MaxNbOfIterations, in double MaxAspectRatio, - in Smooth_Method Method); + in Smooth_Method Method) raises (SALOME::SALOME_Exception); boolean SmoothParametricObject(in SMESH_IDSource theObject, in long_array IDsOfFixedNodes, in long MaxNbOfIterations, in double MaxAspectRatio, - in Smooth_Method Method); + in Smooth_Method Method) raises (SALOME::SALOME_Exception); - void ConvertToQuadratic(in boolean theForce3d); + void ConvertToQuadratic(in boolean theForce3d) + raises (SALOME::SALOME_Exception); + void ConvertToQuadraticObject(in boolean theForce3d, + in SMESH_IDSource theObject) + raises (SALOME::SALOME_Exception); + + boolean ConvertFromQuadratic() + raises (SALOME::SALOME_Exception); + void ConvertFromQuadraticObject(in SMESH_IDSource theObject) + raises (SALOME::SALOME_Exception); - boolean ConvertFromQuadratic(); + void ConvertToBiQuadratic(in boolean theForce3d, + in SMESH_IDSource theObject) + raises (SALOME::SALOME_Exception); - void RenumberNodes(); + void RenumberNodes() raises (SALOME::SALOME_Exception); - void RenumberElements(); + void RenumberElements() raises (SALOME::SALOME_Exception); /*! * \brief Genarate dim+1 elements by rotation of given elements around axis @@ -299,7 +373,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups @@ -308,7 +383,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Genarate dim+1 elements by rotation of the object around axis * \param theObject - object containing elements to ratate @@ -320,7 +396,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups @@ -329,7 +406,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Genarate dim+1 elements by rotation of the object around axis * \param theObject - object containing elements to ratate @@ -341,7 +419,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups @@ -350,7 +429,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Genarate dim+1 elements by rotation of the object around axis * \param theObject - object containing elements to ratate @@ -362,7 +442,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups @@ -371,7 +452,8 @@ module SMESH in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, - in double Tolerance); + in double Tolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Genarate dim+1 elements by extrusion of elements along vector * \param IDsOfElements - elements to sweep @@ -380,14 +462,33 @@ module SMESH */ void ExtrusionSweep(in long_array IDsOfElements, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); + /*! + * \brief Genarate dim+1 elements by extrusion of elements along vector + * \param IDsOfElements - elements to sweep + * \param StepVector - vector giving direction and distance of an extrusion step + * \param NbOfSteps - number of elements to generate from one element + */ + void ExtrusionSweep0D(in long_array IDsOfElements, + in DirStruct StepVector, + in long NbOfSteps) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups */ ListOfGroups ExtrusionSweepMakeGroups(in long_array IDsOfElements, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); + /*! + * \brief Same as previous but elements are nodes + */ + ListOfGroups ExtrusionSweepMakeGroups0D(in long_array IDsOfElements, + in DirStruct StepVector, + in long NbOfSteps) + raises (SALOME::SALOME_Exception); /*! * Generate new elements by extrusion of theElements * by StepVector by NbOfSteps @@ -399,7 +500,8 @@ module SMESH in DirStruct StepVector, in long NbOfSteps, in long ExtrFlags, - in double SewTolerance); + in double SewTolerance) + raises (SALOME::SALOME_Exception); /*! * \brief Same as previous but additionally create groups of elements * generated from elements belonging to preexisting groups @@ -408,28 +510,44 @@ module SMESH in DirStruct StepVector, in long NbOfSteps, in long ExtrFlags, - in double SewTolerance); + in double SewTolerance) + raises (SALOME::SALOME_Exception); void ExtrusionSweepObject(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionSweepObjectMakeGroups(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); + + void ExtrusionSweepObject0D(in SMESH_IDSource theObject, + in DirStruct StepVector, + in long NbOfSteps) + raises (SALOME::SALOME_Exception); + ListOfGroups ExtrusionSweepObject0DMakeGroups(in SMESH_IDSource theObject, + in DirStruct StepVector, + in long NbOfSteps) + raises (SALOME::SALOME_Exception); void ExtrusionSweepObject1D(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionSweepObject1DMakeGroups(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); void ExtrusionSweepObject2D(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionSweepObject2DMakeGroups(in SMESH_IDSource theObject, in DirStruct StepVector, - in long NbOfSteps); + in long NbOfSteps) + raises (SALOME::SALOME_Exception); enum Extrusion_Error { EXTR_OK, @@ -451,7 +569,8 @@ module SMESH in PointStruct RefPoint, in boolean MakeGroups, in ElementType ElemType, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionAlongPathObjX(in SMESH_IDSource theObject, in SMESH_IDSource Path, @@ -463,7 +582,8 @@ module SMESH in PointStruct RefPoint, in boolean MakeGroups, in ElementType ElemType, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); Extrusion_Error ExtrusionAlongPath(in long_array IDsOfElements, in SMESH_Mesh PathMesh, @@ -472,7 +592,8 @@ module SMESH in boolean HasAngles, in double_array Angles, in boolean HasRefPoint, - in PointStruct RefPoint); + in PointStruct RefPoint) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionAlongPathMakeGroups(in long_array IDsOfElements, in SMESH_Mesh PathMesh, in GEOM::GEOM_Object PathShape, @@ -481,7 +602,8 @@ module SMESH in double_array Angles, in boolean HasRefPoint, in PointStruct RefPoint, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, @@ -490,7 +612,8 @@ module SMESH in boolean HasAngles, in double_array Angles, in boolean HasRefPoint, - in PointStruct RefPoint); + in PointStruct RefPoint) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionAlongPathObjectMakeGroups(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, in GEOM::GEOM_Object PathShape, @@ -499,7 +622,8 @@ module SMESH in double_array Angles, in boolean HasRefPoint, in PointStruct RefPoint, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); Extrusion_Error ExtrusionAlongPathObject1D(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, @@ -508,7 +632,8 @@ module SMESH in boolean HasAngles, in double_array Angles, in boolean HasRefPoint, - in PointStruct RefPoint); + in PointStruct RefPoint) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionAlongPathObject1DMakeGroups(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, in GEOM::GEOM_Object PathShape, @@ -517,7 +642,8 @@ module SMESH in double_array Angles, in boolean HasRefPoint, in PointStruct RefPoint, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); Extrusion_Error ExtrusionAlongPathObject2D(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, @@ -526,7 +652,8 @@ module SMESH in boolean HasAngles, in double_array Angles, in boolean HasRefPoint, - in PointStruct RefPoint); + in PointStruct RefPoint) + raises (SALOME::SALOME_Exception); ListOfGroups ExtrusionAlongPathObject2DMakeGroups(in SMESH_IDSource theObject, in SMESH_Mesh PathMesh, in GEOM::GEOM_Object PathShape, @@ -535,7 +662,8 @@ module SMESH in double_array Angles, in boolean HasRefPoint, in PointStruct RefPoint, - out Extrusion_Error Error); + out Extrusion_Error Error) + raises (SALOME::SALOME_Exception); /*! * Compute rotation angles for ExtrusionAlongPath as linear variation @@ -554,101 +682,126 @@ module SMESH void Mirror (in long_array IDsOfElements, in AxisStruct Mirror, in MirrorType Type, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups MirrorMakeGroups (in long_array IDsOfElements, in AxisStruct Mirror, - in MirrorType Type); + in MirrorType Type) + raises (SALOME::SALOME_Exception); SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements, in AxisStruct Mirror, in MirrorType Type, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void MirrorObject (in SMESH_IDSource theObject, in AxisStruct Mirror, in MirrorType Type, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject, in AxisStruct Mirror, - in MirrorType Type); + in MirrorType Type) + raises (SALOME::SALOME_Exception); SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject, in AxisStruct Mirror, in MirrorType Type, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void Translate (in long_array IDsOfElements, in DirStruct Vector, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups TranslateMakeGroups (in long_array IDsOfElements, - in DirStruct Vector); + in DirStruct Vector) + raises (SALOME::SALOME_Exception); SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements, in DirStruct Vector, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void TranslateObject (in SMESH_IDSource theObject, in DirStruct Vector, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject, - in DirStruct Vector); + in DirStruct Vector) + raises (SALOME::SALOME_Exception); SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject, in DirStruct Vector, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void Scale (in SMESH_IDSource theObject, in PointStruct thePoint, in double_array theScaleFact, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups ScaleMakeGroups (in SMESH_IDSource theObject, in PointStruct thePoint, - in double_array theScaleFact); + in double_array theScaleFact) + raises (SALOME::SALOME_Exception); SMESH_Mesh ScaleMakeMesh (in SMESH_IDSource theObject, in PointStruct thePoint, in double_array theScaleFact, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void Rotate (in long_array IDsOfElements, in AxisStruct Axis, in double AngleInRadians, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups RotateMakeGroups (in long_array IDsOfElements, in AxisStruct Axis, - in double AngleInRadians); + in double AngleInRadians) + raises (SALOME::SALOME_Exception); SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements, in AxisStruct Axis, in double AngleInRadians, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void RotateObject (in SMESH_IDSource theObject, in AxisStruct Axis, in double AngleInRadians, - in boolean Copy); + in boolean Copy) + raises (SALOME::SALOME_Exception); ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject, in AxisStruct Axis, - in double AngleInRadians); + in double AngleInRadians) + raises (SALOME::SALOME_Exception); SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject, in AxisStruct Axis, in double AngleInRadians, in boolean CopyGroups, - in string MeshName); + in string MeshName) + raises (SALOME::SALOME_Exception); void FindCoincidentNodes (in double Tolerance, - out array_of_long_array GroupsOfNodes); + out array_of_long_array GroupsOfNodes) + raises (SALOME::SALOME_Exception); void FindCoincidentNodesOnPart (in SMESH_IDSource SubMeshOrGroup, in double Tolerance, - out array_of_long_array GroupsOfNodes); + out array_of_long_array GroupsOfNodes) + raises (SALOME::SALOME_Exception); void FindCoincidentNodesOnPartBut (in SMESH_IDSource SubMeshOrGroup, in double Tolerance, out array_of_long_array GroupsOfNodes, - in ListOfIDSources ExceptSubMeshOrGroups); + in ListOfIDSources ExceptSubMeshOrGroups) + raises (SALOME::SALOME_Exception); - void MergeNodes (in array_of_long_array GroupsOfNodes); + void MergeNodes (in array_of_long_array GroupsOfNodes) + raises (SALOME::SALOME_Exception); /*! * \brief Find elements built on the same nodes. @@ -656,42 +809,60 @@ module SMESH * \return List of groups of equal elements. */ void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup, - out array_of_long_array GroupsOfElementsID); + out array_of_long_array GroupsOfElementsID) + raises (SALOME::SALOME_Exception); /*! * \brief Merge elements in each given group. * \param GroupsOfElementsID Groups of elements for merging. */ - void MergeElements(in array_of_long_array GroupsOfElementsID); + void MergeElements(in array_of_long_array GroupsOfElementsID) + raises (SALOME::SALOME_Exception); /*! * \brief Merge equal elements in the whole mesh. */ - void MergeEqualElements(); + void MergeEqualElements() + raises (SALOME::SALOME_Exception); /*! * If the given ID is a valid node ID (nodeID > 0), just move this node, else * move the node closest to the point to point's location and return ID of the node */ - long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID); + long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID) + raises (SALOME::SALOME_Exception); /*! * Return ID of node closest to a given point */ - long FindNodeClosestTo(in double x, in double y, in double z); + long FindNodeClosestTo(in double x, in double y, in double z) + raises (SALOME::SALOME_Exception); /*! * Return elements of given type where the given point is IN or ON. * * 'ALL' type means elements of any type excluding nodes and 0D elements */ - long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type); + long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type) + raises (SALOME::SALOME_Exception); + + /*! + * Searching among the given elements, return elements of given type + * where the given point is IN or ON. + * + * 'ALL' type means elements of any type excluding nodes and 0D elements + */ + long_array FindAmongElementsByPoint(in SMESH_IDSource elements, + in double x, in double y, in double z, + in ElementType type) + raises (SALOME::SALOME_Exception); /*! * Return point state in a closed 2D mesh in terms of TopAbs_State enumeration. * TopAbs_UNKNOWN state means that either mesh is wrong or the analysis fails. */ - short GetPointState(in double x, in double y, in double z); + short GetPointState(in double x, in double y, in double z) + raises (SALOME::SALOME_Exception); enum Sew_Error { SEW_OK, @@ -714,13 +885,15 @@ module SMESH in long SecondNodeID2, in long LastNodeID2, in boolean CreatePolygons, - in boolean CreatePolyedrs); + in boolean CreatePolyedrs) + raises (SALOME::SALOME_Exception); Sew_Error SewConformFreeBorders (in long FirstNodeID1, in long SecondNodeID1, in long LastNodeID1, in long FirstNodeID2, - in long SecondNodeID2); + in long SecondNodeID2) + raises (SALOME::SALOME_Exception); Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder, in long SecondNodeIDOnFreeBorder, @@ -728,41 +901,24 @@ module SMESH in long FirstNodeIDOnSide, in long LastNodeIDOnSide, in boolean CreatePolygons, - in boolean CreatePolyedrs); + in boolean CreatePolyedrs) + raises (SALOME::SALOME_Exception); Sew_Error SewSideElements (in long_array IDsOfSide1Elements, in long_array IDsOfSide2Elements, in long NodeID1OfSide1ToMerge, in long NodeID1OfSide2ToMerge, in long NodeID2OfSide1ToMerge, - in long NodeID2OfSide2ToMerge); + in long NodeID2OfSide2ToMerge) + raises (SALOME::SALOME_Exception); /*! * Set new nodes for given element. * If number of nodes is not corresponded to type of * element - returns false */ - boolean ChangeElemNodes(in long ide, in long_array newIDs); - - /*! - * Return data of mesh edition preview which is computed provided - * that the editor was obtained trough SMESH_Mesh::GetMeshEditPreviewer() - */ - MeshPreviewStruct GetPreviewData(); - - /*! - * If during last operation of MeshEditor some nodes were - * created this method returns list of it's IDs, if new nodes - * not creared - returns empty list - */ - long_array GetLastCreatedNodes(); - - /*! - * If during last operation of MeshEditor some elements were - * created this method returns list of it's IDs, if new elements - * not creared - returns empty list - */ - long_array GetLastCreatedElems(); + boolean ChangeElemNodes(in long ide, in long_array newIDs) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -773,7 +929,8 @@ module SMESH * \return TRUE if operation has been completed successfully, FALSE otherwise * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodeGroups() */ - boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems ); + boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -783,7 +940,8 @@ module SMESH * \return TRUE if operation has been completed successfully, FALSE otherwise * \sa DoubleNodes(), DoubleNodeGroup(), DoubleNodeGroups() */ - boolean DoubleNode( in long theNodeId, in long_array theModifiedElems ); + boolean DoubleNode( in long theNodeId, in long_array theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -794,8 +952,8 @@ module SMESH * \sa DoubleNode(), DoubleNodes(), DoubleNodeGroups(), DoubleNodeGroupNew() */ boolean DoubleNodeGroup( in SMESH_GroupBase theNodes, - in SMESH_GroupBase theModifiedElems ); - + in SMESH_GroupBase theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements. * Works as DoubleNodeGroup() described above, but returns a new group with @@ -806,7 +964,8 @@ module SMESH * \sa DoubleNodeGroup() */ SMESH_Group DoubleNodeGroupNew( in SMESH_GroupBase theNodes, - in SMESH_GroupBase theModifiedElems ); + in SMESH_GroupBase theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -817,8 +976,8 @@ module SMESH * \sa DoubleNode(), DoubleNodeGroup(), DoubleNodes() */ boolean DoubleNodeGroups( in ListOfGroups theNodes, - in ListOfGroups theModifiedElems ); - + in ListOfGroups theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements * Works as DoubleNodeGroups() described above, but returns a new group with @@ -829,7 +988,8 @@ module SMESH * \sa DoubleNodeGroups() */ SMESH_Group DoubleNodeGroupsNew( in ListOfGroups theNodes, - in ListOfGroups theModifiedElems ); + in ListOfGroups theModifiedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -843,7 +1003,8 @@ module SMESH */ boolean DoubleNodeElem( in long_array theElems, in long_array theNodesNot, - in long_array theAffectedElems ); + in long_array theAffectedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -858,7 +1019,8 @@ module SMESH */ boolean DoubleNodeElemInRegion( in long_array theElems, in long_array theNodesNot, - in GEOM::GEOM_Object theShape ); + in GEOM::GEOM_Object theShape ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -872,8 +1034,8 @@ module SMESH */ boolean DoubleNodeElemGroup( in SMESH_GroupBase theElems, in SMESH_GroupBase theNodesNot, - in SMESH_GroupBase theAffectedElems ); - + in SMESH_GroupBase theAffectedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements. * Works as DoubleNodeElemGroup() described above, but returns a new group with @@ -887,7 +1049,27 @@ module SMESH */ SMESH_Group DoubleNodeElemGroupNew( in SMESH_GroupBase theElems, in SMESH_GroupBase theNodesNot, - in SMESH_GroupBase theAffectedElems ); + in SMESH_GroupBase theAffectedElems ) + raises (SALOME::SALOME_Exception); + /*! + * \brief Creates a hole in a mesh by doubling the nodes of some particular elements. + * Works as DoubleNodeElemGroup() described above, but returns two new groups: + * a group of newly created elements and a group of newly created nodes + * \param theElems - group of of elements (edges or faces) to be replicated + * \param theNodesNot - group of nodes not to replicated + * \param theAffectedElems - group of elements to which the replicated nodes + * should be associated to. + * \param theElemGroupNeeded - to create group of new elements or not + * \param theNodeGroupNeeded - to create group of new nodes or not + * \return two new groups of newly created elements (1st) and nodes (2nd) + * \sa DoubleNodeElemGroup() + */ + ListOfGroups DoubleNodeElemGroup2New( in SMESH_GroupBase theElems, + in SMESH_GroupBase theNodesNot, + in SMESH_GroupBase theAffectedElems, + in boolean theElemGroupNeeded, + in boolean theNodeGroupNeeded) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -901,8 +1083,9 @@ module SMESH * \sa DoubleNodesInRegion(), DoubleNodeGroupsInRegion() */ boolean DoubleNodeElemGroupInRegion( in SMESH_GroupBase theElems, - in SMESH_GroupBase theNodesNot, - in GEOM::GEOM_Object theShape ); + in SMESH_GroupBase theNodesNot, + in GEOM::GEOM_Object theShape ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -916,8 +1099,8 @@ module SMESH */ boolean DoubleNodeElemGroups( in ListOfGroups theElems, in ListOfGroups theNodesNot, - in ListOfGroups theAffectedElems ); - + in ListOfGroups theAffectedElems ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements. * Works as DoubleNodeElemGroups() described above, but returns a new group with @@ -931,7 +1114,27 @@ module SMESH */ SMESH_Group DoubleNodeElemGroupsNew( in ListOfGroups theElems, in ListOfGroups theNodesNot, - in ListOfGroups theAffectedElems ); + in ListOfGroups theAffectedElems ) + raises (SALOME::SALOME_Exception); + /*! + * \brief Creates a hole in a mesh by doubling the nodes of some particular elements. + * Works as DoubleNodeElemGroups() described above, but returns two new groups: + * a group of newly created elements and a group of newly created nodes. + * \param theElems - list of groups of elements (edges or faces) to be replicated + * \param theNodesNot - list of groups of nodes not to replicated + * \param theAffectedElems - group of elements to which the replicated nodes + * should be associated to. + * \param theElemGroupNeeded - to create group of new elements or not + * \param theNodeGroupNeeded - to create group of new nodes or not + * \return two new groups of newly created elements (1st) and nodes (2nd) + * \sa DoubleNodeElemGroups() + */ + ListOfGroups DoubleNodeElemGroups2New( in ListOfGroups theElems, + in ListOfGroups theNodesNot, + in ListOfGroups theAffectedElems, + in boolean theElemGroupNeeded, + in boolean theNodeGroupNeeded ) + raises (SALOME::SALOME_Exception); /*! * \brief Creates a hole in a mesh by doubling the nodes of some particular elements @@ -946,50 +1149,118 @@ module SMESH */ boolean DoubleNodeElemGroupsInRegion( in ListOfGroups theElems, in ListOfGroups theNodesNot, - in GEOM::GEOM_Object theShape ); + in GEOM::GEOM_Object theShape ) + raises (SALOME::SALOME_Exception); /*! - * \brief Generates skin mesh (containing 2D cells) from 3D mesh - * The created 2D mesh elements based on nodes of free faces of boundary volumes - * \return TRUE if operation has been completed successfully, FALSE otherwise + * \brief Identify the elements that will be affected by node duplication (actual duplication is not performed). + * This method is the first step of DoubleNodeElemGroupsInRegion. + * \param theElems - list of groups of elements (edges or faces) to be replicated + * \param theNodesNot - list of groups of nodes not to replicated + * \param theShape - shape to detect affected elements (element which geometric center + * located on or inside shape). + * The replicated nodes should be associated to affected elements. + * \return groups of affected elements + * \sa DoubleNodeElemGroupsInRegion() */ - boolean Make2DMeshFrom3D(); + ListOfGroups AffectedElemGroupsInRegion( in ListOfGroups theElems, + in ListOfGroups theNodesNot, + in GEOM::GEOM_Object theShape ) + raises (SALOME::SALOME_Exception); /*! - * \brief Double nodes on shared faces between groups of volumes and create flat elements on demand. - * The list of groups must describe a partition of the mesh volumes. - * The nodes of the internal faces at the boundaries of the groups are doubled. - * In option, the internal faces are replaced by flat elements. - * Triangles are transformed in prisms, and quadrangles in hexahedrons. - * \param theDomains - list of groups of volumes - * \param createJointElems - if TRUE, create the elements + * \brief Generates skin mesh (containing 2D cells) from 3D mesh + * The created 2D mesh elements based on nodes of free faces of boundary volumes * \return TRUE if operation has been completed successfully, FALSE otherwise */ - boolean DoubleNodesOnGroupBoundaries( in ListOfGroups theDomains, - in boolean createJointElems ); + boolean Make2DMeshFrom3D() raises (SALOME::SALOME_Exception); /*! * \brief Creates missing boundary elements * \param elements - elements whose boundary is to be checked * \param dimension - defines type of boundary elements to create + * BND_1DFROM3D creates mesh edges on all borders of free facets of 3D elements. * \param groupName - a name of group to store created boundary elements in, * "" means not to create the group * \param meshName - a name of new mesh to store created boundary elements in, * "" means not to create the new mesh * \param toCopyElements - if true, the checked elements will be copied into the new mesh + * else only boundary elements will be copied into the new mesh * \param toCopyExistingBondary - if true, not only new but also pre-existing * boundary elements will be copied into the new mesh * \param group - returns the create group, if any * \retval SMESH::SMESH_Mesh - the mesh where elements were added to */ - SMESH::SMESH_Mesh MakeBoundaryMesh(in SMESH_IDSource elements, - in Bnd_Dimension dimension, - in string groupName, - in string meshName, - in boolean toCopyElements, - in boolean toCopyExistingBondary, - out SMESH_Group group); + SMESH_Mesh MakeBoundaryMesh(in SMESH_IDSource elements, + in Bnd_Dimension dimension, + in string groupName, + in string meshName, + in boolean toCopyElements, + in boolean toCopyExistingBondary, + out SMESH_Group group) raises (SALOME::SALOME_Exception); + /*! + * \brief Creates missing boundary elements around either the whole mesh or + * groups of 2D elements + * \param dimension - defines type of boundary elements to create + * \param groupName - a name of group to store all boundary elements in, + * "" means not to create the group + * \param meshName - a name of a new mesh, which is a copy of the initial + * mesh + created boundary elements; "" means not to create the new mesh + * \param toCopyAll - if true, the whole initial mesh will be copied into + * the new mesh else only boundary elements will be copied into the new mesh + * \param groups - optional groups of 2D elements to make boundary around + * \param mesh - returns the mesh where elements were added to + * \param group - returns the created group, if any + * \retval long - number of added boundary elements + */ + long MakeBoundaryElements(in Bnd_Dimension dimension, + in string groupName, + in string meshName, + in boolean toCopyAll, + in ListOfIDSources groups, + out SMESH_Mesh mesh, + out SMESH_Group group) raises (SALOME::SALOME_Exception); + /*! + * \brief Double nodes on shared faces between groups of volumes and create flat elements on demand. + * Flat elements are mainly used by some types of mechanic calculations. + * + * The list of groups must describe a partition of the mesh volumes. + * The nodes of the internal faces at the boundaries of the groups are doubled. + * In option, the internal faces are replaced by flat elements. + * Triangles are transformed in prisms, and quadrangles in hexahedrons. + * \param theDomains - list of groups of volumes + * \param createJointElems - if TRUE, create the elements + * \return TRUE if operation has been completed successfully, FALSE otherwise + */ + boolean DoubleNodesOnGroupBoundaries( in ListOfGroups theDomains, + in boolean createJointElems ) + raises (SALOME::SALOME_Exception); + + /*! + * \brief Double nodes on some external faces and create flat elements. + * Flat elements are mainly used by some types of mechanic calculations. + * + * Each group of the list must be constituted of faces. + * Triangles are transformed in prisms, and quadrangles in hexahedrons. + * \param theGroupsOfFaces - list of groups of faces + * \return TRUE if operation has been completed successfully, FALSE otherwise + */ + boolean CreateFlatElementsOnFacesGroups( in ListOfGroups theGroupsOfFaces ) + raises (SALOME::SALOME_Exception); + + /*! + * \brief identify all the elements around a geom shape, get the faces delimiting the hole + * Build groups of volume to remove, groups of faces to replace on the skin of the object, + * groups of faces to remove insidethe object, (idem edges). + * Build ordered list of nodes at the border of each group of faces to replace (to be used to build a geom subshape) + */ + void CreateHoleSkin(in double radius, + in GEOM::GEOM_Object theShape, + in string groupName, + in double_array theNodesCoords, + out array_of_long_array GroupsOfNodes) + raises (SALOME::SALOME_Exception); }; };