mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-27 13:00:32 +05:00
Modify GetTypes() to return an empty array if there are no elements
This commit is contained in:
parent
4d58862b1b
commit
5df2a8d168
@ -572,8 +572,12 @@ SMESH::long_array* SMESH_GroupBase_i::GetIDs()
|
||||
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();
|
||||
if ( SMESHDS_GroupBase* ds = GetGroupDS() )
|
||||
if ( !ds->IsEmpty() )
|
||||
{
|
||||
types->length( 1 );
|
||||
types[0] = GetType();
|
||||
}
|
||||
return types._retn();
|
||||
}
|
||||
|
||||
|
@ -428,8 +428,10 @@ struct _IDSource : public POA_SMESH::SMESH_IDSource
|
||||
SMESH::array_of_ElementType* GetTypes()
|
||||
{
|
||||
SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
|
||||
types->length( 1 );
|
||||
types[0] = _type;
|
||||
if ( _ids.length() > 0 ) {
|
||||
types->length( 1 );
|
||||
types[0] = _type;
|
||||
}
|
||||
return types._retn();
|
||||
}
|
||||
};
|
||||
|
@ -557,23 +557,27 @@ SMESH::array_of_ElementType* SMESH_subMesh_i::GetTypes()
|
||||
SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
|
||||
|
||||
::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
|
||||
TopoDS_Shape shape = aSubMesh->GetSubShape();
|
||||
while ( !shape.IsNull() && shape.ShapeType() == TopAbs_COMPOUND )
|
||||
if ( SMESHDS_SubMesh* smDS = aSubMesh->GetSubMeshDS() )
|
||||
{
|
||||
TopoDS_Iterator it( shape );
|
||||
shape = it.More() ? it.Value() : TopoDS_Shape();
|
||||
}
|
||||
if ( !shape.IsNull() )
|
||||
{
|
||||
types->length( 1 );
|
||||
switch ( ::SMESH_Gen::GetShapeDim( shape ))
|
||||
SMDS_ElemIteratorPtr eIt = smDS->GetElements();
|
||||
if ( eIt->more() )
|
||||
{
|
||||
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);
|
||||
types->length( 1 );
|
||||
types[0] = SMESH::ElementType( eIt->next()->GetType());
|
||||
}
|
||||
else if ( smDS->GetNodes()->more() )
|
||||
{
|
||||
TopoDS_Shape shape = aSubMesh->GetSubShape();
|
||||
while ( !shape.IsNull() && shape.ShapeType() == TopAbs_COMPOUND )
|
||||
{
|
||||
TopoDS_Iterator it( shape );
|
||||
shape = it.More() ? it.Value() : TopoDS_Shape();
|
||||
}
|
||||
if ( !shape.IsNull() && shape.ShapeType() == TopAbs_VERTEX )
|
||||
{
|
||||
types->length( 1 );
|
||||
types[0] = SMESH::NODE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return types._retn();
|
||||
|
Loading…
Reference in New Issue
Block a user