mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 09:20:34 +05:00
#19078 [CEA] Mesh Group - Group on filter
fix places where component name "GEOM" is used
This commit is contained in:
parent
20d7486abe
commit
4d658cb770
@ -28,6 +28,7 @@
|
|||||||
#include <SalomeApp_Application.h>
|
#include <SalomeApp_Application.h>
|
||||||
#include <SUIT_Session.h>
|
#include <SUIT_Session.h>
|
||||||
|
|
||||||
|
#include <GEOMBase.h>
|
||||||
#include <GEOMImpl_Types.hxx>
|
#include <GEOMImpl_Types.hxx>
|
||||||
#include <GEOM_Client.hxx>
|
#include <GEOM_Client.hxx>
|
||||||
#include <GEOM_wrap.hxx>
|
#include <GEOM_wrap.hxx>
|
||||||
@ -144,7 +145,8 @@ std::string GeomSelectionTools::getEntryOfObject(Handle(SALOME_InteractiveObject
|
|||||||
* @param entry the entry of the object
|
* @param entry the entry of the object
|
||||||
* @return the name 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 = "";
|
std::string name = "";
|
||||||
_PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry);
|
_PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry);
|
||||||
if (aSO){
|
if (aSO){
|
||||||
@ -186,57 +188,38 @@ std::string GeomSelectionTools::getFirstSelectedComponentDataType()
|
|||||||
* Retrieve the shape type from the entry
|
* 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.
|
* @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){
|
TopAbs_ShapeEnum GeomSelectionTools::entryToShapeType(const std::string& entry)
|
||||||
// MESSAGE("GeomSelectionTools::entryToShapeType"<<entry );
|
{
|
||||||
TopoDS_Shape S = TopoDS_Shape();
|
|
||||||
TopAbs_ShapeEnum ShapeType = TopAbs_SHAPE;
|
TopAbs_ShapeEnum ShapeType = TopAbs_SHAPE;
|
||||||
_PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry);
|
if ( _PTR(SObject) aSO = SalomeApp_Application::getStudy()->FindObjectID(entry))
|
||||||
if (aSO){
|
{
|
||||||
_PTR(SObject) aRefSObj;
|
_PTR(SObject) aRefSObj;
|
||||||
GEOM::GEOM_Object_var aShape;
|
if ( aSO->ReferencedObject( aRefSObj )) // If selected object is a reference
|
||||||
// MESSAGE("Got a SO");
|
|
||||||
// If selected object is a reference
|
|
||||||
if ( aSO->ReferencedObject( aRefSObj ))
|
|
||||||
aSO = aRefSObj;
|
aSO = aRefSObj;
|
||||||
// MESSAGE("aSO->GetFatherComponent()->ComponentDataType(): " << aSO->GetFatherComponent()->ComponentDataType());
|
GEOM::GEOM_Object_var aShape = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aSO);
|
||||||
std::string aComponentType = aSO->GetFatherComponent()->ComponentDataType();
|
if ( !aShape->_is_nil() )
|
||||||
if (aComponentType == "GEOM" || aComponentType == "SHAPERSTUDY")
|
{
|
||||||
aShape = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aSO);
|
ShapeType= (TopAbs_ShapeEnum)aShape->GetShapeType();
|
||||||
if ( !aShape->_is_nil() ){
|
// if the Geom Object is a group
|
||||||
// MESSAGE("Got the Geom Object ");
|
if (aShape->GetType() == GEOM_GROUP)
|
||||||
// MESSAGE("Geom Object Type "<< aShape->GetType());
|
{
|
||||||
SalomeApp_Application* anApp = GetSalomeApplication();
|
GEOM::GEOM_Gen_var _geomEngine = aShape->GetGen();
|
||||||
if (anApp) {
|
GEOM::GEOM_IGroupOperations_wrap aGroupOp = _geomEngine->GetIGroupOperations();
|
||||||
// MESSAGE("Got Application");
|
ShapeType= (TopAbs_ShapeEnum)aGroupOp->GetType(aShape);
|
||||||
Engines::EngineComponent_var component = anApp->lcc()->FindOrLoad_Component( "FactoryServer", aComponentType.c_str());
|
}
|
||||||
GEOM::GEOM_Gen_var _geomEngine = GEOM::GEOM_Gen::_narrow(component);
|
// if not
|
||||||
// MESSAGE("Got GEOM engine");
|
else if ( ShapeType == TopAbs_COMPOUND )
|
||||||
// if the Geom Object is a group
|
{
|
||||||
if (aShape->GetType() == GEOM_GROUP){
|
TopoDS_Shape shape;
|
||||||
// MESSAGE("It's a group");
|
if (GEOMBase::GetShape(aShape, shape))
|
||||||
GEOM::GEOM_IGroupOperations_wrap aGroupOp =
|
{
|
||||||
_geomEngine->GetIGroupOperations();
|
TopoDS_Iterator it( shape );
|
||||||
ShapeType= (TopAbs_ShapeEnum)aGroupOp->GetType(aShape);
|
if ( it.More() )
|
||||||
}
|
ShapeType = it.Value().ShapeType();
|
||||||
// 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// MESSAGE("ShapeType returned is " << ShapeType);
|
|
||||||
return ShapeType;
|
return ShapeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,9 +229,8 @@ TopAbs_ShapeEnum GeomSelectionTools::entryToShapeType(std::string entry){
|
|||||||
*/
|
*/
|
||||||
TopAbs_ShapeEnum GeomSelectionTools:: getFirstSelectedShapeType()
|
TopAbs_ShapeEnum GeomSelectionTools:: getFirstSelectedShapeType()
|
||||||
{
|
{
|
||||||
Handle(SALOME_InteractiveObject) anIO;
|
Handle(SALOME_InteractiveObject) anIO=GeomSelectionTools::getFirstSelectedSalomeObject();
|
||||||
anIO=GeomSelectionTools::getFirstSelectedSalomeObject();
|
return entryToShapeType(anIO->getEntry());
|
||||||
return entryToShapeType(anIO->getEntry());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -58,10 +58,10 @@ public:
|
|||||||
Handle(SALOME_InteractiveObject) getFirstSelectedSalomeObject();
|
Handle(SALOME_InteractiveObject) getFirstSelectedSalomeObject();
|
||||||
std::string getFirstSelectedEntry();
|
std::string getFirstSelectedEntry();
|
||||||
std::string getEntryOfObject(Handle(SALOME_InteractiveObject));
|
std::string getEntryOfObject(Handle(SALOME_InteractiveObject));
|
||||||
std::string getNameFromEntry(std::string);
|
std::string getNameFromEntry(const std::string& );
|
||||||
std::string getFirstSelectedComponentDataType();
|
std::string getFirstSelectedComponentDataType();
|
||||||
TopAbs_ShapeEnum getFirstSelectedShapeType();
|
TopAbs_ShapeEnum getFirstSelectedShapeType();
|
||||||
TopAbs_ShapeEnum entryToShapeType(std::string );
|
TopAbs_ShapeEnum entryToShapeType(const std::string& );
|
||||||
GeomAbs_SurfaceType getFaceInformation(TopoDS_Shape);
|
GeomAbs_SurfaceType getFaceInformation(TopoDS_Shape);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -107,17 +107,14 @@ bool SMESH_NumberFilter::isOk (const SUIT_DataOwner* theDataOwner) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Get GEOM engine
|
// Get GEOM engine
|
||||||
Engines::EngineComponent_var comp =
|
GEOM::GEOM_Gen_var geomEngine = aGeomObj->GetGen();
|
||||||
SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "GEOM" );
|
if ( CORBA::is_nil( geomEngine ))
|
||||||
GEOM::GEOM_Gen_var geomEngine = GEOM::GEOM_Gen::_narrow( comp );
|
|
||||||
if ( CORBA::is_nil( geomEngine ) )
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Get shape from geom object and verify its parameters
|
// Get shape from geom object and verify its parameters
|
||||||
GEOM_Client aGeomClient;
|
GEOM_Client aGeomClient;
|
||||||
TopoDS_Shape aShape = aGeomClient.GetShape(geomEngine.in(), aGeomObj);
|
TopoDS_Shape aShape = aGeomClient.GetShape(geomEngine.in(), aGeomObj);
|
||||||
if (aShape.IsNull() ||
|
if (aShape.IsNull() || !myShapeTypes.Contains(aShape.ShapeType()))
|
||||||
!myShapeTypes.Contains(aShape.ShapeType()))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (myIsClosedOnly && aShape.ShapeType() == TopAbs_SHELL && !aShape.Closed())
|
if (myIsClosedOnly && aShape.ShapeType() == TopAbs_SHELL && !aShape.Closed())
|
||||||
@ -129,16 +126,11 @@ bool SMESH_NumberFilter::isOk (const SUIT_DataOwner* theDataOwner) const
|
|||||||
if (aMainShape.IsNull())
|
if (aMainShape.IsNull())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool isFound = false;
|
TopExp_Explorer anExp (aMainShape, aShape.ShapeType());
|
||||||
TopAbs_ShapeEnum aShapeType = aShape.ShapeType();
|
for (; anExp.More(); anExp.Next())
|
||||||
TopExp_Explorer anExp (aMainShape, aShapeType);
|
if (anExp.Current() == aShape)
|
||||||
for (; anExp.More(); anExp.Next()) {
|
|
||||||
if (anExp.Current() == aShape) {
|
|
||||||
isFound = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
if (!anExp.More())
|
||||||
}
|
|
||||||
if (!isFound)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,12 +97,12 @@
|
|||||||
|
|
||||||
#include "SMESH_version.h"
|
#include "SMESH_version.h"
|
||||||
|
|
||||||
#include "SMESH_ControlsDef.hxx"
|
|
||||||
#include "SMESH_Actor.h"
|
#include "SMESH_Actor.h"
|
||||||
#include "SMESH_ActorUtils.h"
|
#include "SMESH_ActorUtils.h"
|
||||||
#include "SMESH_Client.hxx"
|
#include "SMESH_Client.hxx"
|
||||||
|
#include "SMESH_Comment.hxx"
|
||||||
|
#include "SMESH_ControlsDef.hxx"
|
||||||
#include "SMESH_ScalarBarActor.h"
|
#include "SMESH_ScalarBarActor.h"
|
||||||
#include <SMESH_Comment.hxx>
|
|
||||||
#include "SMESH_TypeFilter.hxx"
|
#include "SMESH_TypeFilter.hxx"
|
||||||
|
|
||||||
// SALOME GUI includes
|
// SALOME GUI includes
|
||||||
@ -5068,8 +5068,9 @@ bool SMESHGUI::isSelectionCompatible()
|
|||||||
SALOME_ListIteratorOfListIO It( selected );
|
SALOME_ListIteratorOfListIO It( selected );
|
||||||
for ( ; isCompatible && It.More(); It.Next())
|
for ( ; isCompatible && It.More(); It.Next())
|
||||||
isCompatible =
|
isCompatible =
|
||||||
( strcmp("GEOM", It.Value()->getComponentDataType()) == 0 ) ||
|
( strcmp("GEOM", It.Value()->getComponentDataType()) == 0 ) ||
|
||||||
( strcmp("SMESH", It.Value()->getComponentDataType()) == 0 );
|
( strcmp("SHAPERSTUDY", It.Value()->getComponentDataType()) == 0 ) ||
|
||||||
|
( strcmp("SMESH", It.Value()->getComponentDataType()) == 0 );
|
||||||
|
|
||||||
return isCompatible;
|
return isCompatible;
|
||||||
}
|
}
|
||||||
@ -6332,8 +6333,6 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
|
|||||||
|
|
||||||
// componentName is used for encoding of entries when storing them in IParameters
|
// componentName is used for encoding of entries when storing them in IParameters
|
||||||
std::string componentName = myComponentSMESH->ComponentDataType();
|
std::string componentName = myComponentSMESH->ComponentDataType();
|
||||||
//_PTR(SComponent) aSComponent = studyDS->FindComponent("GEOM");
|
|
||||||
//if (!aSComponent) return;
|
|
||||||
|
|
||||||
// IParameters
|
// IParameters
|
||||||
_PTR(AttributeParameter) ap = studyDS->GetModuleParameters("Interface Applicative",
|
_PTR(AttributeParameter) ap = studyDS->GetModuleParameters("Interface Applicative",
|
||||||
|
@ -3203,6 +3203,8 @@ bool SMESHGUI_FilterDlg::isValid() const
|
|||||||
myTable->GetThreshold(i, aName);
|
myTable->GetThreshold(i, aName);
|
||||||
|
|
||||||
std::vector<_PTR(SObject)> aList = SMESH::getStudy()->FindObjectByName(aName.toUtf8().constData(), "GEOM");
|
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) {
|
if (aList.size() == 0) {
|
||||||
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
|
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
|
||||||
tr("BAD_SHAPE_NAME").arg(aName));
|
tr("BAD_SHAPE_NAME").arg(aName));
|
||||||
|
@ -137,6 +137,8 @@ static TopoDS_Shape getShapeByName( const char* theName )
|
|||||||
{
|
{
|
||||||
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
|
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
|
||||||
SALOMEDS::Study::ListOfSObject_var aList = SMESH_Gen_i::getStudyServant()->FindObjectByName( theName, "GEOM" );
|
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 )
|
if ( aList->length() > 0 )
|
||||||
{
|
{
|
||||||
CORBA::Object_var anObj = aList[ 0 ]->GetObject();
|
CORBA::Object_var anObj = aList[ 0 ]->GetObject();
|
||||||
|
@ -196,10 +196,15 @@ bool SMESH_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
|
|||||||
SALOMEDS::SObject_ptr SMESH_Gen_i::ObjectToSObject(CORBA::Object_ptr theObject)
|
SALOMEDS::SObject_ptr SMESH_Gen_i::ObjectToSObject(CORBA::Object_ptr theObject)
|
||||||
{
|
{
|
||||||
SALOMEDS::SObject_wrap aSO;
|
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();
|
return aSO._retn();
|
||||||
}
|
}
|
||||||
|
@ -955,9 +955,7 @@ QFrame* StdMeshersGUI_CartesianParamCreator::buildFrame()
|
|||||||
if ( !shapeEntry.isEmpty() )
|
if ( !shapeEntry.isEmpty() )
|
||||||
{
|
{
|
||||||
// find origin
|
// find origin
|
||||||
Handle(SALOME_InteractiveObject) io =
|
GEOM::GEOM_Object_var geomObj = SMESH::EntryToInterface<GEOM::GEOM_Object>( shapeEntry );
|
||||||
new SALOME_InteractiveObject( shapeEntry.toStdString().c_str(), "GEOM" );
|
|
||||||
GEOM::GEOM_Object_var geomObj = SMESH::IObjectToInterface<GEOM::GEOM_Object>( io );
|
|
||||||
if ( GEOMBase::GetShape( geomObj, shape ) && !shape.IsNull())
|
if ( GEOMBase::GetShape( geomObj, shape ) && !shape.IsNull())
|
||||||
{
|
{
|
||||||
Bnd_Box box;
|
Bnd_Box box;
|
||||||
@ -1394,9 +1392,7 @@ void StdMeshersGUI_CartesianParamCreator::onOptimalAxes(bool)
|
|||||||
if ( shapeEntry.isEmpty() )
|
if ( shapeEntry.isEmpty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Handle(SALOME_InteractiveObject) io =
|
GEOM::GEOM_Object_var geomObj = SMESH::EntryToInterface<GEOM::GEOM_Object>( shapeEntry );
|
||||||
new SALOME_InteractiveObject( shapeEntry.toStdString().c_str(), "GEOM" );
|
|
||||||
GEOM::GEOM_Object_var geomObj = SMESH::IObjectToInterface<GEOM::GEOM_Object>( io );
|
|
||||||
if ( geomObj->_is_nil() )
|
if ( geomObj->_is_nil() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -288,9 +288,7 @@ QString StdMeshersGUI_QuadrangleParamCreator::storeParams() const
|
|||||||
{
|
{
|
||||||
QListWidgetItem* item = myShapesList->item(i);
|
QListWidgetItem* item = myShapesList->item(i);
|
||||||
QString entry = item->data( Qt::UserRole ).toString();
|
QString entry = item->data( Qt::UserRole ).toString();
|
||||||
Handle(SALOME_InteractiveObject) io =
|
GEOM::GEOM_Object_var go = SMESH::EntryToInterface<GEOM::GEOM_Object>( entry );
|
||||||
new SALOME_InteractiveObject( entry.toStdString().c_str(), "GEOM" );
|
|
||||||
GEOM::GEOM_Object_var go = GEOMBase::ConvertIOinGEOMObject( io );
|
|
||||||
if ( !go->_is_nil() )
|
if ( !go->_is_nil() )
|
||||||
goList[ nbShapes++ ] = go;
|
goList[ nbShapes++ ] = go;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user