]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
0020746: EDF 1274 SMESH : MergeAllNodesButNodesFromGroup feature
authoreap <eap@opencascade.com>
Wed, 15 Sep 2010 11:51:57 +0000 (11:51 +0000)
committereap <eap@opencascade.com>
Wed, 15 Sep 2010 11:51:57 +0000 (11:51 +0000)
+  /*!
+   * Returns types of elements it contains
+   */
+  virtual SMESH::array_of_ElementType* GetTypes();

src/SMESH_I/SMESH_Filter_i.cxx
src/SMESH_I/SMESH_Filter_i.hxx
src/SMESH_I/SMESH_Group_i.cxx
src/SMESH_I/SMESH_Group_i.hxx
src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx
src/SMESH_I/SMESH_subMesh_i.cxx
src/SMESH_I/SMESH_subMesh_i.hxx

index 969ffb61387adfbe9d2b6a7ae0149770f5bf8651..bf5bc2ba64f49800d991fd1f01b3cac536431aec 100644 (file)
@@ -2206,6 +2206,21 @@ SMESH::long_array* ::Filter_i::GetMeshInfo()
   return aRes._retn();  
 }
 
+//================================================================================
+/*!
+ * \brief Return GetElementType() within an array
+ * Implement SMESH_IDSource interface
+ */
+//================================================================================
+
+SMESH::array_of_ElementType* Filter_i::GetTypes()
+{
+  SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
+  types->length( 1 );
+  types[0] = GetElementType();
+  return types._retn();
+}
+
 //=======================================================================
 // name    : getCriteria
 // Purpose : Retrieve criterions from predicate
index 057c7693b00d15b0e7013ab9ff993042a94ea4f9..5451f821fe939a150352d8054fe8da9faef9d347 100644 (file)
@@ -790,6 +790,10 @@ namespace SMESH
     SMESH::long_array*
     GetMeshInfo();
 
+    virtual
+    SMESH::array_of_ElementType*
+    GetTypes();
+
     static
     void
     GetElementsId( Predicate_i*,
index d6f2d4ee477f1f5d5c97d6421e2e1db60db2deb8..e600c37f07a57dba8557f4b62299afc8813e8a54 100644 (file)
@@ -426,17 +426,6 @@ SMESH::SMESH_Mesh_ptr SMESH_GroupBase_i::GetMesh()
   return aMesh._retn();
 }
 
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-SMESH::long_array* SMESH_GroupBase_i::GetIDs()
-{
-  SMESH::long_array_var aResult = GetListOfID();
-  return aResult._retn();
-}
-
 //=======================================================================
 //function : GetShape
 //purpose  : 
@@ -543,3 +532,28 @@ SMESH::long_array* SMESH_GroupBase_i::GetMeshInfo()
     SMESH_Mesh_i::CollectMeshInfo( aGrpDS->GetElements(), aRes);
   return aRes._retn();
 }
+
+//=======================================================================
+//function : GetIDs
+//purpose  : Returns ids of members
+//=======================================================================
+
+SMESH::long_array* SMESH_GroupBase_i::GetIDs()
+{
+  SMESH::long_array_var aResult = GetListOfID();
+  return aResult._retn();
+}
+
+//=======================================================================
+//function : GetTypes
+//purpose  : Returns types of elements it contains
+//=======================================================================
+
+SMESH::array_of_ElementType* SMESH_GroupBase_i::GetTypes()
+{
+  SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
+  types->length( 1 );
+  types[0] = GetType();
+  return types._retn();
+}
+
index 0dffef1e8409f78d02712b8bd615ebbced2d4ab1..60d61f6c0c71e28d23ca6a661fc1fd709a206c0a 100644 (file)
@@ -75,6 +75,12 @@ class SMESH_I_EXPORT SMESH_GroupBase_i:
   // Inherited from SMESH_IDSource interface
   virtual SMESH::long_array* GetIDs();
 
+  /*!
+   * Returns types of elements it contains
+   * Inherited from SMESH_IDSource interface
+   */
+  virtual SMESH::array_of_ElementType* GetTypes();
+
   // Internal C++ interface
   int GetLocalID() const { return myLocalID; }
   SMESH_Mesh_i* GetMeshServant() const { return myMeshServant; }
index 1d631cfced4fc7de31e797511547e09268a87d85..a38a8f9ba3fb3f96fc8dad3cfd6de889fbc3429b 100644 (file)
@@ -655,6 +655,8 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::GetSubMesh(GEOM::GEOM_Object_ptr aSubShap
     //Get or Create the SMESH_subMesh object implementation
 
     int subMeshId = _impl->GetMeshDS()->ShapeToIndex( myLocSubShape );
+    if ( !subMeshId )
+      THROW_SALOME_CORBA_EXCEPTION("not sub-shape of the main shape", SALOME::BAD_PARAM);
     subMesh = getSubMesh( subMeshId );
 
     // create a new subMesh object servant if there is none for the shape
@@ -3548,6 +3550,30 @@ SMESH::string_array* SMESH_Mesh_i::GetLastParameters()
   return aResult._retn();
 }
 
+//=======================================================================
+//function : GetTypes
+//purpose  : Returns types of elements it contains
+//=======================================================================
+
+SMESH::array_of_ElementType* SMESH_Mesh_i::GetTypes()
+{
+  SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
+
+  types->length( 4 );
+  int nbTypes = 0;
+  if (_impl->NbEdges())
+    types[nbTypes++] = SMESH::EDGE;
+  if (_impl->NbFaces())
+    types[nbTypes++] = SMESH::FACE;
+  if (_impl->NbVolumes())
+    types[nbTypes++] = SMESH::VOLUME;
+  if (_impl->Nb0DElements())
+    types[nbTypes++] = SMESH::ELEM0D;
+  types->length( nbTypes );
+
+  return types._retn();
+}
+
 //=============================================================================
 /*!
  * \brief Returns statistic of mesh elements
index 92cf410b56d046d5ff56475eb978780cb4eed105..d3f550ecdae29dd71f1e457bc7c6d7e7b722f10b 100644 (file)
@@ -373,8 +373,6 @@ public:
    */
   void CheckGeomGroupModif();
 
-  virtual SMESH::long_array* GetIDs();
-
   CORBA::LongLong GetMeshPtr();
 
   /*!
@@ -502,14 +500,6 @@ public:
    */
   SMESH::string_array* GetLastParameters();
 
-
-  /*!
-   * Returns statistic of mesh elements
-   * Result array of number enityties
-   * Inherited from SMESH_IDSource
-   */
-  virtual SMESH::long_array* GetMeshInfo();
-
   /*!
    * Collect statistic of mesh elements given by iterator
    */
@@ -526,6 +516,25 @@ public:
   virtual ::CORBA::Boolean SetMeshOrder(const SMESH::submesh_array_array& theSubMeshArray);
 
 
+  // =========================
+  // SMESH_IDSource interface
+  // =========================
+
+  virtual SMESH::long_array* GetIDs();
+
+  /*!
+   * Returns statistic of mesh elements
+   * Result array of number enityties
+   * Inherited from SMESH_IDSource
+   */
+  virtual SMESH::long_array* GetMeshInfo();
+
+  /*!
+   * Returns types of elements it contains
+   */
+  virtual SMESH::array_of_ElementType* GetTypes();
+
+
   std::map<int, SMESH_subMesh_i*> _mapSubMesh_i; //NRI
   std::map<int, ::SMESH_subMesh*> _mapSubMesh;   //NRI
 
index 301f1a972c9554ec4786f4983da0019798ca3b1e..8401ce7755da50a8c3ac59b5df82a7c6db6f079a 100644 (file)
@@ -545,3 +545,26 @@ SMESH::long_array* SMESH_subMesh_i::GetMeshInfo()
 
   return aRes._retn();
 }
+
+
+//=======================================================================
+//function : GetTypes
+//purpose  : Returns types of elements it contains
+//=======================================================================
+
+SMESH::array_of_ElementType* SMESH_subMesh_i::GetTypes()
+{
+  SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
+  types->length( 1 );
+  ::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
+  switch ( ::SMESH_Gen::GetShapeDim( aSubMesh->GetSubShape() ))
+  {
+  case 0: types[0] = SMESH::ELEM0D; break;
+  case 1: types[0] = SMESH::EDGE; break;
+  case 2: types[0] = SMESH::FACE; break;
+  case 3: types[0] = SMESH::VOLUME; break;
+  default:
+    types->length(0);
+  }
+  return types._retn();
+}
index bd53171aeac521e991f200ab5ca5159e683160c9..3f90a8cb818294d7f443646352405e181532e1db 100644 (file)
@@ -94,6 +94,12 @@ public:
    */
   virtual SMESH::long_array* GetMeshInfo();
 
+  /*!
+   * Returns types of elements it contains
+   */
+  virtual SMESH::array_of_ElementType* GetTypes();
+
+
   SMESH_Mesh_i* _mesh_i; //NRI
 
 protected: