- if( !aGeomObj.IsNull() )
- {
- SplitData aSplitData( aGeomObj->GetTopShape(), aGeomObj->GetName() );
+ if( aGeomObj.IsNull() )
+ continue;
+
+ TopoDS_Shape aShape = aGeomObj->GetTopShape();
+ if ( aShape.IsNull() )
+ continue;
+
+ if ( aShape.ShapeType() == TopAbs_COMPOUND ) {
+ // Create split data for each face contained in the compound
+ TopExp_Explorer anExp( aShape, TopAbs_FACE );
+ for ( ; anExp.More(); anExp.Next() ) {
+ TopoDS_Face aFace = TopoDS::Face( anExp.Current() );
+ if ( !aFace.IsNull() ) {
+ SplitData aSplitData( SplitData::Data_Zone, aFace, aGeomObj->GetName() );
+ anInputSplitDataList.append( aSplitData );
+ }
+ }
+ } else {
+ SplitData aSplitData( SplitData::Data_Zone, aShape, aGeomObj->GetName() );