X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=idl%2FSMESH_Mesh.idl;h=9fdde321ff58874b5ff198ccf35681e4679bf41e;hp=9585df7854eb186370bcb620068e3f857801f015;hb=907c315580012ca7e75c640c88f79e3ff2239276;hpb=73396da9cd367733478d916d01a6443ce682a9eb diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index 9585df785..9fdde321f 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 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 @@ -6,7 +6,7 @@ // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -29,7 +29,6 @@ #include "SALOME_Exception.idl" #include "SALOME_GenericObj.idl" #include "GEOM_Gen.idl" -#include "MED.idl" module SMESH { @@ -67,6 +66,7 @@ module SMESH ADD_QUADEDGE, ADD_QUADTRIANGLE, ADD_QUADQUADRANGLE, + ADD_QUADPOLYGON, ADD_QUADTETRAHEDRON, ADD_QUADPYRAMID, ADD_QUADPENTAHEDRON, @@ -86,22 +86,22 @@ module SMESH double_array coords; long_array indexes; }; + typedef sequence log_array; struct PointStruct { double x; - double y; - double z; } ; + double y; + double z; }; typedef sequence nodes_array; - struct DirStruct { PointStruct PS ; } ; // analog to Occ Direction + struct DirStruct { PointStruct PS; }; // analog to OCCT gp_Vec struct AxisStruct { double x; - double y; - double z; - double vx; - double vy; - double vz; } ; - + double y; + double z; + double vx; + double vy; + double vz; }; /*! * Node location on a shape */ @@ -130,12 +130,13 @@ module SMESH FACE, VOLUME, ELEM0D, - BALL + BALL, + NB_ELEMENT_TYPES }; - typedef sequence array_of_ElementType ; + typedef sequence array_of_ElementType; /*! - * Enumeration for element geometry type, like in SMDS + * Enumeration for element geometry type, like SMDSAbs_GeometryType in SMDSAbs_ElementType.hxx */ enum GeometryType { @@ -150,7 +151,8 @@ module SMESH Geom_PENTA, Geom_HEXAGONAL_PRISM, Geom_POLYHEDRA, - Geom_BALL + Geom_BALL, + Geom_LAST }; /*! @@ -162,7 +164,6 @@ module SMESH ORDER_QUADRATIC /*! entities of 2nd order */ }; - /*! * Enumeration of entity type used in mesh info array, * it should be synchronised with enum SMDSAbs_EntityType @@ -190,6 +191,7 @@ module SMESH Entity_TriQuad_Hexa, Entity_Penta, Entity_Quad_Penta, + Entity_BiQuad_Penta, Entity_Hexagonal_Prism, Entity_Polyhedra, Entity_Quad_Polyhedra, @@ -197,7 +199,6 @@ module SMESH Entity_Last }; - /*! * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods) */ @@ -205,28 +206,29 @@ 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 HYP_BAD_GEOMETRY, // geometry mismatches algorithm's expectation - HYP_NEED_SHAPE // algorithm can work on shape only + HYP_NEED_SHAPE, // algorithm can work on shape only + HYP_INCOMPAT_HYPS // several additional hypotheses are incompatible one with other }; /*! - * Enumeration for DriverMED read status (used by ImportMEDFile() method) + * Enumeration for mesh read status (used by SMESH_Gen::CreateMeshesFrom*() methods) */ enum DriverMED_ReadStatus // in the order of severity { DRS_OK, - DRS_EMPTY, // a MED file contains no mesh with the given name + 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 @@ -234,20 +236,26 @@ module SMESH DRS_FAIL // general failure (exception etc.) }; - /*! - * Enumeration for DriverMED (used by Perform() method) + /*! + * \brief A structure containing information about MED file */ - enum MED_VERSION + struct MedFileInfo { - MED_V2_1, - MED_V2_2 + string fileName; //!< name of file + long fileSize; //!< size of file + long major, minor, release; //!< MED file version }; - typedef sequence log_array; - + /*! + * Enumeration for CreateDimGroup() + */ + enum NB_COMMON_NODES_ENUM + { + ALL_NODES, MAIN, AT_LEAST_ONE, MAJORITY + }; /*! - * Auxilary flags for advanced extrusion. + * Auxiliary 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 */ @@ -272,7 +280,7 @@ module SMESH interface SMESH_Mesh; - interface SMESH_IDSource + interface SMESH_IDSource : SALOME::GenericObj { /*! * Returns a sequence of all element IDs @@ -280,11 +288,17 @@ module SMESH long_array GetIDs(); /*! - * Returns statistic of mesh elements - * @return array of number enityties by index of EntityType + * Returns number of mesh elements of each \a EntityType + * @return array of number of elements per \a EntityType */ long_array GetMeshInfo(); + /*! + * Returns number of mesh elements of each \a ElementType + * @return array of number of elements per \a ElementType + */ + long_array GetNbElementsByType(); + /*! * Returns types of elements it contains. * It's empty if the SMESH_IDSource contains no IDs @@ -301,6 +315,11 @@ module SMESH * happen if mesh data is not yet fully loaded from the file of study. */ boolean IsMeshInfoCorrect(); + + /*! + * Returns mesh unstructed grid information. + */ + SALOMEDS::TMPFile GetVtkUgStream(); }; interface SMESH_Group; @@ -313,7 +332,7 @@ module SMESH typedef sequence submesh_array; typedef sequence submesh_array_array; - interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource + interface SMESH_Mesh : SMESH_IDSource { /*! * Return true if there is a geometry to be meshed @@ -322,12 +341,18 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Get geom shape to mesh. A result sould not be nil. Use HasShapeToMesh() + * Get geom shape to mesh. A result should not be nil. Use HasShapeToMesh() * to know if a returned shape */ 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 */ @@ -362,7 +387,7 @@ module SMESH * Get the subMesh object associated to a Sub-shape. The subMesh object * gives access to nodes and elements IDs. * SubMesh will be used instead of Sub-shape in a next idl version to - * adress a specific subMesh... + * address a specific subMesh... */ SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name) raises (SALOME::SALOME_Exception); @@ -378,7 +403,7 @@ module SMESH * Create a group */ SMESH_Group CreateGroup( in ElementType elem_type, - in string name ) + in string name ) raises (SALOME::SALOME_Exception); /*! @@ -480,14 +505,35 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Create groups of entities from existing groups of superior dimensions - * New group is created. System - * 1) extracts all nodes from each group, - * 2) combines all elements of specified dimension laying on these nodes. + * Create a group of entities basing on nodes of other groups. + * \param [in] aListOfGroups - list of either groups, sub-meshes or filters. + * \param [in] anElemType - a type of elements to include to the new group. + * \param [in] name - a name of the new group. + * \param [in] nbCommonNodes - criterion of inclusion of an element to the new group. + * \param [in] underlyingOnly - if \c True, an element is included to the + * new group provided that it is based on nodes of an element of + * \a aListOfGroups + * \return SMESH_Group - the created group + */ + SMESH_Group CreateDimGroup( in ListOfIDSources aListOfGroups, + in ElementType anElemType, + in string name, + in NB_COMMON_NODES_ENUM nbCommonNodes, + 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 */ - SMESH_Group CreateDimGroup( in ListOfGroups aListOfGroups, - in ElementType anElemType, - in string name ) + ListOfGroups FaceGroupsSeparatedByEdges( in double sharpAngle, + in boolean createEdges, + in boolean useExistingEdges ) raises (SALOME::SALOME_Exception); /*! @@ -497,31 +543,29 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Add hypothesis to the mesh, under a particular Sub-shape + * Add hypothesis to the mesh, under a particular sub-shape * (or the main shape itself) - * The Add method is only used to prepare the build of the mesh and store + * This method is only used to prepare the build of the mesh and store * the algorithms and associated parameters. - * Actual job of mesh the shape is done by MESH_Gen. + * Actual job of meshing the shape is done by SMESH_Gen::Compute() * @params - * - aSubShape : sub-shape obtained by a shape explode in GEOM + * - aSubObject : sub-shape obtained by a shape explode in GEOM * (or main shape) - * - anHyp : hypothesis object + * - anHyp : an hypothesis object * @return - * - OK if the hypothesis is compatible with the sub-shape - * (and all previous hypothesis on the sub-shape) - * - NOK if the hypothesis is not compatible with the sub-shape - * (or one previous hypothesis on the sub-shape) - * raises exception if hypothesis has not been created + * - An enum item explaining what's up + * - anErrorText: an optional textual description of a problem (if any) */ Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject, - in SMESH_Hypothesis anHyp) + in SMESH_Hypothesis anHyp, + out string anErrorText) raises (SALOME::SALOME_Exception); /*! - * Remove an hypothesis previouly added with AddHypothesis. + * Remove an hypothesis previously added with AddHypothesis. */ Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Object aSubObject, - in SMESH_Hypothesis anHyp) + in SMESH_Hypothesis anHyp) raises (SALOME::SALOME_Exception); /*! @@ -565,11 +609,6 @@ module SMESH */ long GetId(); - /*! - * Get the study Id - */ - long GetStudyId(); - /*! * Obtain instance of SMESH_MeshEditor */ @@ -596,62 +635,69 @@ module SMESH boolean HasDuplicatedGroupNamesMED(); /*! - * Export Mesh to a MED Format file + * Export a Mesh to MED file. * @params - * - file : name of the MED file + * - fileName : name of the MED file * - 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. - * - version : define the version of format of MED file, that will be created * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists - * - autoDimension: if @c True (default), a space dimension of a MED mesh can be either + * - 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 * - 3D in the rest cases. - * - * If @a autoDimension is @c False, the space dimension is always 3. + * If @a autoDimension is @c false, the space dimension is always 3. */ - void ExportToMEDX( in string file, - in boolean auto_groups, - in MED_VERSION version, - in boolean overwrite, - in boolean autoDimension ) raises (SALOME::SALOME_Exception); + void ExportMED( in string fileName, + in boolean auto_groups, + in long version, + in boolean overwrite, + in boolean autoDimension) raises (SALOME::SALOME_Exception); /*! - * Export a part of Mesh into a MED file + * Export a [part of] Mesh into a MED file * @params * - meshPart : a part of mesh to store - * - file : name of the MED file - * - version : define the version of format of MED file, that will be created + * - fileName : name of the MED file * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists - * - autoDimension: if @c True, a space dimension for export is defined by mesh + * - 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. * If @a autoDimension == @c False, the space dimension is 3. - */ - void ExportPartToMED( in SMESH_IDSource meshPart, - in string file, - in boolean auto_groups, - in MED_VERSION version, - in boolean overwrite, - in boolean autoDimension ) raises (SALOME::SALOME_Exception); - - /*! - * Export Mesh to a MED Format file - * Works, just the same as ExportToMEDX, with overwrite parameter equal to true. - * The method is kept in order to support old functionality - */ - 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 ExportToMEDX with MED_VERSION parameter equal to MED_V2_1 - * and overwrite parameter equal to true - * The method is kept in order to support old functionality - */ - void ExportMED( in string file, in boolean auto_groups ) - raises (SALOME::SALOME_Exception); + * - fields : list of GEOM fields defined on the shape to mesh. + * - geomAssocFields : each character of this string means a need to export a + * corresponding field; correspondence between fields and characters is following: + * - 'v' stands for _vertices_ field; + * - '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, + in double ZTolerance) raises (SALOME::SALOME_Exception); /*! * Export Mesh to SAUV formatted file @@ -659,12 +705,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 MED_VERSION version, in short 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) @@ -675,7 +727,8 @@ module SMESH in boolean isascii ) raises (SALOME::SALOME_Exception); void ExportCGNS( in SMESH_IDSource meshPart, in string file, - in boolean overwrite ) raises (SALOME::SALOME_Exception); + in boolean overwrite, + in boolean groupElemsByType) raises (SALOME::SALOME_Exception); void ExportGMF( in SMESH_IDSource meshPart, in string file, in boolean withRequiredGroups) raises (SALOME::SALOME_Exception); @@ -686,15 +739,13 @@ module SMESH void ExportPartToSTL( in SMESH_IDSource meshPart, in string file, in boolean isascii ) raises (SALOME::SALOME_Exception); - /*! - * Get MED Mesh + * Return computation progress [0.,1] */ - SALOME_MED::MESH GetMEDMesh() - raises (SALOME::SALOME_Exception); + double GetComputeProgress(); /*! - * Get informations about mesh contents + * Get information about mesh contents */ long NbNodes() raises (SALOME::SALOME_Exception); @@ -741,6 +792,9 @@ module SMESH long NbPolygons() raises (SALOME::SALOME_Exception); + long NbPolygonsOfOrder(in ElementOrder order) + raises (SALOME::SALOME_Exception); + long NbVolumes() raises (SALOME::SALOME_Exception); @@ -801,6 +855,9 @@ module SMESH EntityType GetElementGeomType( in long id ) raises (SALOME::SALOME_Exception); + GeometryType GetElementShape( in long id ) + raises (SALOME::SALOME_Exception); + long_array GetSubMeshElementsId(in long ShapeID) raises (SALOME::SALOME_Exception); @@ -815,6 +872,11 @@ module SMESH * Methods to set meshing order of submeshes */ + /*! + * \brief Return \c true if a meshing order not yet set for a concurrent sub-mesh + */ + boolean IsUnorderedSubMesh(in long submeshID); + /*! * \brief Return submesh objects list in meshing order */ @@ -846,7 +908,7 @@ module SMESH * 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); + long_array GetNodeInverseElements(in long id, in ElementType elemType); /*! * \brief Return position of a node on shape @@ -916,11 +978,21 @@ module SMESH */ long_array GetElemFaceNodes(in long elemId, in short faceIndex); + /*! + * Returns three components of normal of given mesh face (or an empty array in KO case) + */ + double_array GetFaceNormal(in long faceId, in boolean normalized); + /*! * Returns an element based on all given nodes. */ long FindElementByNodes(in long_array nodes); + /*! + * Return elements including all given nodes. + */ + long_array GetElementsByNodes(in long_array nodes, in ElementType elem_type); + /*! * Returns true if given element is polygon */ @@ -944,7 +1016,7 @@ module SMESH double_array BaryCenter(in long id); /*! Gets information about imported MED file */ - SALOME_MED::MedFileInfo GetMEDFileInfo(); + MedFileInfo GetMEDFileInfo(); /*! * Sets list of notebook variables used for Mesh operations separated by ":" symbol @@ -963,7 +1035,7 @@ module SMESH string_array GetLastParameters(); }; - interface SMESH_subMesh : SALOME::GenericObj, SMESH_IDSource + interface SMESH_subMesh : SMESH_IDSource { /*! * @@ -990,7 +1062,7 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Return type of submesh element + * Returns type of mesh element (same as SMESH_Mesh::GetElementType() ) */ ElementType GetElementType( in long id, in boolean iselem ) raises (SALOME::SALOME_Exception); @@ -1017,12 +1089,6 @@ module SMESH * Get the internal Id */ long GetId(); - - /*! - * Get MED subMesh - */ - SALOME_MED::FAMILY GetFamily() - raises (SALOME::SALOME_Exception); }; };