From: eap Date: Thu, 7 Oct 2010 14:34:11 +0000 (+0000) Subject: fix GetTypes() for submesh on geom group X-Git-Tag: V5_1_5rc1~41 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=263ccfa485fe221d565f45b13d9910c971e7080b;p=modules%2Fsmesh.git fix GetTypes() for submesh on geom group --- diff --git a/src/SMESH_I/SMESH_subMesh_i.cxx b/src/SMESH_I/SMESH_subMesh_i.cxx index 8401ce775..faa7aa1ca 100644 --- a/src/SMESH_I/SMESH_subMesh_i.cxx +++ b/src/SMESH_I/SMESH_subMesh_i.cxx @@ -555,16 +555,26 @@ SMESH::long_array* SMESH_subMesh_i::GetMeshInfo() 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() )) + TopoDS_Shape shape = aSubMesh->GetSubShape(); + while ( !shape.IsNull() && shape.ShapeType() == TopAbs_COMPOUND ) { - 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); + TopoDS_Iterator it( shape ); + shape = it.More() ? it.Value() : TopoDS_Shape(); + } + if ( !shape.IsNull() ) + { + types->length( 1 ); + switch ( ::SMESH_Gen::GetShapeDim( shape )) + { + 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(); }