-// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2011 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_Mesh.idl
// Author : Paul RASCLE, EDF
//
-
#ifndef _SMESH_MESH_IDL_
#define _SMESH_MESH_IDL_
typedef sequence<SMESH_Hypothesis> ListOfHypothesis;
interface SMESH_GroupBase;
typedef sequence<SMESH_GroupBase> ListOfGroups;
+ interface SMESH_IDSource;
+ typedef sequence<SMESH_IDSource> ListOfIDSources;
typedef sequence<double > double_array ;
typedef sequence<long > long_array ;
ADD_QUADPYRAMID,
ADD_QUADPENTAHEDRON,
ADD_QUADHEXAHEDRON,
- ADD_ELEM0D
+ ADD_ELEM0D,
+ ADD_BIQUAD_QUADRANGLE,
+ ADD_TRIQUAD_HEXA,
+ ADD_HEXAGONAL_PRISM
};
struct log_block
VOLUME,
ELEM0D
};
+ typedef sequence<ElementType> array_of_ElementType ;
/*!
* Enumeration for element geometry type, like in SMDS
Geom_PYRAMID,
Geom_HEXA,
Geom_PENTA,
+ Geom_HEXAGONAL_PRISM,
Geom_POLYHEDRA
};
/*!
- * Enumeration of entity type uses in mesh info array,
- * and should be synchronised with enum in SMDS
+ * Enumeration of entity type used in mesh info array,
+ * it should be synchronised with enum SMDSAbs_EntityType
*/
enum EntityType
{
Entity_Quad_Triangle,
Entity_Quadrangle,
Entity_Quad_Quadrangle,
+ Entity_BiQuad_Quadrangle,
Entity_Polygon,
Entity_Quad_Polygon,
Entity_Tetra,
Entity_Quad_Pyramid,
Entity_Hexa,
Entity_Quad_Hexa,
+ Entity_TriQuad_Hexa,
Entity_Penta,
Entity_Quad_Penta,
+ Entity_Hexagonal_Prism,
Entity_Polyhedra,
Entity_Quad_Polyhedra,
Entity_Last
HYP_NOTCONFORM, // not conform mesh is produced appling 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 subshape, nor a group
+ 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
};
long_array elementConnectivities;
types_array elementTypes; };
+ interface SMESH_Mesh;
+
interface SMESH_IDSource
{
/*!
/*!
* Returns statistic of mesh elements
- * Result array of number enityties
+ * @return array of number enityties by index of EntityType
*/
long_array GetMeshInfo();
+
+ /*!
+ * Returns types of elements it contains.
+ * It's empty if the SMESH_IDSource contains no IDs
+ */
+ array_of_ElementType GetTypes();
+
+ /*!
+ * Returns the mesh
+ */
+ SMESH_Mesh GetMesh();
};
interface SMESH_Group;
interface SMESH_GroupOnGeom;
+ interface Filter;
+ interface SMESH_GroupOnFilter;
interface SMESH_subMesh;
interface SMESH_MeshEditor;
void Clear()
raises (SALOME::SALOME_Exception);
+ /*!
+ * Get the list of sub-meshes existing in the mesh
+ */
+ submesh_array GetSubMeshes()
+ raises (SALOME::SALOME_Exception);
+
/*!
* Remove all nodes and elements of submesh
*/
raises (SALOME::SALOME_Exception);
/*!
- * Get the subMesh object associated to a subShape. The subMesh object
+ * 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 SubShape in a next idl version to
+ * SubMesh will be used instead of Sub-shape in a next idl version to
* adress a specific subMesh...
*/
SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name)
* Create a group
*/
SMESH_Group CreateGroup( in ElementType elem_type,
- in string name )
+ in string name )
raises (SALOME::SALOME_Exception);
/*!
- * Create a group from geometry group
+ * Create a group from geometry
*/
- SMESH_GroupOnGeom CreateGroupFromGEOM( in ElementType elem_type,
- in string name,
- in GEOM::GEOM_Object theGeomObject )
+ SMESH_GroupOnGeom CreateGroupFromGEOM( in ElementType elemType,
+ in string name,
+ in GEOM::GEOM_Object geomObject )
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Create a group from filter
+ */
+ SMESH_GroupOnFilter CreateGroupFromFilter( in ElementType elemType,
+ in string name,
+ in SMESH::Filter filter )
raises (SALOME::SALOME_Exception);
/*!
raises (SALOME::SALOME_Exception);
/*!
- * Convert group on geometry into standalone group
+ * Convert group on geometry or on filter into standalone group
*/
- SMESH_Group ConvertToStandalone( in SMESH_GroupOnGeom theGeomGroup )
+ SMESH_Group ConvertToStandalone( in SMESH_GroupBase theGroupOn )
raises (SALOME::SALOME_Exception);
/*!
- * Add hypothesis to the mesh, under a particular subShape
+ * 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
* the algorithms and associated parameters.
* Actual job of mesh the shape is done by MESH_Gen.
* @params
- * - aSubShape : subShape obtained by a shape explode in GEOM
+ * - aSubShape : sub-shape obtained by a shape explode in GEOM
* (or main shape)
* - anHyp : hypothesis object
* @return
- * - 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)
+ * - 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
*/
Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject,
// raises (SALOME::SALOME_Exception);
/*!
- * Get the list of hypothesis added on a subShape
+ * Get the list of hypothesis added on a sub-shape
*/
ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Object aSubObject)
raises (SALOME::SALOME_Exception);
SMESH_MeshEditor GetMeshEditPreviewer()
raises (SALOME::SALOME_Exception);
+ /*!
+ * Return true if the mesh has been edited since a total re-compute
+ * and those modifications may prevent successful partial re-compute
+ */
+ boolean HasModificationsToDiscard()
+ raises (SALOME::SALOME_Exception);
+
/*! Check group names for duplications.
* Consider maximum group name length stored in MED file.
*/
/*!
* Export Mesh to different MED Formats
* @params
+ * - file : 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.
- * - theVersion : define the version of format of MED file, that will be created
+ * - 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
+ */
+ void ExportToMEDX( in string file,
+ in boolean auto_groups,
+ in MED_VERSION version,
+ in boolean overwrite ) raises (SALOME::SALOME_Exception);
+
+ /*!
+ * 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
+ * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
+ */
+ void ExportPartToMED( in SMESH_IDSource meshPart,
+ in string file,
+ in boolean auto_groups,
+ in MED_VERSION version,
+ in boolean overwrite ) raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Export Mesh to different MED Formats
+ * 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 ExportToMED, with MED_VERSION parameter equal to MED_V2_1.
+ * 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);
+ /*!
+ * Export Mesh to SAUV formatted file
+ * Write a temporary med file and use med2sauv
+ */
+ void ExportSAUV( in string file, in boolean auto_groups )
+ raises (SALOME::SALOME_Exception);
+
/*!
* Return string representation of a MED file version comprising nbDigits
*/
* Export Mesh to DAT, UNV and STL Formats
* (UNV supported version is I-DEAS 10)
*/
- void ExportDAT( in string file )
- raises (SALOME::SALOME_Exception);
- void ExportUNV( in string file )
- raises (SALOME::SALOME_Exception);
- void ExportSTL( in string file, in boolean isascii )
- raises (SALOME::SALOME_Exception);
+ void ExportDAT( in string file ) raises (SALOME::SALOME_Exception);
+ void ExportUNV( in string file ) raises (SALOME::SALOME_Exception);
+ void ExportSTL( in string file,
+ in boolean isascii ) raises (SALOME::SALOME_Exception);
+ void ExportCGNS( in SMESH_IDSource meshPart,
+ in string file,
+ in boolean overwrite ) raises (SALOME::SALOME_Exception);
+ void ExportPartToDAT( in SMESH_IDSource meshPart,
+ in string file ) raises (SALOME::SALOME_Exception);
+ void ExportPartToUNV( in SMESH_IDSource meshPart,
+ in string file ) raises (SALOME::SALOME_Exception);
+ void ExportPartToSTL( in SMESH_IDSource meshPart,
+ in string file,
+ in boolean isascii ) raises (SALOME::SALOME_Exception);
/*!
* Get MED Mesh
long NbQuadranglesOfOrder(in ElementOrder order)
raises (SALOME::SALOME_Exception);
+ long NbBiQuadQuadrangles()
+ raises (SALOME::SALOME_Exception);
+
long NbPolygons()
raises (SALOME::SALOME_Exception);
long NbHexasOfOrder(in ElementOrder order)
raises (SALOME::SALOME_Exception);
+ long NbTriQuadraticHexas()
+ raises (SALOME::SALOME_Exception);
+
long NbPyramids()
raises (SALOME::SALOME_Exception);
long NbPrismsOfOrder(in ElementOrder order)
raises (SALOME::SALOME_Exception);
+ long NbHexagonalPrisms()
+ raises (SALOME::SALOME_Exception);
+
long NbPolyhedrons()
raises (SALOME::SALOME_Exception);
ElementType GetElementType( in long id, in boolean iselem )
raises (SALOME::SALOME_Exception);
+ EntityType GetElementGeomType( in long id )
+ raises (SALOME::SALOME_Exception);
+
long_array GetSubMeshElementsId(in long ShapeID)
raises (SALOME::SALOME_Exception);
*/
long ElemNbFaces(in long id);
+ /*!
+ * Returns nodes of given face (counted from zero) for given volumic element.
+ */
+ long_array GetElemFaceNodes(in long elemId, in short faceIndex);
+
+ /*!
+ * Returns an element based on all given nodes.
+ */
+ long FindElementByNodes(in long_array nodes);
+
/*!
* Returns true if given element is polygon
*/