mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +05:00
Orientation of faces is added for new elements' preview (remark for issue 0017291: EDF 591 SMESH : Visualization of the orientation of the normal vector of the mesh faces)
This commit is contained in:
parent
6bf039b662
commit
7b09f5b72c
@ -34,6 +34,7 @@
|
||||
|
||||
#include <SMESH_Actor.h>
|
||||
#include <SMESH_ActorUtils.h>
|
||||
#include <SMESH_FaceOrientationFilter.h>
|
||||
#include <SMDS_Mesh.hxx>
|
||||
|
||||
// SALOME GUI inclues
|
||||
@ -59,6 +60,7 @@
|
||||
#include <vtkIdList.h>
|
||||
#include <vtkUnstructuredGrid.h>
|
||||
#include <vtkDataSetMapper.h>
|
||||
#include <vtkPolyDataMapper.h>
|
||||
#include <vtkProperty.h>
|
||||
|
||||
// Qt includes
|
||||
@ -90,6 +92,10 @@ namespace SMESH
|
||||
vtkDataSetMapper* myMapper;
|
||||
vtkUnstructuredGrid* myGrid;
|
||||
|
||||
SALOME_Actor* myFaceOrientation;
|
||||
vtkPolyDataMapper* myFaceOrientationDataMapper;
|
||||
SMESH_FaceOrientationFilter* myFaceOrientationFilter;
|
||||
|
||||
public:
|
||||
TElementSimulation (SalomeApp_Application* theApplication)
|
||||
{
|
||||
@ -124,6 +130,26 @@ namespace SMESH
|
||||
aBackProp->Delete();
|
||||
|
||||
myVTKViewWindow->AddActor(myPreviewActor);
|
||||
|
||||
// Orientation of faces
|
||||
myFaceOrientationFilter = SMESH_FaceOrientationFilter::New();
|
||||
myFaceOrientationFilter->SetInput(myGrid);
|
||||
|
||||
myFaceOrientationDataMapper = vtkPolyDataMapper::New();
|
||||
myFaceOrientationDataMapper->SetInput(myFaceOrientationFilter->GetOutput());
|
||||
|
||||
myFaceOrientation = SALOME_Actor::New();
|
||||
myFaceOrientation->PickableOff();
|
||||
myFaceOrientation->VisibilityOff();
|
||||
myFaceOrientation->SetMapper(myFaceOrientationDataMapper);
|
||||
|
||||
vtkProperty* anOrientationProp = vtkProperty::New();
|
||||
GetColor( "SMESH", "orientation_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 255, 255 ) );
|
||||
anOrientationProp->SetColor( anRGB[0], anRGB[1], anRGB[2] );
|
||||
myFaceOrientation->SetProperty( anOrientationProp );
|
||||
anOrientationProp->Delete();
|
||||
|
||||
myVTKViewWindow->AddActor(myFaceOrientation);
|
||||
}
|
||||
|
||||
typedef std::vector<vtkIdType> TVTKIds;
|
||||
@ -171,13 +197,14 @@ namespace SMESH
|
||||
|
||||
myGrid->Modified();
|
||||
|
||||
SetVisibility(true);
|
||||
SetVisibility(true, theActor->GetFacesOriented());
|
||||
}
|
||||
|
||||
|
||||
void SetVisibility (bool theVisibility)
|
||||
void SetVisibility (bool theVisibility, bool theShowOrientation = false)
|
||||
{
|
||||
myPreviewActor->SetVisibility(theVisibility);
|
||||
myFaceOrientation->SetVisibility(theShowOrientation);
|
||||
RepaintCurrentView();
|
||||
}
|
||||
|
||||
@ -186,12 +213,19 @@ namespace SMESH
|
||||
{
|
||||
if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) {
|
||||
myVTKViewWindow->RemoveActor(myPreviewActor);
|
||||
myVTKViewWindow->RemoveActor(myFaceOrientation);
|
||||
}
|
||||
myPreviewActor->Delete();
|
||||
myFaceOrientation->Delete();
|
||||
|
||||
myMapper->RemoveAllInputs();
|
||||
myMapper->Delete();
|
||||
|
||||
myFaceOrientationFilter->Delete();
|
||||
|
||||
myFaceOrientationDataMapper->RemoveAllInputs();
|
||||
myFaceOrientationDataMapper->Delete();
|
||||
|
||||
myGrid->Delete();
|
||||
}
|
||||
};
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include <SMESH_Actor.h>
|
||||
#include <SMESH_ActorUtils.h>
|
||||
#include <SMESH_FaceOrientationFilter.h>
|
||||
#include <SMDS_Mesh.hxx>
|
||||
|
||||
// SALOME GUI includes
|
||||
@ -63,6 +64,7 @@
|
||||
#include <vtkIdList.h>
|
||||
#include <vtkUnstructuredGrid.h>
|
||||
#include <vtkDataSetMapper.h>
|
||||
#include <vtkPolyDataMapper.h>
|
||||
#include <vtkProperty.h>
|
||||
#include <vtkCellType.h>
|
||||
|
||||
@ -155,6 +157,10 @@ namespace SMESH
|
||||
|
||||
vtkFloatingPointType myRGB[3], myBackRGB[3];
|
||||
|
||||
SALOME_Actor* myFaceOrientation;
|
||||
vtkPolyDataMapper* myFaceOrientationDataMapper;
|
||||
SMESH_FaceOrientationFilter* myFaceOrientationFilter;
|
||||
|
||||
public:
|
||||
TElementSimulation (SalomeApp_Application* theApplication)
|
||||
{
|
||||
@ -188,6 +194,26 @@ namespace SMESH
|
||||
myBackProp->Delete();
|
||||
|
||||
myVTKViewWindow->AddActor(myPreviewActor);
|
||||
|
||||
// Orientation of faces
|
||||
myFaceOrientationFilter = SMESH_FaceOrientationFilter::New();
|
||||
myFaceOrientationFilter->SetInput(myGrid);
|
||||
|
||||
myFaceOrientationDataMapper = vtkPolyDataMapper::New();
|
||||
myFaceOrientationDataMapper->SetInput(myFaceOrientationFilter->GetOutput());
|
||||
|
||||
myFaceOrientation = SALOME_Actor::New();
|
||||
myFaceOrientation->PickableOff();
|
||||
myFaceOrientation->VisibilityOff();
|
||||
myFaceOrientation->SetMapper(myFaceOrientationDataMapper);
|
||||
|
||||
vtkProperty* anOrientationProp = vtkProperty::New();
|
||||
GetColor( "SMESH", "orientation_color", myRGB[0], myRGB[1], myRGB[2], QColor( 255, 255, 255 ) );
|
||||
anOrientationProp->SetColor( myRGB[0], myRGB[1], myRGB[2] );
|
||||
myFaceOrientation->SetProperty( anOrientationProp );
|
||||
anOrientationProp->Delete();
|
||||
|
||||
myVTKViewWindow->AddActor(myFaceOrientation);
|
||||
}
|
||||
|
||||
typedef std::vector<vtkIdType> TVTKIds;
|
||||
@ -262,7 +288,7 @@ namespace SMESH
|
||||
|
||||
myPreviewActor->GetMapper()->Update();
|
||||
myPreviewActor->SetRepresentation( theMode );
|
||||
SetVisibility(true);
|
||||
SetVisibility(true, theActor->GetFacesOriented());
|
||||
|
||||
// restore normal orientation
|
||||
if ( aType == VTK_CONVEX_POINT_SET ) {
|
||||
@ -273,9 +299,10 @@ namespace SMESH
|
||||
}
|
||||
|
||||
|
||||
void SetVisibility (bool theVisibility)
|
||||
void SetVisibility (bool theVisibility, bool theShowOrientation = false)
|
||||
{
|
||||
myPreviewActor->SetVisibility(theVisibility);
|
||||
myFaceOrientation->SetVisibility(theShowOrientation);
|
||||
RepaintCurrentView();
|
||||
}
|
||||
|
||||
@ -284,12 +311,19 @@ namespace SMESH
|
||||
{
|
||||
if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) {
|
||||
myVTKViewWindow->RemoveActor(myPreviewActor);
|
||||
myVTKViewWindow->RemoveActor(myFaceOrientation);
|
||||
}
|
||||
myPreviewActor->Delete();
|
||||
myFaceOrientation->Delete();
|
||||
|
||||
myMapper->RemoveAllInputs();
|
||||
myMapper->Delete();
|
||||
|
||||
myFaceOrientationFilter->Delete();
|
||||
|
||||
myFaceOrientationDataMapper->RemoveAllInputs();
|
||||
myFaceOrientationDataMapper->Delete();
|
||||
|
||||
myGrid->Delete();
|
||||
|
||||
// myProp->Delete();
|
||||
|
Loading…
Reference in New Issue
Block a user