X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_Object.cxx;h=94cf59d5fed22152a22ca40ad3e87d85dde2f79c;hp=b4fcbf6dbf6563622362420662bc3275ae7a4b34;hb=db4fd22d08c1c2f80e854c94f0cc86fa3e052cf8;hpb=e69867dda8cb507785203efa283ad21baf5ff023 diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index b4fcbf6db..94cf59d5f 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -30,6 +30,7 @@ #include "SMDS_Mesh.hxx" #include "SMDS_PolyhedralVolumeOfNodes.hxx" +#include "SMDS_BallElement.hxx" #include "SMESH_Actor.h" #include "SMESH_ControlsDef.hxx" #include "SalomeApp_Application.h" @@ -43,7 +44,7 @@ #include #include #include - +#include #include #include @@ -279,7 +280,9 @@ void SMESH_VisualObjDef::buildPrs(bool buildGrid) //MESSAGE(myGrid->GetReferenceCount()); //MESSAGE( "Update - myGrid->GetNumberOfCells() = "<GetNumberOfCells() ); //MESSAGE( "Update - myGrid->GetNumberOfPoints() = "<GetNumberOfPoints() ); - if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"buildPrs.vtu" ); + if( MYDEBUGWITHFILES ) { + SMESH::WriteUnstructuredGrid( myGrid,"myPrs.vtu" ); + } } } @@ -417,7 +420,13 @@ void SMESH_VisualObjDef::buildElemPrs() aConnect.reserve(VTK_CELL_SIZE); SMDS_Mesh::CheckMemory(); // PAL16631 - + bool hasBalls = nbEnts[ SMDSAbs_Ball ] > 0; + vtkDataArray* aScalars = 0; + if(hasBalls) { + aScalars = vtkDataArray::CreateDataArray(VTK_DOUBLE); + aScalars->SetNumberOfComponents(1); + aScalars->SetNumberOfTuples(aNbCells); + } for ( int i = 0; i < nbTypes; i++ ) // iterate through all types of elements { if ( nbEnts[ aTypes[ i ] ] > 0 ) { @@ -475,8 +484,19 @@ void SMESH_VisualObjDef::buildElemPrs() } } } - aConnectivity->InsertNextCell( anIdList ); + vtkIdType aCurId = aConnectivity->InsertNextCell( anIdList ); aCellTypesArray->InsertNextValue( vtkElemType ); + + //Store diameters of the balls + if(aScalars) { + double aDiam = 0; + if(aType == SMDSAbs_Ball) { + if (const SMDS_BallElement* ball = dynamic_cast(anElem) ) { + aDiam = ball->GetDiameter(); + } + } + aScalars->SetTuple(aCurId,&aDiam); + } iElem++; } @@ -497,6 +517,7 @@ void SMESH_VisualObjDef::buildElemPrs() aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); myGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); + myGrid->GetCellData()->SetScalars(aScalars); aCellLocationsArray->Delete(); aCellTypesArray->Delete();