-// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <vtkUnsignedCharArray.h>
#include <vtkImplicitBoolean.h>
-#include <vtkPassThroughFilter.h>
+#include <vtkPassThrough.h>
#include <vtkRenderer.h>
#include "utilities.h"
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
using namespace std;
SMESH_DeviceActor
::SMESH_DeviceActor()
{
- if(MYDEBUG) MESSAGE("SMESH_DeviceActor - "<<this);
+ MESSAGE("SMESH_DeviceActor - "<<this);
myIsShrinkable = false;
myIsShrunk = false;
myTransformFilter = VTKViewer_TransformFilter::New();
for(int i = 0; i < 6; i++)
- myPassFilter.push_back(vtkPassThroughFilter::New());
+ myPassFilter.push_back(vtkPassThrough::New());
// Orientation of faces
myIsFacesOriented = false;
SMESH_DeviceActor
::~SMESH_DeviceActor()
{
- if(MYDEBUG) MESSAGE("~SMESH_DeviceActor - "<<this);
+ MESSAGE("~SMESH_DeviceActor - "<<this);
myMapper->Delete();
// myPlaneCollection->Delete(); -- it is vtkSmartPointer
theLookupTable->SetRange(aScalars->GetRange());
theLookupTable->Build();
+ myMergeFilter->SetScalarsData(aDataSet);
+ aDataSet->Delete();
+ }
+ else if (Warping3D* aWarping3D = dynamic_cast<Warping3D*>(theFunctor.get())){
+
+ SMESH::Controls::Warping3D::WValues aValues;
+
+ aWarping3D->GetValues(aValues);
+ vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
+ vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
+
+ aDataSet->SetPoints(aGrid->GetPoints());
+
+ vtkIdType aNbCells = aValues.size();
+
+ vtkDoubleArray* aScalars = vtkDoubleArray::New();
+ aScalars->SetNumberOfComponents(1);
+ aScalars->SetNumberOfTuples(aNbCells);
+
+ vtkIdType aCellsSize = 3 * aNbCells;
+ vtkCellArray* aConnectivity = vtkCellArray::New();
+ aConnectivity->Allocate(aCellsSize, 0);
+
+ vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
+ aCellTypesArray->SetNumberOfComponents(1);
+ aCellTypesArray->Allocate(aNbCells* aCellTypesArray->GetNumberOfComponents());
+
+ Warping3D::WValues::const_iterator anIter = aValues.begin();
+ aNbCells = 0;
+ for (; anIter != aValues.end(); anIter++) {
+
+ const Warping3D::Value& aValue = *anIter;
+ vtkIdList* anIdList = vtkIdList::New();
+ anIdList->SetNumberOfIds(aValue.myPntIds.size());
+ bool isExist = true;
+ for (int i = 0; i < aValue.myPntIds.size(); ++i)
+ {
+ int aVTKId = myVisualObj->GetNodeVTKId(aValue.myPntIds[i]);
+ if (aVTKId < 0)
+ {
+ isExist = false;
+ break;
+ }
+ anIdList->SetId(i, aVTKId);
+ }
+ if (isExist)
+ {
+ aConnectivity->InsertNextCell(anIdList);
+ aCellTypesArray->InsertNextValue(VTK_POLYGON);
+ aScalars->SetValue(aNbCells, aValue.myWarp);
+ aNbCells++;
+ }
+ }
+ aCellTypesArray->SetNumberOfTuples(aNbCells);
+ aScalars->SetNumberOfTuples(aNbCells);
+
+ vtkIdTypeArray* aCellLocationsArray = vtkIdTypeArray::New();
+ aCellLocationsArray->SetNumberOfComponents(1);
+ aCellLocationsArray->SetNumberOfTuples(aNbCells);
+
+ aConnectivity->InitTraversal();
+ vtkIdType const* pts(nullptr);
+ for (vtkIdType idType = 0, npts; aConnectivity->GetNextCell(npts, pts); idType++)
+ aCellLocationsArray->SetValue(idType, aConnectivity->GetTraversalLocation(npts));
+
+ aDataSet->SetCells(aCellTypesArray, aCellLocationsArray, aConnectivity);
+ SetUnstructuredGrid(aDataSet);
+
+ aDataSet->GetCellData()->SetScalars(aScalars);
+ aScalars->Delete();
+
+ theLookupTable->SetRange(aScalars->GetRange());
+ theLookupTable->Build();
+
myMergeFilter->SetScalarsData(aDataSet);
aDataSet->Delete();
}
anID = myExtractGeometry->GetNodeObjId(theVtkID);
vtkIdType aRetID = myVisualObj->GetNodeObjId(anID);
- if(MYDEBUG) MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; anID = "<<anID<<"; aRetID = "<<aRetID);
+ MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; anID = "<<anID<<"; aRetID = "<<aRetID);
return aRetID;
}
vtkDataSet* aDataSet = myMergeFilter->GetOutput();
vtkIdType anID = myVisualObj->GetNodeVTKId(theObjID);
double* aCoord = (anID >=0 && anID < aDataSet->GetNumberOfPoints()) ? aDataSet->GetPoint(anID) : NULL;
- if(MYDEBUG) MESSAGE("GetNodeCoord - theObjID = "<<theObjID<<"; anID = "<<anID);
+ MESSAGE("GetNodeCoord - theObjID = "<<theObjID<<"; anID = "<<anID);
return aCoord;
}
return -1;
vtkIdType aRetID = myVisualObj->GetElemObjId(anId3);
- if(MYDEBUG)
- MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anId2 = "<<anId2<<"; anId3 = "<<anId3<<"; aRetID = "<<aRetID);
+
+ MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anId2 = "<<anId2<<"; anId3 = "<<anId3<<"; aRetID = "<<aRetID);
return aRetID;
}
vtkDataSet* aDataSet = myVisualObj->GetUnstructuredGrid();
vtkIdType aGridID = myVisualObj->GetElemVTKId(theObjID);
vtkCell* aCell = (aGridID >= 0 ) ? aDataSet->GetCell(aGridID) : NULL;
- if(MYDEBUG)
- MESSAGE("GetElemCell - theObjID = "<<theObjID<<"; aGridID = "<<aGridID);
+
+ MESSAGE("GetElemCell - theObjID = "<<theObjID<<"; aGridID = "<<aGridID);
return aCell;
}