- _PTR(SObject) obj = aStudy->FindObjectID(Entry);
- _PTR(GenericAttribute) anAttr;
-
- // Create new actor
- if ( !obj->FindAttribute(anAttr, "AttributeIOR"))
- return;
- _PTR(AttributeIOR) anIOR(anAttr);
- string anIORValue = anIOR->Value();
-
- GEOM::GEOM_Object_var aShape = Geom->GetIORFromString(anIORValue.c_str());
- TopoDS_Shape Shape = ShapeReader.GetShape(Geom,aShape);
-
- if ( obj ) {
- if (obj->FindAttribute(anAttr, "AttributeName")) {
- _PTR(AttributeName) aName ( anAttr );
- string aNameValue = aName->Value();
- // open transaction
- SUIT_Operation* op = new SalomeApp_ImportOperation( app );
- op->start();
-
- _PTR(SObject) newObj1 = aStudyBuilder->NewObject(father);
- aStudyBuilder->Addreference(newObj1, obj);
- // commit transaction
- op->commit();
-
- Handle(GEOM_InteractiveObject) anIO = new GEOM_InteractiveObject(const_cast<char*>(anIORValue.c_str()),
- const_cast<char*>(aFatherIOR.c_str()),
- "GEOM",
- const_cast<char*>( obj->GetID().c_str() ));
-
- class TEvent: public SALOME_Event{
- SUIT_Application* myApp;
- TopoDS_Shape myShape;
- Handle(SALOME_InteractiveObject) myIO;
- const char* myName;
- public:
- TEvent(SUIT_Application* theApp, TopoDS_Shape theShape,
- const Handle(SALOME_InteractiveObject)& theIO,
- const char* theName):
- myApp(theApp), myShape(theShape),
- myIO(theIO), myName(theName)
- {}
- virtual void Execute(){
- if(SVTK_ViewWindow* svtkViewWindow = GetSVTKViewWindow(myApp)){
- SVTK_RenderWindowInteractor* myRenderInter= svtkViewWindow->getRWInteractor();
- int aMode = myRenderInter->GetDisplayMode();
-
- vtkActorCollection* theActors = GEOM_AssemblyBuilder::BuildActors(myShape,0,aMode,true);
- theActors->InitTraversal();
- while(vtkActor* anActor = theActors->GetNextActor()){
- GEOM_Actor* GActor = GEOM_Actor::SafeDownCast(anActor);
- GActor->setName(const_cast<char*>(myName));
- GActor->setIO(myIO);
- myRenderInter->Display(GActor);
- }
- myRenderInter->Update();
- }else if( OCCViewer_Viewer* occViewer = GetOCCViewer(myApp)){
- Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
- Handle(GEOM_AISShape) aSh = new GEOM_AISShape(myShape,const_cast<char*>(myName));
- aSh->setName(const_cast<char*>(myName));
- aSh->setIO(myIO);
- ic->Display(aSh);
- ic->AddOrRemoveCurrentObject(aSh,true);
- }
- // update object browser
- SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(myApp);
- if (app) {
- CAM_Module* module = app->module( "Geometry" );
- SalomeApp_Module* appMod = dynamic_cast<SalomeApp_Module*>( module );
- if ( appMod )
- appMod->updateObjBrowser( true );
- }
-
- }
- };
- ProcessVoidEvent(new TEvent(app,Shape,anIO,aNameValue.c_str()));
+ _PTR(Study) aStudy(ActiveStudy->studyDS());
+ _PTR(StudyBuilder) aStudyBuilder = aStudy->NewBuilder();
+
+ GEOM::GEOM_Gen_var Geom = GeometryGUI::GetGeomGen();
+ if (CORBA::is_nil(Geom)) {
+ GeometryGUI::InitGeomGen();
+ Geom = GeometryGUI::GetGeomGen();
+ }
+ if (CORBA::is_nil(Geom))
+ return;
+
+ std::string aFatherIOR;
+ _PTR(SComponent) father = aStudy->FindComponent("GEOM");
+ if (!father)
+ return;
+ if (!father->ComponentIOR(aFatherIOR)) {
+ CORBA::String_var objStr = SalomeApp_Application::orb()->object_to_string(Geom);
+ aStudyBuilder->LoadWith(father, objStr.in());
+ father->ComponentIOR(aFatherIOR);
+ }
+
+ _PTR(SObject) obj = aStudy->FindObjectID(myEntry);
+ if (!obj)
+ return;
+
+ // Create new actor
+ _PTR(GenericAttribute) anAttr;
+ if (!obj->FindAttribute(anAttr, "AttributeIOR"))
+ return;
+ _PTR(AttributeIOR) anIOR(anAttr);
+ std::string anIORValue = anIOR->Value();
+
+ GEOM::GEOM_Object_var aShape = Geom->GetIORFromString(anIORValue.c_str());
+ TopoDS_Shape Shape = ShapeReader.GetShape(Geom,aShape);
+ if (!Shape.IsNull()) {
+ if (obj->FindAttribute(anAttr, "AttributeName")) {
+ _PTR(AttributeName) aName (anAttr);
+ std::string aNameValue = aName->Value();
+ // open transaction
+ /*SUIT_Operation* op = new SalomeApp_ImportOperation (app);
+ op->start();
+
+ _PTR(SObject) newObj1 = aStudyBuilder->NewObject(father);
+ aStudyBuilder->Addreference(newObj1, obj);
+ // commit transaction
+ op->commit();*/
+ Handle(GEOM_InteractiveObject) anIO =
+ new GEOM_InteractiveObject (const_cast<char*>(anIORValue.c_str()),
+ const_cast<char*>(aFatherIOR.c_str()),
+ "GEOM",
+ const_cast<char*>( obj->GetID().c_str()));
+
+ GEOM_Displayer(ActiveStudy).Display(anIO, myUpdateViewer);
+ /*if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(app)) {
+ SVTK_View* aView = aViewWindow->getView();
+ int aMode = aView->GetDisplayMode();
+
+ vtkActorCollection* theActors =
+ GEOM_AssemblyBuilder::BuildActors(Shape,0,aMode,true);
+ theActors->InitTraversal();
+ while (vtkActor* anActor = theActors->GetNextActor()) {
+ GEOM_Actor* GActor = GEOM_Actor::SafeDownCast(anActor);
+ GActor->setName(const_cast<char*>(aNameValue.c_str()));
+ GActor->setIO(anIO);
+ aView->Display(GActor);
+ }
+ aView->Repaint();
+ } else if (OCCViewer_Viewer* occViewer = GetOCCViewer(app)) {
+ Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
+ Handle(GEOM_AISShape) aSh =
+ new GEOM_AISShape (Shape,const_cast<char*>(aNameValue.c_str()));
+ aSh->setName(const_cast<char*>(aNameValue.c_str()));
+ aSh->setIO(anIO);
+ ic->Display(aSh);
+ ic->AddOrRemoveCurrentObject(aSh,true);
+ }*/
+ // update object browser
+ SalomeApp_Application* app = NULL; //dynamic_cast<SalomeApp_Application*>(app);
+ if (app) {
+ CAM_Module* module = app->module("Geometry");
+ SalomeApp_Module* appMod = dynamic_cast<SalomeApp_Module*>(module);
+ if (appMod)
+ appMod->updateObjBrowser(true);
+ }
+ }
+ }