X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=28896496b3aa088f295a9f4d54e2bc64d463700e;hp=69c41d4d64a49f314ea73ef9f558ab4ef02afbb1;hb=d5aa4efde29d902f7be1259d7603d36e95f61215;hpb=7a3ecab720cc517ace17c5c4677fd3c20c0051ee diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index 69c41d4d6..28896496b 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 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 @@ -29,6 +29,7 @@ #include "SALOME_Exception.idl" #include "SALOME_GenericObj.idl" #include "GEOM_Gen.idl" +#include "SMESH_smIdType.idl" module SMESH { @@ -41,6 +42,7 @@ module SMESH typedef sequence double_array ; typedef sequence long_array ; + typedef sequence smIdType_array ; typedef sequence string_array ; typedef sequence array_of_long_array ; @@ -206,14 +208,14 @@ module SMESH { HYP_OK, HYP_MISSING, // algo misses a hypothesis - HYP_CONCURENT, // several applicable hypotheses + HYP_CONCURRENT, // several applicable hypotheses HYP_BAD_PARAMETER,// hypothesis has a bad parameter value HYP_HIDDEN_ALGO, // an algo is hidden by an upper dim algo generating all-dim elements HYP_HIDING_ALGO, // an algo hides lower dim algos by generating all-dim elements HYP_UNKNOWN_FATAL,// --- all statuses below should be considered as fatal // for Add/RemoveHypothesis operations HYP_INCOMPATIBLE, // hypothesis does not fit algo - HYP_NOTCONFORM, // not conform mesh is produced appling a hypothesis + HYP_NOTCONFORM, // not conform mesh is produced applying a hypothesis HYP_ALREADY_EXIST,// such hypothesis already exist HYP_BAD_DIM, // bad dimension HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its sub-shape, nor a group @@ -228,12 +230,12 @@ module SMESH enum DriverMED_ReadStatus // in the order of severity { DRS_OK, - DRS_EMPTY, // a file contains no mesh with the given name - DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers, - // so the numbers from the file are ignored - DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data + DRS_EMPTY, // a file contains no mesh with the given name + DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers, + // so the numbers from the file are ignored + DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data DRS_WARN_DESCENDING, // some elements were skipped due to descending connectivity - DRS_FAIL // general failure (exception etc.) + DRS_FAIL // general failure (exception etc.) }; /*! @@ -267,7 +269,7 @@ module SMESH */ struct ElementSubType { ElementType SMDS_ElementType; boolean isPoly; - long nbNodesInElement; }; + short nbNodesInElement; }; typedef sequence types_array; @@ -285,19 +287,19 @@ module SMESH /*! * Returns a sequence of all element IDs */ - long_array GetIDs(); + smIdType_array GetIDs(); /*! * Returns number of mesh elements of each \a EntityType * @return array of number of elements per \a EntityType */ - long_array GetMeshInfo(); + smIdType_array GetMeshInfo(); /*! * Returns number of mesh elements of each \a ElementType * @return array of number of elements per \a ElementType */ - long_array GetNbElementsByType(); + smIdType_array GetNbElementsByType(); /*! * Returns types of elements it contains. @@ -347,6 +349,12 @@ module SMESH GEOM::GEOM_Object GetShapeToMesh() raises (SALOME::SALOME_Exception); + /*! + * Replaces a shape in the mesh + */ + void ReplaceShape(in GEOM::GEOM_Object theNewGeom) + raises (SALOME::SALOME_Exception); + /*! * Return false if the mesh is not yet fully loaded from the study file */ @@ -516,6 +524,20 @@ module SMESH in boolean underlyingOnly ) raises (SALOME::SALOME_Exception); + /*! + * Distribute all faces of the mesh among groups using sharp edges and optionally + * existing 1D elements as group boundaries. + * \param [in] sharpAngle - edge is considered sharp if an angle between normals of + * adjacent faces is more than \a sharpAngle in degrees. + * \param [in] createEdges - to create 1D elements for detected sharp edges. + * \param [in] useExistingEdges - to use existing edges as group boundaries + * \return ListOfGroups - the created groups + */ + ListOfGroups FaceGroupsSeparatedByEdges( in double sharpAngle, + in boolean createEdges, + in boolean useExistingEdges ) + raises (SALOME::SALOME_Exception); + /*! * Convert group on geometry or on filter into standalone group */ @@ -622,6 +644,13 @@ module SMESH * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; * the typical use is auto_groups=false. * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists + * - version : define the version of MED file format, coded with major and minor digits (release digit not used) + * for instance med 3.2.1 is coded 3*10+2 = 32, med 4.0.0 is coded 4*10+0 = 40. + * The rules of compatibility to write a mesh in an older version than the current version + * depend on the current version. For instance, with med 4.0 it is possible to write/append + * med files in 4.0.0 (default format) or 3.2.1 or 3.3.1 formats. + * The minor must be between 0 and the current minor version of MED file library. + * If version is equal to -1, the version is not changed (default). * - autoDimension : if @c true, a space dimension of a MED mesh can be either * - 1D if all mesh nodes lie on OX coordinate axis, or * - 2D if all mesh nodes lie on XOY coordinate plane, or @@ -630,15 +659,26 @@ module SMESH */ void ExportMED( in string fileName, in boolean auto_groups, + in long version, in boolean overwrite, in boolean autoDimension) raises (SALOME::SALOME_Exception); + long long ExportMEDCoupling(in boolean auto_groups, + in boolean autoDimension) raises (SALOME::SALOME_Exception); + /*! * Export a [part of] Mesh into a MED file * @params * - meshPart : a part of mesh to store * - fileName : name of the MED file * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists + * - version : define the version of MED file format, coded with major and minor digits (release digit not used) + * for instance med 3.2.1 is coded 3*10+2 = 32, med 4.0.0 is coded 4*10+0 = 40. + * The rules of compatibility to write a mesh in an older version than the current version + * depend on the current version. For instance, with med 4.0 it is possible to write/append + * med files in 4.0.0 (default format) or 3.2.1 or 3.3.1 formats. + * The minor must be between 0 and the current minor version of MED file library. + * If version is equal to -1, the version is not changed (default). * - autoDimension : if @c True, a space dimension for export is defined by mesh * configuration; for example a planar mesh lying on XOY plane * will be exported as a mesh in 2D space. @@ -650,14 +690,26 @@ module SMESH * - 'e' stands for _edges_ field; * - 'f' stands for _faces_ field; * - 's' stands for _solids_ field. + * - ZTolerance : tolerance in Z direction. If Z coordinate of a node is close to zero + * within a given tolerance, the coordinate is set to zero. + * If @a ZTolerance is negative, the node coordinates are kept as is. */ void ExportPartToMED( in SMESH_IDSource meshPart, in string fileName, in boolean auto_groups, + in long version, in boolean overwrite, in boolean autoDimension, in GEOM::ListOfFields fields, - in string geomAssocFields ) raises (SALOME::SALOME_Exception); + in string geomAssocFields, + in double ZTolerance) raises (SALOME::SALOME_Exception); + + long long ExportPartToMEDCoupling( in SMESH_IDSource meshPart, + in boolean auto_groups, + in boolean autoDimension, + in GEOM::ListOfFields fields, + in string geomAssocFields, + in double ZTolerance) raises (SALOME::SALOME_Exception); /*! * Export Mesh to SAUV formatted file @@ -665,7 +717,18 @@ module SMESH */ void ExportSAUV( in string file, in boolean auto_groups ) raises (SALOME::SALOME_Exception); - + + /*! + * Return string representation of a MED file version comprising nbDigits + */ + string GetVersionString(in long minor, in short nbDigits); + + /*! + * Return the list of med versions compatibles for write/append, + * encoded in 10*major+minor (for instance, code for med 3.2.1 is 32) + */ + long_array GetMEDVersionsCompatibleForAppend(); + /*! * Export Mesh to different Formats * (UNV supported version is I-DEAS 10) @@ -696,121 +759,121 @@ module SMESH /*! * Get information about mesh contents */ - long NbNodes() + smIdType NbNodes() raises (SALOME::SALOME_Exception); - long NbElements() + smIdType NbElements() raises (SALOME::SALOME_Exception); - long Nb0DElements() + smIdType Nb0DElements() raises (SALOME::SALOME_Exception); - long NbBalls() + smIdType NbBalls() raises (SALOME::SALOME_Exception); - long NbEdges() + smIdType NbEdges() raises (SALOME::SALOME_Exception); - long NbEdgesOfOrder(in ElementOrder order) + smIdType NbEdgesOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbFaces() + smIdType NbFaces() raises (SALOME::SALOME_Exception); - long NbFacesOfOrder(in ElementOrder order) + smIdType NbFacesOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbTriangles() + smIdType NbTriangles() raises (SALOME::SALOME_Exception); - long NbTrianglesOfOrder(in ElementOrder order) + smIdType NbTrianglesOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbBiQuadTriangles() + smIdType NbBiQuadTriangles() raises (SALOME::SALOME_Exception); - long NbQuadrangles() + smIdType NbQuadrangles() raises (SALOME::SALOME_Exception); - long NbQuadranglesOfOrder(in ElementOrder order) + smIdType NbQuadranglesOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbBiQuadQuadrangles() + smIdType NbBiQuadQuadrangles() raises (SALOME::SALOME_Exception); - long NbPolygons() + smIdType NbPolygons() raises (SALOME::SALOME_Exception); - long NbPolygonsOfOrder(in ElementOrder order) + smIdType NbPolygonsOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbVolumes() + smIdType NbVolumes() raises (SALOME::SALOME_Exception); - long NbVolumesOfOrder(in ElementOrder order) + smIdType NbVolumesOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbTetras() + smIdType NbTetras() raises (SALOME::SALOME_Exception); - long NbTetrasOfOrder(in ElementOrder order) + smIdType NbTetrasOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbHexas() + smIdType NbHexas() raises (SALOME::SALOME_Exception); - long NbHexasOfOrder(in ElementOrder order) + smIdType NbHexasOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbTriQuadraticHexas() + smIdType NbTriQuadraticHexas() raises (SALOME::SALOME_Exception); - long NbPyramids() + smIdType NbPyramids() raises (SALOME::SALOME_Exception); - long NbPyramidsOfOrder(in ElementOrder order) + smIdType NbPyramidsOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbPrisms() + smIdType NbPrisms() raises (SALOME::SALOME_Exception); - long NbPrismsOfOrder(in ElementOrder order) + smIdType NbPrismsOfOrder(in ElementOrder order) raises (SALOME::SALOME_Exception); - long NbHexagonalPrisms() + smIdType NbHexagonalPrisms() raises (SALOME::SALOME_Exception); - long NbPolyhedrons() + smIdType NbPolyhedrons() raises (SALOME::SALOME_Exception); - long NbSubMesh() + smIdType NbSubMesh() raises (SALOME::SALOME_Exception); - long_array GetElementsId() + smIdType_array GetElementsId() raises (SALOME::SALOME_Exception); - long_array GetElementsByType( in ElementType theType ) + smIdType_array GetElementsByType( in ElementType theType ) raises (SALOME::SALOME_Exception); - long_array GetNodesId() + smIdType_array GetNodesId() raises (SALOME::SALOME_Exception); /*! * Returns type of mesh element */ - ElementType GetElementType( in long id, in boolean iselem ) + ElementType GetElementType( in smIdType id, in boolean iselem ) raises (SALOME::SALOME_Exception); - EntityType GetElementGeomType( in long id ) + EntityType GetElementGeomType( in smIdType id ) raises (SALOME::SALOME_Exception); - GeometryType GetElementShape( in long id ) + GeometryType GetElementShape( in smIdType id ) raises (SALOME::SALOME_Exception); - long_array GetSubMeshElementsId(in long ShapeID) + smIdType_array GetSubMeshElementsId(in long ShapeID) raises (SALOME::SALOME_Exception); - long_array GetSubMeshNodesId(in long ShapeID, in boolean all ) + smIdType_array GetSubMeshNodesId(in long ShapeID, in boolean all ) raises (SALOME::SALOME_Exception); ElementType GetSubMeshElementType(in long ShapeID) @@ -851,81 +914,81 @@ module SMESH * 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); + double_array GetNodeXYZ(in smIdType 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); + smIdType_array GetNodeInverseElements(in smIdType id, in ElementType elemType); /*! * \brief Return position of a node on shape */ - NodePosition GetNodePosition(in long NodeID); + NodePosition GetNodePosition(in smIdType NodeID); /*! * \brief Return position of an element on shape */ - ElementPosition GetElementPosition(in long ElemID); + ElementPosition GetElementPosition(in smIdType ElemID); /*! * If given element is node returns IDs of shape from position * If there is not node for given ID - returns -1 */ - long GetShapeID(in long id); + long GetShapeID(in smIdType id); /*! * For given element returns ID of result shape after * ::FindShape() from SMESH_MeshEditor * If there is not element for given ID - returns -1 */ - long GetShapeIDForElem(in long id); + long GetShapeIDForElem(in smIdType id); /*! * Returns number of nodes for given element * If there is not element for given ID - returns -1 */ - long GetElemNbNodes(in long id); + short GetElemNbNodes(in smIdType id); /*! * Returns IDs of nodes of given element */ - long_array GetElemNodes(in long id); + smIdType_array GetElemNodes(in smIdType 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); + smIdType GetElemNode(in smIdType id, in short index); /*! * Returns true if given node is medium node * in given quadratic element */ - boolean IsMediumNode(in long ide, in long idn); + boolean IsMediumNode(in smIdType ide, in smIdType idn); /*! * Returns true if given node is medium node * in one of quadratic elements */ - boolean IsMediumNodeOfAnyElem(in long idn, in ElementType elem_type); + boolean IsMediumNodeOfAnyElem(in smIdType idn, in ElementType elem_type); /*! * Returns number of edges for given element */ - long ElemNbEdges(in long id); + long ElemNbEdges(in smIdType id); /*! * Returns number of faces for given element */ - long ElemNbFaces(in long id); + long ElemNbFaces(in smIdType id); /*! * Returns nodes of given face (counted from zero) for given volumic element. */ - long_array GetElemFaceNodes(in long elemId, in short faceIndex); + smIdType_array GetElemFaceNodes(in smIdType elemId, in short faceIndex); /*! * Returns three components of normal of given mesh face (or an empty array in KO case) @@ -935,34 +998,34 @@ module SMESH /*! * Returns an element based on all given nodes. */ - long FindElementByNodes(in long_array nodes); + smIdType FindElementByNodes(in smIdType_array nodes); /*! * Return elements including all given nodes. */ - long_array GetElementsByNodes(in long_array nodes, in ElementType elem_type); + smIdType_array GetElementsByNodes(in smIdType_array nodes, in ElementType elem_type); /*! * Returns true if given element is polygon */ - boolean IsPoly(in long id); + boolean IsPoly(in smIdType id); /*! * Returns true if given element is quadratic */ - boolean IsQuadratic(in long id); + boolean IsQuadratic(in smIdType id); /*! * Returns diameter of a ball discrete element or zero in case of an invalid \a id */ - double GetBallDiameter(in long id); + double GetBallDiameter(in smIdType 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); + double_array BaryCenter(in smIdType id); /*! Gets information about imported MED file */ MedFileInfo GetMEDFileInfo(); @@ -989,37 +1052,37 @@ module SMESH /*! * */ - long GetNumberOfElements() + smIdType GetNumberOfElements() raises (SALOME::SALOME_Exception); /*! * */ - long GetNumberOfNodes( in boolean all ) + smIdType GetNumberOfNodes( in boolean all ) raises (SALOME::SALOME_Exception); /*! * */ - long_array GetElementsId() + smIdType_array GetElementsId() raises (SALOME::SALOME_Exception); /*! * */ - long_array GetElementsByType( in ElementType theType ) + smIdType_array GetElementsByType( in ElementType theType ) raises (SALOME::SALOME_Exception); /*! * Returns type of mesh element (same as SMESH_Mesh::GetElementType() ) */ - ElementType GetElementType( in long id, in boolean iselem ) + ElementType GetElementType( in smIdType id, in boolean iselem ) raises (SALOME::SALOME_Exception); /*! * */ - long_array GetNodesId() + smIdType_array GetNodesId() raises (SALOME::SALOME_Exception); /*!