+ struct PointStruct { double x;
+ double y;
+ double z; } ;
+
+ typedef sequence<PointStruct> nodes_array;
+
+ struct DirStruct { PointStruct PS ; } ; // analog to OCCT gp_Vec
+
+ struct AxisStruct { double x;
+ double y;
+ double z;
+ double vx;
+ double vy;
+ double vz; } ;
+ /*!
+ * Node location on a shape
+ */
+ struct NodePosition {
+ long shapeID;
+ GEOM::shape_type shapeType;
+ double_array params; // [U] on EDGE, [U,V] on FACE, [] on the rest shapes
+ };
+
+ /*!
+ * Element location on a shape
+ */
+ struct ElementPosition {
+ long shapeID;
+ GEOM::shape_type shapeType;
+ };
+
+ /*!
+ * Enumeration for element type, like in SMDS
+ */
+ enum ElementType
+ {
+ ALL,
+ NODE,
+ EDGE,
+ FACE,
+ VOLUME,
+ ELEM0D,
+ BALL,
+ NB_ELEMENT_TYPES
+ };
+ typedef sequence<ElementType> array_of_ElementType ;
+
+ /*!
+ * Enumeration for element geometry type, like SMDSAbs_GeometryType in SMDSAbs_ElementType.hxx
+ */
+ enum GeometryType
+ {
+ Geom_POINT,
+ Geom_EDGE,
+ Geom_TRIANGLE,
+ Geom_QUADRANGLE, // when a new GeometryType is added, please
+ Geom_POLYGON, // update a corresponding list in SMESH_2smeshpy.cxx, ln 665
+ Geom_TETRA,
+ Geom_PYRAMID,
+ Geom_HEXA,
+ Geom_PENTA,
+ Geom_HEXAGONAL_PRISM,
+ Geom_POLYHEDRA,
+ Geom_BALL
+ };
+
+ /*!
+ * 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 of entity type used in mesh info array,
+ * it should be synchronised with enum SMDSAbs_EntityType
+ */
+ enum EntityType
+ {
+ Entity_Node,
+ Entity_0D,
+ Entity_Edge,
+ Entity_Quad_Edge,
+ Entity_Triangle,
+ Entity_Quad_Triangle,
+ Entity_BiQuad_Triangle,
+ Entity_Quadrangle,
+ Entity_Quad_Quadrangle,
+ Entity_BiQuad_Quadrangle,
+ Entity_Polygon,
+ Entity_Quad_Polygon,
+ Entity_Tetra,
+ Entity_Quad_Tetra,
+ Entity_Pyramid,
+ 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_Ball,
+ Entity_Last
+ };
+
+ /*!
+ * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods)
+ */
+ enum Hypothesis_Status // in the order of severity
+ {
+ HYP_OK,
+ HYP_MISSING, // algo misses a hypothesis
+ HYP_CONCURENT, // 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_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
+ };
+
+ /*!
+ * Enumeration for mesh read status (used by SMESH_Gen::CreateMeshesFrom*() methods)
+ */
+ 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_WARN_DESCENDING, // some elements were skipped due to descending connectivity
+ DRS_FAIL // general failure (exception etc.)
+ };
+
+ /*!
+ * Enumeration for ExportToMED*()
+ */
+ enum MED_VERSION
+ {
+ MED_V2_1,
+ MED_V2_2
+ };
+
+ /*!
+ * \brief A structure containing information about MED file
+ */
+ struct MedFileInfo
+ {
+ string fileName; //!< name of file
+ long fileSize; //!< size of file
+ long major, minor, release; //!< MED file version
+ };
+
+ /*!
+ * 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;
+
+ /*!
+ * Structure used in mesh edit preview data (MeshPreviewStruct)
+ */
+ struct ElementSubType { ElementType SMDS_ElementType;
+ boolean isPoly;
+ long nbNodesInElement; };
+
+ typedef sequence<ElementSubType> types_array;
+
+ /*!
+ * Structure containing mesh edit preview data
+ */
+ struct MeshPreviewStruct { nodes_array nodesXYZ;
+ long_array elementConnectivities;
+ types_array elementTypes; };
+
+ interface SMESH_Mesh;
+
+ interface SMESH_IDSource : SALOME::GenericObj
+ {
+ /*!
+ * Returns a sequence of all element IDs
+ */
+ long_array GetIDs();
+
+ /*!
+ * 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
+ */
+ array_of_ElementType GetTypes();
+
+ /*!
+ * Returns the mesh
+ */
+ SMESH_Mesh GetMesh();
+
+ /*!
+ * Returns false if GetMeshInfo() returns incorrect information that may
+ * happen if mesh data is not yet fully loaded from the file of study.
+ */
+ boolean IsMeshInfoCorrect();
+ };
+
+ interface SMESH_Group;
+ interface SMESH_GroupOnGeom;
+ interface Filter;
+ interface SMESH_GroupOnFilter;