- // MESSAGE("aSO->GetFatherComponent()->ComponentDataType(): " << aSO->GetFatherComponent()->ComponentDataType());
- std::string aComponentType = aSO->GetFatherComponent()->ComponentDataType();
- if (aComponentType == "GEOM" || aComponentType == "SHAPERSTUDY")
- aShape = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aSO);
- if ( !aShape->_is_nil() ){
- // MESSAGE("Got the Geom Object ");
- // MESSAGE("Geom Object Type "<< aShape->GetType());
- SalomeApp_Application* anApp = GetSalomeApplication();
- if (anApp) {
-// MESSAGE("Got Application");
- Engines::EngineComponent_var component = anApp->lcc()->FindOrLoad_Component( "FactoryServer", aComponentType.c_str());
- GEOM::GEOM_Gen_var _geomEngine = GEOM::GEOM_Gen::_narrow(component);
-// MESSAGE("Got GEOM engine");
- // if the Geom Object is a group
- if (aShape->GetType() == GEOM_GROUP){
-// MESSAGE("It's a group");
- GEOM::GEOM_IGroupOperations_wrap aGroupOp =
- _geomEngine->GetIGroupOperations();
- ShapeType= (TopAbs_ShapeEnum)aGroupOp->GetType(aShape);
- }
- // if not
- else {
- GEOM_Client* aClient = new GEOM_Client();
- if ( aClient && !_geomEngine->_is_nil() ) {
-// MESSAGE("GEOM client is OK and GEOM engine is not null");
- S = aClient->GetShape( _geomEngine, aShape );
- ShapeType=S.ShapeType();
- if ( ShapeType == TopAbs_COMPOUND )
- {
- TopoDS_Iterator it( S );
- if ( it.More() )
- ShapeType = it.Value().ShapeType();
- }
- }
+ GEOM::GEOM_Object_var aShape = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aSO);
+ if ( !aShape->_is_nil() )
+ {
+ ShapeType= (TopAbs_ShapeEnum)aShape->GetShapeType();
+ // if the Geom Object is a group
+ if (aShape->GetType() == GEOM_GROUP)
+ {
+ GEOM::GEOM_Gen_var _geomEngine = aShape->GetGen();
+ GEOM::GEOM_IGroupOperations_wrap aGroupOp = _geomEngine->GetIGroupOperations();
+ ShapeType= (TopAbs_ShapeEnum)aGroupOp->GetType(aShape);
+ }
+ // if not
+ else if ( ShapeType == TopAbs_COMPOUND )
+ {
+ TopoDS_Shape shape;
+ if (GEOMBase::GetShape(aShape, shape))
+ {
+ TopoDS_Iterator it( shape );
+ if ( it.More() )
+ ShapeType = it.Value().ShapeType();