mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-12 12:17:27 +05:00
Implementation a selection of a mesh entries from python.
This commit is contained in:
parent
4a591503f8
commit
7c1bf48314
@ -49,6 +49,7 @@
|
|||||||
#include <SalomeApp_Application.h>
|
#include <SalomeApp_Application.h>
|
||||||
#include <LightApp_SelectionMgr.h>
|
#include <LightApp_SelectionMgr.h>
|
||||||
#include <SVTK_RenderWindowInteractor.h>
|
#include <SVTK_RenderWindowInteractor.h>
|
||||||
|
#include <VTKViewer_Algorithm.h>
|
||||||
|
|
||||||
// OCCT includes
|
// OCCT includes
|
||||||
#include <TopAbs.hxx>
|
#include <TopAbs.hxx>
|
||||||
@ -62,6 +63,10 @@
|
|||||||
#include CORBA_SERVER_HEADER(SMESH_Gen)
|
#include CORBA_SERVER_HEADER(SMESH_Gen)
|
||||||
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
|
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
|
||||||
|
|
||||||
|
// VTK includes
|
||||||
|
#include <vtkActorCollection.h>
|
||||||
|
#include <vtkRenderer.h>
|
||||||
|
|
||||||
static CORBA::ORB_var anORB;
|
static CORBA::ORB_var anORB;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@ -892,17 +897,18 @@ public:
|
|||||||
{}
|
{}
|
||||||
virtual void Execute()
|
virtual void Execute()
|
||||||
{
|
{
|
||||||
SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI();
|
|
||||||
if( !aSMESHGUI )
|
|
||||||
return;
|
|
||||||
|
|
||||||
LightApp_SelectionMgr* selMgr = SMESH::GetSelectionMgr( aSMESHGUI );
|
LightApp_SelectionMgr* selMgr = 0;
|
||||||
|
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
|
||||||
|
if( anApp )
|
||||||
|
selMgr = dynamic_cast<LightApp_SelectionMgr*>( anApp->selectionMgr() );
|
||||||
|
|
||||||
if( !selMgr )
|
if( !selMgr )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
selMgr->clearFilters();
|
selMgr->clearFilters();
|
||||||
|
|
||||||
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( aSMESHGUI );
|
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow();
|
||||||
if(!aViewWindow)
|
if(!aViewWindow)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -960,26 +966,106 @@ void SMESH_Swig::select( const char* id, int id1, bool append ) {
|
|||||||
class TGetSelectionModeEvent : public SALOME_Event
|
class TGetSelectionModeEvent : public SALOME_Event
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef int TResult;
|
typedef SelectionMode TResult;
|
||||||
TResult myResult;
|
TResult myResult;
|
||||||
TGetSelectionModeEvent() : myResult( -1 ) {}
|
TGetSelectionModeEvent() : myResult( Undefined ) {}
|
||||||
virtual void Execute()
|
virtual void Execute()
|
||||||
{
|
{
|
||||||
SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI();
|
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( );
|
||||||
if( !aSMESHGUI )
|
|
||||||
return;
|
|
||||||
|
|
||||||
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( aSMESHGUI );
|
|
||||||
if(!aViewWindow)
|
if(!aViewWindow)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
myResult = aViewWindow->SelectionMode();
|
myResult = (SelectionMode) aViewWindow->SelectionMode();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Get selection mode of the active VTK View window.
|
\brief Get selection mode of the active VTK View window.
|
||||||
*/
|
*/
|
||||||
int SMESH_Swig::getSelectionMode() {
|
SelectionMode SMESH_Swig::getSelectionMode() {
|
||||||
return ProcessEvent( new TGetSelectionModeEvent() );
|
return ProcessEvent( new TGetSelectionModeEvent() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Event to set selection mode
|
||||||
|
*/
|
||||||
|
class TSetSelectionModeEvent : public SALOME_Event
|
||||||
|
{
|
||||||
|
SelectionMode mySelectionMode;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TSetSelectionModeEvent(const SelectionMode selectionMode) :
|
||||||
|
mySelectionMode(selectionMode)
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual void Execute()
|
||||||
|
{
|
||||||
|
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow();
|
||||||
|
if(!aViewWindow)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Selection_Mode prevMode = aViewWindow->SelectionMode();
|
||||||
|
bool changePointRepresentation = ( prevMode == NodeSelection && mySelectionMode != Node ) ||
|
||||||
|
(prevMode != NodeSelection && mySelectionMode == Node);
|
||||||
|
|
||||||
|
if( changePointRepresentation ) {
|
||||||
|
vtkRenderer *aRenderer = aViewWindow->getRenderer();
|
||||||
|
VTK::ActorCollectionCopy aCopy(aRenderer->GetActors());
|
||||||
|
vtkActorCollection *aCollection = aCopy.GetActors();
|
||||||
|
aCollection->InitTraversal();
|
||||||
|
while(vtkActor *anAct = aCollection->GetNextActor()){
|
||||||
|
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
|
||||||
|
if(anActor->GetVisibility()){
|
||||||
|
anActor->SetPointRepresentation(mySelectionMode == Node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aViewWindow->SetSelectionMode(mySelectionMode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void SMESH_Swig::setSelectionMode(SelectionMode selectionMode){
|
||||||
|
ProcessVoidEvent( new TSetSelectionModeEvent( selectionMode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
class TGetSelectedEvent : public SALOME_Event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef std::vector<int> TResult;
|
||||||
|
TResult myResult;
|
||||||
|
const char* myId;
|
||||||
|
|
||||||
|
TGetSelectedEvent( const char* id) :
|
||||||
|
myResult( std::vector<int>() ),
|
||||||
|
myId(id)
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual void Execute()
|
||||||
|
{
|
||||||
|
SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow();
|
||||||
|
if( !aViewWindow )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SVTK_Selector* aSelector = aViewWindow->GetSelector();
|
||||||
|
if( !aSelector )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SMESH_Actor* anActor = SMESH::FindActorByEntry( myId );
|
||||||
|
|
||||||
|
if ( !anActor || !anActor->hasIO() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
TColStd_IndexedMapOfInteger aMapIndex;
|
||||||
|
aSelector->GetIndex(anActor->getIO(),aMapIndex);
|
||||||
|
|
||||||
|
for( int i = 1; i <= aMapIndex.Extent(); i++ )
|
||||||
|
myResult.push_back( aMapIndex( i ) );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<int> SMESH_Swig::getSelected( const char* Mesh_Entry ) {
|
||||||
|
return ProcessEvent( new TGetSelectedEvent(Mesh_Entry) );
|
||||||
|
}
|
||||||
|
@ -45,8 +45,9 @@
|
|||||||
|
|
||||||
#include <SVTK_Selection.h>
|
#include <SVTK_Selection.h>
|
||||||
|
|
||||||
enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
Undefined = -1,
|
||||||
Node = NodeSelection,
|
Node = NodeSelection,
|
||||||
Cell = CellSelection,
|
Cell = CellSelection,
|
||||||
EdgeOfCell = EdgeOfCellSelection,
|
EdgeOfCell = EdgeOfCellSelection,
|
||||||
@ -56,7 +57,7 @@ enum
|
|||||||
Actor = ActorSelection,
|
Actor = ActorSelection,
|
||||||
Elem0D = Elem0DSelection,
|
Elem0D = Elem0DSelection,
|
||||||
Ball = BallSelection
|
Ball = BallSelection
|
||||||
};
|
} SelectionMode;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -128,8 +129,11 @@ public:
|
|||||||
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
|
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
|
||||||
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
|
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
|
||||||
|
|
||||||
|
void setSelectionMode( SelectionMode selectionMode );
|
||||||
|
std::vector<int> getSelected( const char* Mesh_Entry );
|
||||||
|
|
||||||
// --------------------- for the test purposes -----------------------
|
// --------------------- for the test purposes -----------------------
|
||||||
int getSelectionMode();
|
SelectionMode getSelectionMode();
|
||||||
void select( const char *id, std::vector<int> ids, bool append = false );
|
void select( const char *id, std::vector<int> ids, bool append = false );
|
||||||
void select( const char *id, int id1, bool append = false );
|
void select( const char *id, int id1, bool append = false );
|
||||||
|
|
||||||
|
@ -55,9 +55,10 @@ namespace std {
|
|||||||
|
|
||||||
|
|
||||||
/* Selection mode enumeration (corresponds to constants from the SALOME_Selection.h) */
|
/* Selection mode enumeration (corresponds to constants from the SALOME_Selection.h) */
|
||||||
enum
|
enum SelectionMode
|
||||||
{
|
{
|
||||||
Node,
|
Undefined = -1,
|
||||||
|
Node = 0,
|
||||||
Cell,
|
Cell,
|
||||||
EdgeOfCell,
|
EdgeOfCell,
|
||||||
Edge,
|
Edge,
|
||||||
@ -131,8 +132,11 @@ class SMESH_Swig
|
|||||||
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
|
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
|
||||||
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
|
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
|
||||||
|
|
||||||
|
void setSelectionMode( SelectionMode selectionMode);
|
||||||
|
std::vector<int> getSelected( const char* Mesh_Entry );
|
||||||
|
|
||||||
// --------------------- for the test purposes -----------------------
|
// --------------------- for the test purposes -----------------------
|
||||||
int getSelectionMode();
|
SelectionMode getSelectionMode();
|
||||||
void select( const char *id, std::vector<int> ids, bool append = false );
|
void select( const char *id, std::vector<int> ids, bool append = false );
|
||||||
void select( const char *id, int id1, bool append = false );
|
void select( const char *id, int id1, bool append = false );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user