#include <SalomeApp_Application.h>
#include <SUIT_Session.h>
+#include <GEOMBase.h>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Client.hxx>
#include <GEOM_wrap.hxx>
* @param entry the entry of the object
* @return the name of the object
*/
-std::string GeomSelectionTools::getNameFromEntry(std::string entry){
+std::string GeomSelectionTools::getNameFromEntry(const std::string& entry)
+{
std::string name = "";
_PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry);
if (aSO){
* Retrieve the shape type from the entry
* @return the shape type from the entry, return TopAbs_SHAPE if the object does not define a shape or a group.
*/
-TopAbs_ShapeEnum GeomSelectionTools::entryToShapeType(std::string entry){
-// MESSAGE("GeomSelectionTools::entryToShapeType"<<entry );
- TopoDS_Shape S = TopoDS_Shape();
+TopAbs_ShapeEnum GeomSelectionTools::entryToShapeType(const std::string& entry)
+{
TopAbs_ShapeEnum ShapeType = TopAbs_SHAPE;
- _PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry);
- if (aSO){
+ if ( _PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry))
+ {
_PTR(SObject) aRefSObj;
- GEOM::GEOM_Object_var aShape;
- // MESSAGE("Got a SO");
- // If selected object is a reference
- if ( aSO->ReferencedObject( aRefSObj ))
+ if ( aSO->ReferencedObject( aRefSObj )) // If selected object is a reference
aSO = aRefSObj;
- // 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();
}
}
}
}
-// MESSAGE("ShapeType returned is " << ShapeType);
return ShapeType;
}
*/
TopAbs_ShapeEnum GeomSelectionTools:: getFirstSelectedShapeType()
{
- Handle(SALOME_InteractiveObject) anIO;
- anIO=GeomSelectionTools::getFirstSelectedSalomeObject();
- return entryToShapeType(anIO->getEntry());
+ Handle(SALOME_InteractiveObject) anIO=GeomSelectionTools::getFirstSelectedSalomeObject();
+ return entryToShapeType(anIO->getEntry());
}
/*!
Handle(SALOME_InteractiveObject) getFirstSelectedSalomeObject();
std::string getFirstSelectedEntry();
std::string getEntryOfObject(Handle(SALOME_InteractiveObject));
- std::string getNameFromEntry(std::string);
+ std::string getNameFromEntry(const std::string& );
std::string getFirstSelectedComponentDataType();
TopAbs_ShapeEnum getFirstSelectedShapeType();
- TopAbs_ShapeEnum entryToShapeType(std::string );
+ TopAbs_ShapeEnum entryToShapeType(const std::string& );
GeomAbs_SurfaceType getFaceInformation(TopoDS_Shape);
};
return false;
// Get GEOM engine
- Engines::EngineComponent_var comp =
- SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "GEOM" );
- GEOM::GEOM_Gen_var geomEngine = GEOM::GEOM_Gen::_narrow( comp );
- if ( CORBA::is_nil( geomEngine ) )
+ GEOM::GEOM_Gen_var geomEngine = aGeomObj->GetGen();
+ if ( CORBA::is_nil( geomEngine ))
return false;
// Get shape from geom object and verify its parameters
GEOM_Client aGeomClient;
TopoDS_Shape aShape = aGeomClient.GetShape(geomEngine.in(), aGeomObj);
- if (aShape.IsNull() ||
- !myShapeTypes.Contains(aShape.ShapeType()))
+ if (aShape.IsNull() || !myShapeTypes.Contains(aShape.ShapeType()))
return false;
if (myIsClosedOnly && aShape.ShapeType() == TopAbs_SHELL && !aShape.Closed())
if (aMainShape.IsNull())
return false;
- bool isFound = false;
- TopAbs_ShapeEnum aShapeType = aShape.ShapeType();
- TopExp_Explorer anExp (aMainShape, aShapeType);
- for (; anExp.More(); anExp.Next()) {
- if (anExp.Current() == aShape) {
- isFound = true;
+ TopExp_Explorer anExp (aMainShape, aShape.ShapeType());
+ for (; anExp.More(); anExp.Next())
+ if (anExp.Current() == aShape)
break;
- }
- }
- if (!isFound)
+ if (!anExp.More())
return false;
}
#include "SMESH_version.h"
-#include "SMESH_ControlsDef.hxx"
#include "SMESH_Actor.h"
#include "SMESH_ActorUtils.h"
#include "SMESH_Client.hxx"
+#include "SMESH_Comment.hxx"
+#include "SMESH_ControlsDef.hxx"
#include "SMESH_ScalarBarActor.h"
-#include <SMESH_Comment.hxx>
#include "SMESH_TypeFilter.hxx"
// SALOME GUI includes
SALOME_ListIteratorOfListIO It( selected );
for ( ; isCompatible && It.More(); It.Next())
isCompatible =
- ( strcmp("GEOM", It.Value()->getComponentDataType()) == 0 ) ||
- ( strcmp("SMESH", It.Value()->getComponentDataType()) == 0 );
+ ( strcmp("GEOM", It.Value()->getComponentDataType()) == 0 ) ||
+ ( strcmp("SHAPERSTUDY", It.Value()->getComponentDataType()) == 0 ) ||
+ ( strcmp("SMESH", It.Value()->getComponentDataType()) == 0 );
return isCompatible;
}
// componentName is used for encoding of entries when storing them in IParameters
std::string componentName = myComponentSMESH->ComponentDataType();
- //_PTR(SComponent) aSComponent = studyDS->FindComponent("GEOM");
- //if (!aSComponent) return;
// IParameters
_PTR(AttributeParameter) ap = studyDS->GetModuleParameters("Interface Applicative",
myTable->GetThreshold(i, aName);
std::vector<_PTR(SObject)> aList = SMESH::getStudy()->FindObjectByName(aName.toUtf8().constData(), "GEOM");
+ if (aList.size() == 0)
+ aList = SMESH::getStudy()->FindObjectByName(aName.toUtf8().constData(), "SHAPERSTUDY");
if (aList.size() == 0) {
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
tr("BAD_SHAPE_NAME").arg(aName));
{
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
SALOMEDS::Study::ListOfSObject_var aList = SMESH_Gen_i::getStudyServant()->FindObjectByName( theName, "GEOM" );
+ if ( aList->length() == 0 )
+ aList = SMESH_Gen_i::getStudyServant()->FindObjectByName( theName, "SHAPERSTUDY" );
if ( aList->length() > 0 )
{
CORBA::Object_var anObj = aList[ 0 ]->GetObject();
SALOMEDS::SObject_ptr SMESH_Gen_i::ObjectToSObject(CORBA::Object_ptr theObject)
{
SALOMEDS::SObject_wrap aSO;
- if ( !CORBA::is_nil( theObject ))
+ try {
+ if ( !CORBA::is_nil( theObject ))
+ {
+ CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theObject );
+ aSO = getStudyServant()->FindObjectIOR( objStr.in() );
+ }
+ }
+ catch (...)
{
- CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theObject );
- aSO = getStudyServant()->FindObjectIOR( objStr.in() );
}
return aSO._retn();
}
if ( !shapeEntry.isEmpty() )
{
// find origin
- Handle(SALOME_InteractiveObject) io =
- new SALOME_InteractiveObject( shapeEntry.toStdString().c_str(), "GEOM" );
- GEOM::GEOM_Object_var geomObj = SMESH::IObjectToInterface<GEOM::GEOM_Object>( io );
+ GEOM::GEOM_Object_var geomObj = SMESH::EntryToInterface<GEOM::GEOM_Object>( shapeEntry );
if ( GEOMBase::GetShape( geomObj, shape ) && !shape.IsNull())
{
Bnd_Box box;
if ( shapeEntry.isEmpty() )
return;
- Handle(SALOME_InteractiveObject) io =
- new SALOME_InteractiveObject( shapeEntry.toStdString().c_str(), "GEOM" );
- GEOM::GEOM_Object_var geomObj = SMESH::IObjectToInterface<GEOM::GEOM_Object>( io );
+ GEOM::GEOM_Object_var geomObj = SMESH::EntryToInterface<GEOM::GEOM_Object>( shapeEntry );
if ( geomObj->_is_nil() )
return;
{
QListWidgetItem* item = myShapesList->item(i);
QString entry = item->data( Qt::UserRole ).toString();
- Handle(SALOME_InteractiveObject) io =
- new SALOME_InteractiveObject( entry.toStdString().c_str(), "GEOM" );
- GEOM::GEOM_Object_var go = GEOMBase::ConvertIOinGEOMObject( io );
+ GEOM::GEOM_Object_var go = SMESH::EntryToInterface<GEOM::GEOM_Object>( entry );
if ( !go->_is_nil() )
goList[ nbShapes++ ] = go;
}