]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix for Bug IPAL19822
authorapo <apo@opencascade.com>
Wed, 28 May 2008 07:35:22 +0000 (07:35 +0000)
committerapo <apo@opencascade.com>
Wed, 28 May 2008 07:35:22 +0000 (07:35 +0000)
 - 4.x: REGRESSION - it is impossible to create any presentation on the filed of the attached med file.

src/PIPELINE/VISU_ElnoDisassembleFilter.cxx

index a1d17d6bb9137d536a6d2480dd1eb9ef78a5d489..eb84ca411ee418b04fa3925eba0835a98eb6cb33 100644 (file)
@@ -102,8 +102,8 @@ namespace
     vtkPointData *myOutputPointData;
     TPointsDataArray *myInputPointsArray;
     TPointsDataArray *myOutputPointsArray;
-    TElnoDataArray* myElnoPointDataArray;
-    TElnoDataArray* myElnoPointVectors;
+    TElnoDataArray* myElnoFullDataArray;
+    TElnoDataArray* myElnoPartialDataArray;
     TPointsDataArray *myElnoPointCoords;
     vtkIntArray* myInputPointsMapper;
     vtkIntArray* myOutputPointsMapper;
@@ -138,17 +138,21 @@ namespace
       myOutputPointData->Allocate( aNbPoints );
     
       vtkCellData *anInputCellData = theInput->GetCellData();
-      vtkDataArray* aVectors = anInputCellData->GetVectors();
 
-      myElnoPointDataArray = TElnoDataArray::New();
-      myElnoPointDataArray->SetName( "VISU_FIELD" );
-      myElnoPointDataArray->SetNumberOfComponents( myGetElnoNodeData.getNbComp() );
-      myElnoPointDataArray->SetNumberOfTuples( aNbPoints );
-
-      myElnoPointVectors = TElnoDataArray::New();
-      myElnoPointVectors->SetName( aVectors->GetName() );
-      myElnoPointVectors->SetNumberOfComponents( 3 );
-      myElnoPointVectors->SetNumberOfTuples( aNbPoints );
+      // To create a new copy of initial data for output
+      myElnoFullDataArray = TElnoDataArray::New();
+      myElnoFullDataArray->SetName( "VISU_FIELD" );
+      myElnoFullDataArray->SetNumberOfComponents( myGetElnoNodeData.getNbComp() );
+      myElnoFullDataArray->SetNumberOfTuples( aNbPoints );
+
+      // To create a new copy of partial initial data for output
+      myElnoPartialDataArray = TElnoDataArray::New();
+      // This partial data can be represented as in terms of vectors as scalars
+      if ( anInputCellData->GetVectors() != NULL ) 
+       myElnoPartialDataArray->SetNumberOfComponents( 3 );
+      else
+       myElnoPartialDataArray->SetNumberOfComponents( 1 );
+      myElnoPartialDataArray->SetNumberOfTuples( aNbPoints );
 
       myElnoPointCoords = TPointsDataArray::New();
       myElnoPointCoords->SetName( "ELNO_POINT_COORDS" );
@@ -186,11 +190,14 @@ namespace
       
       //anOutputPointData->PassData( anInputPointData );
       
-      myOutputPointData->AddArray( myElnoPointDataArray );
-      myElnoPointDataArray->Delete();
+      myOutputPointData->AddArray( myElnoFullDataArray );
+      myElnoFullDataArray->Delete();
       
-      myOutputPointData->SetVectors( myElnoPointVectors );
-      myElnoPointVectors->Delete();
+      if ( anInputCellData->GetVectors() != NULL ) 
+       myOutputPointData->SetVectors( myElnoPartialDataArray );
+      else
+       myOutputPointData->SetScalars( myElnoPartialDataArray );
+      myElnoPartialDataArray->Delete();
       
       myOutputPointData->AddArray( myElnoPointCoords );
       myElnoPointCoords->Delete();
@@ -224,10 +231,10 @@ namespace
          myOutputPointData->CopyData( myInputPointData, aCurrentPntId, aNewPntId );
          
          TElnoDataType* anElnoData = myGetElnoNodeData( aCellId, aPntId );
-         myElnoPointDataArray->SetTupleValue( aNewPntId,  anElnoData );
+         myElnoFullDataArray->SetTupleValue( aNewPntId,  anElnoData );
          
-         myElnoPointDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
-         myElnoPointVectors->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
+         myElnoFullDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
+         myElnoPartialDataArray->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
 
          myInputPointsMapper->GetTupleValue( aCurrentPntId, &anPointsMapperValues[ 0 ] );
          myOutputPointsMapper->SetTupleValue( aNewPntId, &anPointsMapperValues[ 0 ] );
@@ -285,10 +292,10 @@ namespace
          myOutputPointData->CopyData( myInputPointData, aCurrentPntId, aNewPntId );
          
          TElnoDataType* anElnoData = myGetElnoNodeData( aCellId, aPntId );
-         myElnoPointDataArray->SetTupleValue( aNewPntId, anElnoData );
+         myElnoFullDataArray->SetTupleValue( aNewPntId, anElnoData );
          
-         myElnoPointDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
-         myElnoPointVectors->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
+         myElnoFullDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
+         myElnoPartialDataArray->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] );
 
          myInputPointsMapper->GetTupleValue( aCurrentPntId, &anPointsMapperValues[ 0 ] );
          myOutputPointsMapper->SetTupleValue( aNewPntId, &anPointsMapperValues[ 0 ] );