]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
[bos #42217][EDF 28921] Horseshoe with bodyfitting. Added vtkTriangleFilter to preven...
authorKonstantin Leontev <Konstantin.LEONTEV@opencascade.com>
Mon, 12 Aug 2024 11:42:04 +0000 (12:42 +0100)
committerKonstantin Leontev <Konstantin.LEONTEV@opencascade.com>
Mon, 12 Aug 2024 11:42:04 +0000 (12:42 +0100)
src/OBJECT/SMESH_DeviceActor.cxx
src/OBJECT/SMESH_DeviceActor.h
src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx

index be17fe3c30317da05193bf43c17d083e1e28f2d5..fafd40aef8d96324341beccbcdb2e73e8b899dd7 100644 (file)
@@ -43,6 +43,7 @@
 #include <vtkObjectFactory.h>
 #include <vtkShrinkFilter.h>
 #include <vtkShrinkPolyData.h>
+#include <vtkTriangleFilter.h>
 
 #include <vtkProperty.h>
 #include <vtkPolyData.h>
@@ -109,6 +110,7 @@ SMESH_DeviceActor
   myMergeFilter = vtkMergeFilter::New();
 
   myGeomFilter = VTKViewer_GeometryFilter::New();
+  myTriangleFilter = vtkTriangleFilter::New();
 
   myTransformFilter = VTKViewer_TransformFilter::New();
 
@@ -153,6 +155,7 @@ SMESH_DeviceActor
   myFaceOrientation->Delete();
 
   myGeomFilter->Delete();
+  myTriangleFilter->Delete();
 
   myTransformFilter->Delete();
 
@@ -251,9 +254,10 @@ SMESH_DeviceActor
 
     anId++; // 3
     myGeomFilter->SetInputConnection( myPassFilter[ anId ]->GetOutputPort() );
+    myTriangleFilter->SetInputConnection(myGeomFilter->GetOutputPort());
 
     anId++; // 4
-    myPassFilter[ anId ]->SetInputConnection( myGeomFilter->GetOutputPort() );
+    myPassFilter[ anId ]->SetInputConnection( myTriangleFilter->GetOutputPort() );
     myPassFilter[ anId + 1 ]->SetInputConnection( myPassFilter[ anId ]->GetOutputPort() );
 
     anId++; // 5
index c8f17d254e3d42f13c881b6a7a1b4b8833e5254c..f9a131f709601e0f41c00829657302387ea5f35c 100644 (file)
@@ -46,6 +46,7 @@ class vtkLookupTable;
 class vtkImplicitBoolean;
 class vtkPassThrough;
 class vtkPlaneCollection;
+class vtkTriangleFilter;
 
 class VTKViewer_Transform;
 class VTKViewer_TransformFilter;
@@ -182,6 +183,7 @@ class SMESHOBJECT_EXPORT SMESH_DeviceActor: public vtkLODActor{
 
   bool myStoreClippingMapping;
   VTKViewer_GeometryFilter *myGeomFilter;
+  vtkTriangleFilter* myTriangleFilter = nullptr;
   VTKViewer_TransformFilter *myTransformFilter;
   std::vector<vtkPassThrough*> myPassFilter;
 
index 7d38aa51084a1e8aecc48df74529d59a9d8f302b..a1af7d57277e84216a85a4f7ddc6fe5ca24b00a0 100644 (file)
@@ -70,6 +70,8 @@
 #include <vtkPolyDataMapper.h>
 #include <vtkProperty.h>
 #include <vtkCellData.h>
+#include <vtkTriangleFilter.h>
+#include <vtkGeometryFilter.h>
 
 // Qt includes
 #include <QComboBox>
@@ -108,6 +110,8 @@ namespace SMESH
     SALOME_Actor* myFaceOrientation;
     vtkPolyDataMapper* myFaceOrientationDataMapper;
     SMESH_FaceOrientationFilter* myFaceOrientationFilter;
+    vtkSmartPointer<vtkGeometryFilter> myGeometryFilter = nullptr;
+    vtkSmartPointer<vtkTriangleFilter> myTriangleFilter = nullptr;
 
   public:
     TElementSimulation (SalomeApp_Application* theApplication)
@@ -120,9 +124,15 @@ namespace SMESH
 
       myGrid = vtkUnstructuredGrid::New();
 
+      myGeometryFilter = vtkSmartPointer<vtkGeometryFilter>::New();
+      myGeometryFilter->SetInputData(myGrid);
+
+      myTriangleFilter = vtkSmartPointer<vtkTriangleFilter>::New();
+      myTriangleFilter->SetInputConnection(myGeometryFilter->GetOutputPort());
+
       // Create and display actor
       myMapper = vtkDataSetMapper::New();
-      myMapper->SetInputData(myGrid);
+      myMapper->SetInputConnection(myTriangleFilter->GetOutputPort());
 
       myPreviewActor = SALOME_Actor::New();
       myPreviewActor->PickableOff();
@@ -148,7 +158,7 @@ namespace SMESH
 
       // Orientation of faces
       myFaceOrientationFilter = SMESH_FaceOrientationFilter::New();
-      myFaceOrientationFilter->SetInputData(myGrid);
+      myFaceOrientationFilter->SetInputConnection(myTriangleFilter->GetOutputPort());
 
       myFaceOrientationDataMapper = vtkPolyDataMapper::New();
       myFaceOrientationDataMapper->SetInputConnection(myFaceOrientationFilter->GetOutputPort());
@@ -209,6 +219,9 @@ namespace SMESH
       myGrid->InsertNextCell(theType,anIds);
       anIds->Delete();
 
+      myGeometryFilter->Update();
+      myTriangleFilter->Update();
+
       myGrid->Modified();
 
       SetVisibility(true, theActor->GetFacesOriented(), false);