//=====
#include "bbcreaVtkLinearExtrusionFilter.h"
#include "bbcreaVtkPackage.h"
-
+#include <vtkReverseSense.h>
namespace bbcreaVtk
{
//=====
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
// (the one provided in the attribute 'type' of the tag 'input')
// bbSetOutputOut( bbGetInputIn() );
// std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
-
+
+ if (extrude!=NULL)
+ {
+ extrude->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<double> dir = bbGetInputDirection();
+ extrude = vtkLinearExtrusionFilter::New();
+ triangleFilter = vtkTriangleFilter::New();
- extrude = vtkLinearExtrusionFilter::New();
- triangleFilter = vtkTriangleFilter::New();
+
extrude->SetInputData( bbGetInputIn() );
extrude->SetExtrusionTypeToNormalExtrusion();
- std::vector<double> 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()/3 );
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<double> 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