X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_GEOMGenUtils.cxx;h=183d9468bf3ddbc99bd17905ec04d16f0cd7ba27;hp=5453a6a1b758608d71a50e4b0eca7221532432ff;hb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;hpb=d6b7cb735f99cfc9d68fd3a44c0d4c456017f384 diff --git a/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx b/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx index 5453a6a1b..183d9468b 100644 --- a/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -44,16 +44,12 @@ namespace SMESH { - GEOM::GEOM_Gen_var GetGEOMGen() + GEOM::GEOM_Gen_var GetGEOMGen( GEOM::GEOM_Object_ptr go ) { - static GEOM::GEOM_Gen_var aGEOMGen; - - if(CORBA::is_nil(aGEOMGen)) { - if ( GeometryGUI::GetGeomGen()->_is_nil() ) - GeometryGUI::InitGeomGen(); - aGEOMGen = GeometryGUI::GetGeomGen(); - } - return aGEOMGen; + GEOM::GEOM_Gen_ptr gen = GEOM::GEOM_Gen::_nil(); + if ( !CORBA::is_nil( go )) + gen = go->GetGen(); + return gen; } GEOM::GEOM_Object_var GetShapeOnMeshOrSubMesh(_PTR(SObject) theMeshOrSubmesh, @@ -93,11 +89,7 @@ namespace SMESH if ( !aMeshShape->_is_nil() ) return aMeshShape; - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if (!aStudy) - return aMeshShape; - - _PTR(ChildIterator) anIter (aStudy->NewChildIterator(theSO)); + _PTR(ChildIterator) anIter (SMESH::getStudy()->NewChildIterator(theSO)); for ( ; anIter->More(); anIter->Next()) { _PTR(SObject) aSObject = anIter->Value(); _PTR(SObject) aRefSOClient; @@ -115,16 +107,23 @@ namespace SMESH return aMeshShape; } + GEOM::GEOM_Object_var GetGeom( Handle(SALOME_InteractiveObject) io ) + { + GEOM::GEOM_Object_var go; + if ( !io.IsNull() && io->hasEntry() ) + { + _PTR(SObject) so = SMESH::getStudy()->FindObjectID( io->getEntry() ); + go = GetGeom( so ); + } + return go._retn(); + } + SMESHGUI_EXPORT char* GetGeomName( _PTR(SObject) smeshSO ) { if (!smeshSO) return 0; - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if (!aStudy) - return 0; - - _PTR(ChildIterator) anIter (aStudy->NewChildIterator( smeshSO )); + _PTR(ChildIterator) anIter (SMESH::getStudy()->NewChildIterator( smeshSO )); for ( ; anIter->More(); anIter->Next()) { _PTR(SObject) aSObject = anIter->Value(); _PTR(SObject) aRefSOClient; @@ -152,15 +151,18 @@ namespace SMESH GEOM::GEOM_Object_ptr GetSubShape (GEOM::GEOM_Object_ptr theMainShape, long theID) { - GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if (!aStudy || geomGen->_is_nil()) + if ( CORBA::is_nil( theMainShape )) + return GEOM::GEOM_Object::_nil(); + + GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen( theMainShape ); + if (geomGen->_is_nil()) return GEOM::GEOM_Object::_nil(); - GEOM::GEOM_IShapesOperations_wrap aShapesOp = - geomGen->GetIShapesOperations(aStudy->StudyId()); + + GEOM::GEOM_IShapesOperations_wrap aShapesOp = geomGen->GetIShapesOperations(); if (aShapesOp->_is_nil()) return GEOM::GEOM_Object::_nil(); - GEOM::GEOM_Object_wrap subShape = aShapesOp->GetSubShape (theMainShape,theID); + + GEOM::GEOM_Object_wrap subShape = aShapesOp->GetSubShape( theMainShape, theID ); return subShape._retn(); } @@ -183,10 +185,7 @@ namespace SMESH meshGeom.clear(); if ( hypIO.IsNull() ) return false; - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if ( !aStudy ) return false; - - _PTR(SObject) hypSO = aStudy->FindObjectID( hypIO->getEntry() ); + _PTR(SObject) hypSO = SMESH::getStudy()->FindObjectID( hypIO->getEntry() ); if ( !hypSO ) return false; // Depth() is a number of fathers