X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=c11266dedfa25c4c06bee5416cb988b95a8d3299;hp=f34baa99bef2f4042ff117e2a1ec5b87bef198bf;hb=d9a6e9d9f3e844703bbeb5cd6806bed6c2e9b615;hpb=298f5a9bb302fffccb6af7ac6e624dfd28d6e08a diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index f34baa99b..c11266ded 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -1,21 +1,21 @@ // Copyright (C) 2003 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 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 -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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 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 +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -28,24 +28,15 @@ #include "SALOME_Exception.idl" #include "SALOME_GenericObj.idl" - -module GEOM -{ - interface GEOM_Object; -}; - - -module SALOME_MED -{ - interface MESH; - interface FAMILY; -}; - +#include "GEOM_Gen.idl" +#include "MED.idl" module SMESH { interface SMESH_Hypothesis; typedef sequence ListOfHypothesis; + interface SMESH_GroupBase; + typedef sequence ListOfGroups; typedef sequence double_array ; typedef sequence long_array ; @@ -58,15 +49,25 @@ module SMESH ADD_EDGE, ADD_TRIANGLE, ADD_QUADRANGLE, + ADD_POLYGON, ADD_TETRAHEDRON, ADD_PYRAMID, ADD_PRISM, ADD_HEXAHEDRON, + ADD_POLYHEDRON, REMOVE_NODE, REMOVE_ELEMENT, MOVE_NODE, CHANGE_ELEMENT_NODES, - RENUMBER + CHANGE_POLYHEDRON_NODES, + RENUMBER, + ADD_QUADEDGE, + ADD_QUADTRIANGLE, + ADD_QUADQUADRANGLE, + ADD_QUADTETRAHEDRON, + ADD_QUADPYRAMID, + ADD_QUADPENTAHEDRON, + ADD_QUADHEXAHEDRON }; struct log_block @@ -77,11 +78,11 @@ module SMESH long_array indexes; }; - struct PointStruct { double x; - double y; - double z; } ; + struct PointStruct { double x; + double y; + double z; } ; struct DirStruct { PointStruct PS ; } ; // analog to Occ Direction - + struct AxisStruct { double x; double y; double z; @@ -89,7 +90,7 @@ module SMESH double vy; double vz; } ; - + /*! * Enumeration for element type, like in SMDS */ @@ -103,8 +104,17 @@ module SMESH }; /*! - * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods) - */ + * ElementOrder points out entities of what order are requested + */ + enum ElementOrder { + ORDER_ANY, /*! entities of any order */ + ORDER_LINEAR, /*! entities of 1st order */ + ORDER_QUADRATIC /*! entities of 2nd order */ + }; + + /*! + * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods) + */ enum Hypothesis_Status // in the order of severity { HYP_OK, @@ -116,12 +126,13 @@ module SMESH HYP_INCOMPATIBLE, // hypothesis does not fit algo HYP_NOTCONFORM, // not conform mesh is produced appling a hypothesis HYP_ALREADY_EXIST,// such hypothesis already exist - HYP_BAD_DIM // bad dimension - }; - + HYP_BAD_DIM, // bad dimension + HYP_BAD_SUBSHAPE // shape is neither the main one, nor its subshape, nor a group + }; + /*! * Enumeration for DriverMED read status (used by ImportMEDFile() method) - */ + */ enum DriverMED_ReadStatus // in the order of severity { DRS_OK, @@ -130,11 +141,11 @@ module SMESH // so the numbers from the file are ignored DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data DRS_FAIL // general failure (exception etc.) - }; + }; /*! * Enumeration for DriverMED (used by Perform() method) - */ + */ enum MED_VERSION // in the order of severity { MED_V2_1, @@ -144,6 +155,14 @@ module SMESH typedef sequence log_array; + /*! + * Auxilary flags for advanced extrusion. + * BOUNDARY: create or not boundary for result of extrusion + * SEW: try to use existing nodes or create new nodes in any case + */ + const long EXTRUSION_FLAG_BOUNDARY = 1; + const long EXTRUSION_FLAG_SEW = 2; + interface SMESH_IDSource { /*! @@ -151,35 +170,33 @@ module SMESH */ long_array GetIDs(); }; - - interface SMESH_GroupBase; + interface SMESH_Group; interface SMESH_GroupOnGeom; interface SMESH_subMesh; interface SMESH_MeshEditor; interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource { - /*! - * Associate a Shape to a Mesh created with NewEmpty - */ - -// boolean SetMesh(in GEOM::GEOM_Object anObject) -// raises (SALOME::SALOME_Exception); + ///*! + // * Associate a Shape to a Mesh created with NewEmpty + // */ + //boolean SetMesh(in GEOM::GEOM_Object anObject) + // raises (SALOME::SALOME_Exception); /*! * Get the subMesh object associated to a subShape. The subMesh object * gives access to nodes and elements IDs. - * SubMesh will be used instead of SubShape in a next idl version to + * SubMesh will be used instead of SubShape in a next idl version to * adress a specific subMesh... */ SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) raises (SALOME::SALOME_Exception); - /*! - * Create a subMesh without reference to a subShape - */ -// SMESH_subMesh NewEmpty() -// raises (SALOME::SALOME_Exception); + ///*! + // * Create a subMesh without reference to a subShape + // */ + //SMESH_subMesh NewEmpty() + // raises (SALOME::SALOME_Exception); /*! * Get geom shape to mesh. A result may be nil @@ -214,41 +231,47 @@ module SMESH void RemoveGroup(in SMESH_GroupBase aGroup) raises (SALOME::SALOME_Exception); - /*! + /*! * Remove group with its contents */ void RemoveGroupWithContents( in SMESH_GroupBase aGroup ) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); + + /*! + * Get the list of groups existing in the mesh + */ + ListOfGroups GetGroups() + raises (SALOME::SALOME_Exception); /*! * Union of two groups - * New group is created. All mesh elements that are + * New group is created. All mesh elements that are * present in initial groups are added to the new one */ SMESH_Group UnionGroups (in SMESH_GroupBase aGroup1, in SMESH_GroupBase aGroup2, in string name ) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); /*! * Intersection of two groups - * New group is created. All mesh elements that are + * New group is created. All mesh elements that are * present in both initial groups are added to the new one. */ SMESH_Group IntersectGroups (in SMESH_GroupBase aGroup1, in SMESH_GroupBase aGroup2, in string name ) - raises (SALOME::SALOME_Exception); - - /*! - * Cut of two groups - * New group is created. All mesh elements that are present in - * main group but do not present in tool group are added to the new one - */ - SMESH_Group CutGroups (in SMESH_GroupBase aMainGroup, - in SMESH_GroupBase aToolGroup, - in string name ) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); + + /*! + * Cut of two groups + * New group is created. All mesh elements that are present in + * main group but do not present in tool group are added to the new one + */ + SMESH_Group CutGroups (in SMESH_GroupBase aMainGroup, + in SMESH_GroupBase aToolGroup, + in string name ) + raises (SALOME::SALOME_Exception); /*! * Add hypothesis to the mesh, under a particular subShape @@ -259,9 +282,9 @@ module SMESH * @params * - aSubShape : subShape obtained by a shape explode in GEOM * (or main shape) - * - anHyp : hypothesis object + * - anHyp : hypothesis object * @return - * - OK if the hypothesis is compatible with the subShape + * - OK if the hypothesis is compatible with the subShape * (and all previous hypothesis on the subShape) * - NOK if the hypothesis is not compatible with the subShape * (or one previous hypothesis on the subShape) @@ -273,7 +296,6 @@ module SMESH // boolean AddHypothesis(in SMESH_subMesh aSubMesh, in SMESH_Hypothesis anHyp) // raises (SALOME::SALOME_Exception); - /*! * Remove an hypothesis previouly added with AddHypothesis. */ @@ -311,27 +333,42 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Get the internal Id + * Get the internal Id */ - long GetId(); + long GetId(); /*! - * Get the study Id + * Get the study Id */ - long GetStudyId(); - - SMESH_MeshEditor GetMeshEditor() - raises (SALOME::SALOME_Exception); + long GetStudyId(); + + /*! + * Obtain instance of SMESH_MeshEditor + */ + SMESH_MeshEditor GetMeshEditor() + raises (SALOME::SALOME_Exception); + + /*! Check group names for duplications. + * Consider maximum group name length stored in MED file. + */ + boolean HasDuplicatedGroupNamesMED(); /*! - * Export Mesh to MED Formats + * Export Mesh to different MED Formats * @params * - auto_groups : boolean parameter for creating/not creating * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; * the typical use is auto_groups=false. + * - theVersion : define the version of format of MED file, that will be created */ void ExportToMED( in string file, in boolean auto_groups, in MED_VERSION theVersion ) raises (SALOME::SALOME_Exception); + + /*! + * Export Mesh to MED_V2_1 MED format + * Works, just the same as ExportToMED, with MED_VERSION parameter equal to MED_V2_1. + * The method is kept in order to support old functionality + */ void ExportMED( in string file, in boolean auto_groups ) raises (SALOME::SALOME_Exception); @@ -351,6 +388,9 @@ module SMESH SALOME_MED::MESH GetMEDMesh() raises (SALOME::SALOME_Exception); + /*! + * Get informations about mesh contents + */ long NbNodes() raises (SALOME::SALOME_Exception); @@ -360,30 +400,63 @@ module SMESH long NbEdges() raises (SALOME::SALOME_Exception); + long NbEdgesOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbFaces() raises (SALOME::SALOME_Exception); + long NbFacesOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbTriangles() raises (SALOME::SALOME_Exception); + long NbTrianglesOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbQuadrangles() raises (SALOME::SALOME_Exception); + long NbQuadranglesOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + + long NbPolygons() + raises (SALOME::SALOME_Exception); + long NbVolumes() raises (SALOME::SALOME_Exception); + long NbVolumesOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbTetras() raises (SALOME::SALOME_Exception); + long NbTetrasOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbHexas() raises (SALOME::SALOME_Exception); + long NbHexasOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbPyramids() raises (SALOME::SALOME_Exception); + long NbPyramidsOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbPrisms() raises (SALOME::SALOME_Exception); + long NbPrismsOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + + long NbPolyhedrons() + raises (SALOME::SALOME_Exception); + long NbSubMesh() raises (SALOME::SALOME_Exception); @@ -395,38 +468,140 @@ module SMESH long_array GetNodesId() raises (SALOME::SALOME_Exception); + + /*! + * Returns type of mesh element + */ + ElementType GetElementType( in long id, in boolean iselem ) + raises (SALOME::SALOME_Exception); + + long_array GetSubMeshElementsId(in long ShapeID) + raises (SALOME::SALOME_Exception); + long_array GetSubMeshNodesId(in long ShapeID, in boolean all ) + raises (SALOME::SALOME_Exception); + + ElementType GetSubMeshElementType(in long ShapeID) + raises (SALOME::SALOME_Exception); + + /*! + * Get mesh description + */ string Dump(); + + /*! + * Get mesh pointer + */ + long GetMeshPtr(); + + /*! + * Get XYZ coordinates of node as list of double + * If there is not node for given ID - returns empty list + */ + double_array GetNodeXYZ(in long id); + + /*! + * For given node returns list of IDs of inverse elements + * If there is not node for given ID - returns empty list + */ + long_array GetNodeInverseElements(in long id); + + /*! + * If given element is node returns IDs of shape from position + * else - return ID of result shape after ::FindShape() + * from SMESH_MeshEditor + * If there is not element for given ID - returns -1 + */ + long GetShapeID(in long id); + + /*! + * Returns number of nodes for given element + * If there is not element for given ID - returns -1 + */ + long GetElemNbNodes(in long id); + + /*! + * Returns ID of node by given index for given element + * If there is not element for given ID - returns -1 + * If there is not node for given index - returns -2 + */ + long GetElemNode(in long id, in long index); + + /*! + * Returns true if given node is medium node + * in given quadratic element + */ + boolean IsMediumNode(in long ide, in long idn); + + /*! + * Returns true if given node is medium node + * in one of quadratic elements + */ + boolean IsMediumNodeOfAnyElem(in long idn, in ElementType elem_type); + + /*! + * Returns number of edges for given element + */ + long ElemNbEdges(in long id); + + /*! + * Returns number of faces for given element + */ + long ElemNbFaces(in long id); + + /*! + * Returns true if given element is polygon + */ + boolean IsPoly(in long id); + + /*! + * Returns true if given element is quadratic + */ + boolean IsQuadratic(in long id); + + /*! + * Returns XYZ coordinates of bary center for given element + * as list of double + * If there is not element for given ID - returns empty list + */ + double_array BaryCenter(in long id); + }; interface SMESH_subMesh : SALOME::GenericObj, SMESH_IDSource { /*! - * + * */ long GetNumberOfElements() raises (SALOME::SALOME_Exception); /*! - * + * */ long GetNumberOfNodes( in boolean all ) raises (SALOME::SALOME_Exception); /*! - * + * */ long_array GetElementsId() raises (SALOME::SALOME_Exception); /*! - * + * */ long_array GetElementsByType( in ElementType theType ) raises (SALOME::SALOME_Exception); + + /*! + * Return type of submesh element + */ + ElementType GetElementType( in long id, in boolean iselem ) + raises (SALOME::SALOME_Exception); /*! - * + * */ long_array GetNodesId() raises (SALOME::SALOME_Exception); @@ -444,9 +619,9 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Get the internal Id + * Get the internal Id */ - long GetId(); + long GetId(); /*! * Get MED subMesh @@ -454,25 +629,43 @@ module SMESH SALOME_MED::FAMILY GetFamily() raises (SALOME::SALOME_Exception); }; - - /* + + /*! * This interface makes modifications on the Mesh - removing elements and nodes etc. */ interface NumericalFunctor; - interface SMESH_MeshEditor { - - + interface SMESH_MeshEditor + { boolean RemoveElements(in long_array IDsOfElements); boolean RemoveNodes(in long_array IDsOfNodes); - boolean AddNode(in double x, in double y, in double z); + long AddNode(in double x, in double y, in double z); + + long AddEdge(in long_array IDsOfNodes); - boolean AddEdge(in long_array IDsOfNodes); + long AddFace(in long_array IDsOfNodes); - boolean AddFace(in long_array IDsOfNodes); + long AddPolygonalFace(in long_array IdsOfNodes); - boolean AddVolume(in long_array IDsOfNodes); + long AddVolume(in long_array IDsOfNodes); + + /*! + * Create volume of many faces, giving nodes for each face. + * \param IdsOfNodes List of node IDs for volume creation face by face. + * \param Quantities List of integer values, Quantities[i] + * gives quantity of nodes in face number i. + */ + long AddPolyhedralVolume (in long_array IdsOfNodes, + in long_array Quantities); + + /*! + * 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); boolean MoveNode(in long NodeID, in double x, in double y, in double z); @@ -481,25 +674,73 @@ module SMESH boolean DeleteDiag(in long NodeID1, in long NodeID2); boolean Reorient(in long_array IDsOfElements); - - boolean ReorientObject(in SMESH_IDSource theObject); - boolean TriToQuad(in long_array IDsOfElements, - in NumericalFunctor Criterion, - in double MaxAngle); - - boolean TriToQuadObject(in SMESH_IDSource theObject, - in NumericalFunctor Criterion, - in double MaxAngle); - - boolean QuadToTri(in long_array IDsOfElements, - in NumericalFunctor Criterion); + boolean ReorientObject(in SMESH_IDSource theObject); + + /*! + * \brief Fuse neighbour triangles into quadrangles. + * \param theElems The triangles to be fused. + * \param theCriterion Is used to choose a neighbour to fuse with. + * \param theMaxAngle Is a max angle between element normals at which fusion + * is still performed; theMaxAngle is mesured in radians. + * \return TRUE in case of success, FALSE otherwise. + */ + boolean TriToQuad (in long_array IDsOfElements, + in NumericalFunctor Criterion, + in double MaxAngle); - boolean SplitQuad(in long_array IDsOfElements, - in boolean Diag13); + /*! + * \brief Fuse neighbour triangles into quadrangles. + * + * Behaves like the above method, taking list of elements from \a theObject + */ + boolean TriToQuadObject (in SMESH_IDSource theObject, + in NumericalFunctor Criterion, + in double MaxAngle); - boolean SplitQuadObject(in SMESH_IDSource theObject, - in boolean Diag13); + /*! + * \brief Split quadrangles into triangles. + * \param theElems The faces to be splitted. + * \param theCriterion Is used to choose a diagonal for splitting. + * \return TRUE in case of success, FALSE otherwise. + */ + boolean QuadToTri (in long_array IDsOfElements, + in NumericalFunctor Criterion); + + /*! + * \brief Split quadrangles into triangles. + * + * Behaves like the above method, taking list of elements from \a theObject + */ + boolean QuadToTriObject (in SMESH_IDSource theObject, + in NumericalFunctor Criterion); + + /*! + * \brief Split quadrangles into triangles. + * \param theElems The faces to be splitted. + * \param the13Diag Is used to choose a diagonal for splitting. + * \return TRUE in case of success, FALSE otherwise. + */ + boolean SplitQuad (in long_array IDsOfElements, + in boolean Diag13); + + /*! + * \brief Split quadrangles into triangles. + * + * Behaves like the above method, taking list of elements from \a theObject + */ + boolean SplitQuadObject (in SMESH_IDSource theObject, + in boolean Diag13); + + /*! + * Find better splitting of the given quadrangle. + * \param IDOfQuad ID of the quadrangle to be splitted. + * \param Criterion A criterion to choose a diagonal for splitting. + * \return 1 if 1-3 diagonal is better, 2 if 2-4 + * diagonal is better, 0 if error occurs. + */ + long BestSplit (in long IDOfQuad, + in NumericalFunctor Criterion); enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH }; @@ -515,6 +756,22 @@ module SMESH in double MaxAspectRatio, in Smooth_Method Method); + boolean SmoothParametric(in long_array IDsOfElements, + in long_array IDsOfFixedNodes, + in long MaxNbOfIterations, + in double MaxAspectRatio, + in Smooth_Method Method); + + boolean SmoothParametricObject(in SMESH_IDSource theObject, + in long_array IDsOfFixedNodes, + in long MaxNbOfIterations, + in double MaxAspectRatio, + in Smooth_Method Method); + + void ConvertToQuadratic(in boolean theForce3d); + + boolean ConvertFromQuadratic(); + void RenumberNodes(); void RenumberElements(); @@ -530,18 +787,39 @@ module SMESH in double AngleInRadians, in long NbOfSteps, in double Tolerance); - + void ExtrusionSweep(in long_array IDsOfElements, in DirStruct StepVector, in long NbOfSteps); + /*! + * Generate new elements by extrusion of theElements + * by StepVector by NbOfSteps + * param ExtrFlags set flags for performing extrusion + * param SewTolerance - uses for comparing locations of nodes if flag + * EXTRUSION_FLAG_SEW is set + */ + void AdvancedExtrusion(in long_array IDsOfElements, + in DirStruct StepVector, + in long NbOfSteps, + in long ExtrFlags, + in double SewTolerance); + void ExtrusionSweepObject(in SMESH_IDSource theObject, in DirStruct StepVector, in long NbOfSteps); + void ExtrusionSweepObject1D(in SMESH_IDSource theObject, + in DirStruct StepVector, + in long NbOfSteps); + + void ExtrusionSweepObject2D(in SMESH_IDSource theObject, + in DirStruct StepVector, + in long NbOfSteps); + enum Extrusion_Error { EXTR_OK, - EXTR_NO_ELEMENTS, + EXTR_NO_ELEMENTS, EXTR_PATH_NOT_EDGE, EXTR_BAD_PATH_SHAPE, EXTR_BAD_STARTING_NODE, @@ -586,7 +864,7 @@ module SMESH void TranslateObject (in SMESH_IDSource theObject, in DirStruct Vector, in boolean Copy); - + void Rotate (in long_array IDsOfElements, in AxisStruct Axis, in double AngleInRadians, @@ -596,7 +874,7 @@ module SMESH in AxisStruct Axis, in double AngleInRadians, in boolean Copy); - + void FindCoincidentNodes (in double Tolerance, out array_of_long_array GroupsOfNodes); @@ -623,7 +901,9 @@ module SMESH in long LastNodeID1, in long FirstNodeID2, in long SecondNodeID2, - in long LastNodeID2); + in long LastNodeID2, + in boolean CreatePolygons, + in boolean CreatePolyedrs); Sew_Error SewConformFreeBorders (in long FirstNodeID1, in long SecondNodeID1, @@ -635,7 +915,9 @@ module SMESH in long SecondNodeIDOnFreeBorder, in long LastNodeIDOnFreeBorder, in long FirstNodeIDOnSide, - in long LastNodeIDOnSide); + in long LastNodeIDOnSide, + in boolean CreatePolygons, + in boolean CreatePolyedrs); Sew_Error SewSideElements (in long_array IDsOfSide1Elements, in long_array IDsOfSide2Elements, @@ -644,6 +926,27 @@ module SMESH in long NodeID2OfSide1ToMerge, in long NodeID2OfSide2ToMerge); + /*! + * 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); + + /*! + * 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(); + }; };