]> Creatis software - creaVtk.git/commitdiff
#3495 Extrude normals conflict
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Sat, 22 Oct 2022 08:58:05 +0000 (10:58 +0200)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Sat, 22 Oct 2022 08:58:05 +0000 (10:58 +0200)
bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataNormals.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
index c48f31c9bd7235b7cf6f514e14c7c3d5963fedd0..5c0ddab5284d55b2e98517e7c520b65d604c6dce 100644 (file)
@@ -38,7 +38,6 @@ void PolyDataNormals::Process()
     
     if (bbGetInputIn()!=NULL)
     {
-  
         vtkPolyDataNormals* normal = vtkPolyDataNormals::New();
         normal->SetInputData( bbGetInputIn() );
         if (bbGetInputComputeType()==0)
@@ -136,8 +135,8 @@ void PolyDataNormals::Process()
     } else {
         bbSetOutputOut( NULL );
     }// if In
-    
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
@@ -148,32 +147,29 @@ void PolyDataNormals::bbUserSetDefaultValues()
     bbSetInputIn(NULL);
     bbSetOutputOut( NULL );
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
 void PolyDataNormals::bbUserInitializeProcessing()
 {
-
 //  THE INITIALIZATION METHOD BODY :
 //    Here does nothing 
 //    but this is where you should allocate the internal/output pointers 
-//    if any 
-
-  
+//    if any
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
 void PolyDataNormals::bbUserFinalizeProcessing()
 {
-
 //  THE FINALIZATION METHOD BODY :
 //    Here does nothing 
 //    but this is where you should desallocate the internal/output pointers 
 //    if any
-  
 }
-}
-// EO namespace bbcreaVtk
+
+}// EO namespace bbcreaVtk