- 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);
+ }