X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk_creaVtk_PKG%2Fsrc%2FbbcreaVtkLinearExtrusionFilter.cxx;h=678efe5f3a63f556834ca75a5819605f5487e8d0;hb=500bc2ff1c3fe51a9ce94324dee722fb2f7bfd36;hp=5d0ea977c3e1ba62ad0f761a7419814bcba95914;hpb=7be08bdfdb30264f4aa4a82b842cbce9d3cd5fb1;p=creaVtk.git diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx index 5d0ea97..678efe5 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx @@ -3,7 +3,7 @@ //===== #include "bbcreaVtkLinearExtrusionFilter.h" #include "bbcreaVtkPackage.h" - +#include namespace bbcreaVtk { @@ -15,7 +15,6 @@ BBTK_BLACK_BOX_IMPLEMENTATION(LinearExtrusionFilter,bbtk::AtomicBlackBox); //===== void LinearExtrusionFilter::Process() { - // THE MAIN PROCESSING METHOD BODY // Here we simply set the input 'In' value to the output 'Out' // And print out the output value @@ -29,83 +28,96 @@ void LinearExtrusionFilter::Process() // (the one provided in the attribute 'type' of the tag 'input') // bbSetOutputOut( bbGetInputIn() ); // std::cout << "Output value = " <Delete(); + extrude=NULL; + } + if (triangleFilter!=NULL) + { + triangleFilter->Delete(); + triangleFilter=NULL; + } + if (bbGetInputIn()!=NULL) { - if (extrude!=NULL) - { - extrude->Delete(); - } - if (triangleFilter!=NULL) - { - triangleFilter->Delete(); - } + std::vector dir = bbGetInputDirection(); + extrude = vtkLinearExtrusionFilter::New(); + triangleFilter = vtkTriangleFilter::New(); - extrude = vtkLinearExtrusionFilter::New(); - triangleFilter = vtkTriangleFilter::New(); + extrude->SetInputData( bbGetInputIn() ); extrude->SetExtrusionTypeToNormalExtrusion(); - std::vector dir = bbGetInputDirection(); if (dir.size()==3) { extrude->SetVector( dir[0],dir[1],dir[2] ); } else { extrude->SetVector(1, 0, 0); } - extrude->SetScaleFactor( bbGetInputScalarFactor() ); + // extrude->SetScaleFactor( bbGetInputScalarFactor() * (-1) ); + extrude->SetScaleFactor( bbGetInputScalarFactor() ); extrude->Update(); triangleFilter->SetInputData( extrude->GetOutput() ); triangleFilter->Update( ); - bbSetOutputOut( triangleFilter->GetOutput() ); - } // if bbGetInputIn + + vtkPolyData *outputPolydata = triangleFilter->GetOutput(); + if (bbGetInputScalarFactor()>1 ) + { + vtkReverseSense * reverseSense = vtkReverseSense::New(); + reverseSense->SetInputData( triangleFilter->GetOutput() ); + reverseSense->ReverseNormalsOff(); + reverseSense->ReverseCellsOn(); + reverseSense->Update(); + outputPolydata=reverseSense->GetOutput(); + } + bbSetOutputOut( outputPolydata ); + } else { + bbSetOutputOut( NULL ); + }// if bbGetInputIn } + //===== // 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 LinearExtrusionFilter::bbUserSetDefaultValues() { - // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX // Here we initialize the input 'In' to 0 - extrude = NULL; triangleFilter = NULL; bbSetInputIn(NULL); - std::vector dir; dir.push_back(1); dir.push_back(0); dir.push_back(0); bbSetInputDirection( dir ); bbSetInputScalarFactor(0); - + 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 LinearExtrusionFilter::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 LinearExtrusionFilter::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