]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx
#3495 Extrude normals conflict
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkLinearExtrusionFilter.cxx
index f254fc431b509508fe0e8644ffef076e2c12dbe8..63cdfeafb4d1fecb705ca98abec50432909761f0 100644 (file)
@@ -45,6 +45,8 @@ void LinearExtrusionFilter::Process()
         std::vector<double>     dir             = bbGetInputDirection();
                                 extrude         = vtkLinearExtrusionFilter::New();
                                 triangleFilter  = vtkTriangleFilter::New();
+
+                
         extrude->SetInputData( bbGetInputIn() );
         extrude->SetExtrusionTypeToNormalExtrusion();
         if (dir.size()==3)
@@ -53,11 +55,25 @@ void LinearExtrusionFilter::Process()
         } else {
             extrude->SetVector(1, 0, 0);
         }
-        extrude->SetScaleFactor( bbGetInputScalarFactor() * (-1) );
+        //        extrude->SetScaleFactor( bbGetInputScalarFactor() * (-1) );
+        extrude->SetScaleFactor( bbGetInputScalarFactor()  );
         extrude->Update();
         triangleFilter->SetInputData( extrude->GetOutput() );
         triangleFilter->Update( );
-        bbSetOutputOut( triangleFilter->GetOutput() );
+        
+        vtkPolyData *outputPolydata = triangleFilter->GetOutput();
+        printf("EED LinearExtrusionFilter::Process A\n");
+        if (bbGetInputScalarFactor()>1 )
+        {
+            printf("EED LinearExtrusionFilter::Process B\n");
+            vtkReverseSense * reverseSense = vtkReverseSense::New();
+            reverseSense->SetInputData( triangleFilter->GetOutput() );
+            reverseSense->ReverseNormalsOff();
+            reverseSense->ReverseCellsOn();
+            reverseSense->Update();
+            outputPolydata=reverseSense->GetOutput();
+        }
+        bbSetOutputOut( outputPolydata );
     } else {
         bbSetOutputOut( NULL );
     }// if bbGetInputIn