X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_DeviceActor.cxx;h=0012cf37312d9861fc46f5dd966ba9d060f81690;hp=66cb811bf2ae2d9c8f37f8f9f87ae8fa20907b37;hb=499f29d24922cec66e41b41a0039a954993bc6df;hpb=1c1bbf6798782cb24bcab45d519817cff125ae5c diff --git a/src/OBJECT/SMESH_DeviceActor.cxx b/src/OBJECT/SMESH_DeviceActor.cxx index 66cb811bf..0012cf373 100644 --- a/src/OBJECT/SMESH_DeviceActor.cxx +++ b/src/OBJECT/SMESH_DeviceActor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -31,12 +31,13 @@ #include "SMESH_ControlsDef.hxx" #include "SMESH_ActorUtils.h" #include "SMESH_FaceOrientationFilter.h" -#include "VTKViewer_CellLocationsArray.h" +//#include "VTKViewer_CellLocationsArray.h" #include "VTKViewer_PolyDataMapper.h" #include #include #include +#include // VTK Includes #include @@ -76,7 +77,7 @@ static int MYDEBUG = 0; using namespace std; -vtkStandardNewMacro(SMESH_DeviceActor); +vtkStandardNewMacro(SMESH_DeviceActor) SMESH_DeviceActor @@ -88,14 +89,14 @@ SMESH_DeviceActor myIsShrunk = false; myIsHighlited = false; - myRepresentation = eSurface; + myRepresentation = SMESH_DeviceActor::EReperesent(-1); myProperty = vtkProperty::New(); myMapper = VTKViewer_PolyDataMapper::New(); myPlaneCollection = vtkPlaneCollection::New(); - vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor, - myPolygonOffsetUnits); + VTKViewer_Actor::GetDefaultPolygonOffsetParameters(myPolygonOffsetFactor, + myPolygonOffsetUnits); myMapper->UseLookupTableScalarRangeOn(); myMapper->SetColorModeToMapScalars(); @@ -160,7 +161,7 @@ SMESH_DeviceActor myTransformFilter->Delete(); - for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++) + for(size_t i = 0, iEnd = myPassFilter.size(); i < iEnd; i++) myPassFilter[i]->Delete(); myShrinkFilter->Delete(); @@ -306,7 +307,7 @@ SMESH_DeviceActor vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New(); // SetStoreIDMapping(true); - // myExtractUnstructuredGrid->Update(); + myExtractUnstructuredGrid->Update(); vtkUnstructuredGrid* aGrid = myExtractUnstructuredGrid->GetOutput(); aDataSet->ShallowCopy(aGrid); @@ -409,7 +410,7 @@ SMESH_DeviceActor aNbCells = 0; for(; anIter != aValues.end(); anIter++){ const Length2D::Value& aValue = *anIter; - int aNode[2] = { + vtkIdType aNode[2] = { myVisualObj->GetNodeVTKId(aValue.myPntId[0]), myVisualObj->GetNodeVTKId(aValue.myPntId[1]) }; @@ -425,12 +426,13 @@ SMESH_DeviceActor aCellTypesArray->SetNumberOfTuples( aNbCells ); aScalars->SetNumberOfTuples( aNbCells ); - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); + vtkIdTypeArray* aCellLocationsArray = vtkIdTypeArray::New(); aCellLocationsArray->SetNumberOfComponents( 1 ); aCellLocationsArray->SetNumberOfTuples( aNbCells ); aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ) + 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 ); @@ -473,7 +475,7 @@ SMESH_DeviceActor aNbCells = 0; for(; anIter != aValues.end(); anIter++){ const MultiConnection2D::Value& aValue = (*anIter).first; - int aNode[2] = { + vtkIdType aNode[2] = { myVisualObj->GetNodeVTKId(aValue.myPntId[0]), myVisualObj->GetNodeVTKId(aValue.myPntId[1]) }; @@ -489,12 +491,13 @@ SMESH_DeviceActor aCellTypesArray->SetNumberOfTuples( aNbCells ); aScalars->SetNumberOfTuples( aNbCells ); - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); + vtkIdTypeArray* aCellLocationsArray = vtkIdTypeArray::New(); aCellLocationsArray->SetNumberOfComponents( 1 ); aCellLocationsArray->SetNumberOfTuples( aNbCells ); aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ) + 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 ); @@ -570,7 +573,7 @@ SMESH_DeviceActor FreeEdges::TBorders::const_iterator anIter = aBorders.begin(); for(; anIter != aBorders.end(); anIter++){ const FreeEdges::Border& aBorder = *anIter; - int aNode[2] = { + vtkIdType aNode[2] = { myVisualObj->GetNodeVTKId(aBorder.myPntId[0]), myVisualObj->GetNodeVTKId(aBorder.myPntId[1]) }; @@ -583,12 +586,13 @@ SMESH_DeviceActor } } - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); + vtkIdTypeArray* aCellLocationsArray = vtkIdTypeArray::New(); aCellLocationsArray->SetNumberOfComponents( 1 ); aCellLocationsArray->SetNumberOfTuples( aNbCells ); aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ) + 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 ); @@ -600,7 +604,7 @@ SMESH_DeviceActor ( aPredicate = dynamic_cast(theFunctor.get()))) { myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); - vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node); + vtkIdType aNbNodes = FromSmIdType(myVisualObj->GetNbEntities(SMDSAbs_Node)); for( vtkIdType i = 0; i < aNbNodes; i++ ){ vtkIdType anObjId = myVisualObj->GetNodeObjId(i); if(aPredicate->IsSatisfy(anObjId)) @@ -615,11 +619,23 @@ SMESH_DeviceActor -unsigned long int +vtkMTimeType SMESH_DeviceActor ::GetMTime() { - // cout << this->myExtractUnstructuredGrid + // cout << "DA " << this + // << " GF " << myGeomFilter; + // if ( this->Property ) + // cout << " P " << this->Property->GetMTime(); + // if ( this->BackfaceProperty != NULL ) + // cout << " BP " << BackfaceProperty->GetMTime(); + // if ( this->Texture != NULL ) + // cout << " T " << this->Texture->GetMTime(); + // cout << " U " << this->GetUserTransformMatrixMTime() + // << " M " << this->MTime.GetMTime() << endl; + + // cout << "DA " << this + // << " GF " << myGeomFilter // << " " << this->Superclass::GetMTime() // << " " << myExtractGeometry->GetMTime() // << " " << myExtractUnstructuredGrid->GetMTime() @@ -628,7 +644,7 @@ SMESH_DeviceActor // << " " << myTransformFilter->GetMTime() // << " " << myFaceOrientationFilter->GetMTime() << endl; - unsigned long mTime = this->Superclass::GetMTime(); + vtkMTimeType mTime = this->Superclass::GetMTime(); mTime = max(mTime,myExtractGeometry->GetMTime()); mTime = max(mTime,myExtractUnstructuredGrid->GetMTime()); mTime = max(mTime,myMergeFilter->GetMTime()); @@ -736,7 +752,7 @@ SMESH_DeviceActor { bool aShowFaceOrientation = myIsFacesOriented; aShowFaceOrientation &= vtkLODActor::GetVisibility(); //GetVisibility(); -- avoid calling GetUnstructuredGrid() - aShowFaceOrientation &= myRepresentation == eSurface; + aShowFaceOrientation &= ( myRepresentation != ePoint ); myFaceOrientation->SetVisibility(aShowFaceOrientation); } @@ -745,6 +761,8 @@ void SMESH_DeviceActor ::SetRepresentation(EReperesent theMode) { + if ( myRepresentation == theMode ) + return; switch(theMode){ case ePoint: myGeomFilter->SetInside(true); @@ -765,6 +783,8 @@ SMESH_DeviceActor myGeomFilter->SetInside(false); myGeomFilter->SetWireframeMode(false); GetProperty()->SetRepresentation(theMode); + case eNoneRepr: + return; } SetMarkerEnabled(theMode == ePoint); myRepresentation = theMode; @@ -821,9 +841,9 @@ SMESH_DeviceActor } -int +vtkIdType SMESH_DeviceActor -::GetNodeObjId(int theVtkID) +::GetNodeObjId(vtkIdType theVtkID) { vtkIdType anID = theVtkID; @@ -837,7 +857,7 @@ SMESH_DeviceActor double* SMESH_DeviceActor -::GetNodeCoord(int theObjID) +::GetNodeCoord(vtkIdType theObjID) { vtkDataSet* aDataSet = myMergeFilter->GetOutput(); vtkIdType anID = myVisualObj->GetNodeVTKId(theObjID); @@ -846,10 +866,16 @@ SMESH_DeviceActor return aCoord; } +vtkIdType +SMESH_DeviceActor +::GetNodeVtkId(vtkIdType theObjID) +{ + return myVisualObj->GetNodeVTKId(theObjID); +} -int +vtkIdType SMESH_DeviceActor -::GetElemObjId(int theVtkID) +::GetElemObjId(vtkIdType theVtkID) { vtkIdType anId = myGeomFilter->GetElemObjId(theVtkID); if(anId < 0) @@ -873,7 +899,7 @@ SMESH_DeviceActor vtkCell* SMESH_DeviceActor -::GetElemCell(int theObjID) +::GetElemCell(vtkIdType theObjID) { vtkDataSet* aDataSet = myVisualObj->GetUnstructuredGrid(); vtkIdType aGridID = myVisualObj->GetElemVTKId(theObjID);