]> Creatis software - creaVtk.git/commitdiff
#3488 Extrusion Boxes
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Mon, 11 Jul 2022 08:16:05 +0000 (10:16 +0200)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Mon, 11 Jul 2022 08:16:05 +0000 (10:16 +0200)
bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.h [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.h [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataNormals.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataNormals.h
bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.h [new file with mode: 0644]

diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.cxx
new file mode 100644 (file)
index 0000000..b23dbf2
--- /dev/null
@@ -0,0 +1,112 @@
+//===== 
+// 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)
+//===== 
+#include "bbcreaVtkExtrusion.h"
+#include "bbcreaVtkPackage.h"
+
+#include <vtkTrimmedExtrusionFilter.h>
+#include <vtkLinearExtrusionFilter.h>
+#include <vtkTriangleFilter.h>
+
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,Extrusion)
+BBTK_BLACK_BOX_IMPLEMENTATION(Extrusion,bbtk::AtomicBlackBox);
+//===== 
+// 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 Extrusion::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+//   Here we simply set the input 'In' value to the output 'Out'
+//   And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+//    void bbSet{Input|Output}NAME(const TYPE&)
+//    const TYPE& bbGet{Input|Output}NAME() const 
+//    Where :
+//    * NAME is the name of the input/output
+//      (the one provided in the attribute 'name' of the tag 'input')
+//    * TYPE is the C++ type of the input/output
+//      (the one provided in the attribute 'type' of the tag 'input')
+//    bbSetOutputOut( bbGetInputIn() );
+//    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+  
+    if (bbGetInputIn()!=NULL)
+    {
+        if ((bbGetInputType()>=0) && (bbGetInputType()<=1))
+        {
+            vtkTrimmedExtrusionFilter *extrusion = vtkTrimmedExtrusionFilter::New();
+            extrusion->SetExtrusionDirection(1,1,1);
+            extrusion->SetInputData( bbGetInputIn() );
+            extrusion->SetTrimSurfaceData( bbGetInputIn2() );
+            if (bbGetInputType()==0)
+            {
+                extrusion->SetExtrusionStrategy(vtkTrimmedExtrusionFilter::BOUNDARY_EDGES);
+            } else {
+                extrusion->SetExtrusionStrategy(vtkTrimmedExtrusionFilter::ALL_EDGES);
+            }
+            extrusion->Update();
+            bbSetOutputOut( extrusion->GetTrimSurface() );
+        }  // if Type 0 1
+            
+        if (bbGetInputType()==2)
+        {
+            // Apply linear extrusion
+             vtkLinearExtrusionFilter *extrude=vtkLinearExtrusionFilter::New();
+             extrude->SetInputData( bbGetInputIn() );
+             extrude->SetExtrusionTypeToNormalExtrusion();
+             extrude->SetVector(0, -1, 0);
+             extrude->SetScaleFactor(-7);
+             extrude->Update();
+             vtkTriangleFilter *triangleFilter = vtkTriangleFilter::New();
+            triangleFilter->SetInputData( extrude->GetOutput() );
+            triangleFilter->Update( );
+             bbSetOutputOut( triangleFilter->GetOutput() );
+        } // if Type 2
+        
+    } // 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 Extrusion::bbUserSetDefaultValues()
+{
+
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+   bbSetInputIn(NULL);
+    bbSetInputType(0);
+
+}
+//===== 
+// 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 Extrusion::bbUserInitializeProcessing()
+{
+
+//  THE INITIALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should allocate the internal/output pointers 
+//    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 Extrusion::bbUserFinalizeProcessing()
+{
+
+//  THE FINALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should desallocate the internal/output pointers 
+//    if any
+  
+}
+}
+// EO namespace bbcreaVtk
+
+
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.h b/bbtk_creaVtk_PKG/src/bbcreaVtkExtrusion.h
new file mode 100644 (file)
index 0000000..63d9482
--- /dev/null
@@ -0,0 +1,55 @@
+//===== 
+// 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)
+//===== 
+#ifndef __bbcreaVtkExtrusion_h_INCLUDED__
+#define __bbcreaVtkExtrusion_h_INCLUDED__
+
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkPolyData.h>
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT Extrusion
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(Extrusion,bbtk::AtomicBlackBox);
+//===== 
+// 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)
+//===== 
+    BBTK_DECLARE_INPUT(In,vtkPolyData*);
+    BBTK_DECLARE_INPUT(In2,vtkPolyData*);
+    BBTK_DECLARE_INPUT(Type,int);
+    BBTK_DECLARE_OUTPUT(Out,vtkPolyData*);
+    BBTK_PROCESS(Process);
+    void Process();
+//===== 
+// 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)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(Extrusion,bbtk::AtomicBlackBox);
+BBTK_NAME("Extrusion");
+BBTK_AUTHOR("InfoDev");
+BBTK_DESCRIPTION("No Description.");
+BBTK_CATEGORY("empty");
+
+  BBTK_INPUT(Extrusion,In,"PolyData input ",vtkPolyData*,"");
+  BBTK_INPUT(Extrusion,In2,"PolyData input ",vtkPolyData*,"");
+  BBTK_INPUT(Extrusion,Type,"(default 0) Type 0:BOUNDARY_EDGES  1:ALL_EDGES",int,"");
+
+  BBTK_OUTPUT(Extrusion,Out,"PolyData output",vtkPolyData*,"");
+
+BBTK_END_DESCRIBE_BLACK_BOX(Extrusion);
+//===== 
+// 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)
+//===== 
+}
+// EO namespace bbcreaVtk
+
+#endif // __bbcreaVtkExtrusion_h_INCLUDED__
+
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.cxx
new file mode 100644 (file)
index 0000000..5d0ea97
--- /dev/null
@@ -0,0 +1,111 @@
+//===== 
+// 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)
+//===== 
+#include "bbcreaVtkLinearExtrusionFilter.h"
+#include "bbcreaVtkPackage.h"
+
+
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,LinearExtrusionFilter)
+BBTK_BLACK_BOX_IMPLEMENTATION(LinearExtrusionFilter,bbtk::AtomicBlackBox);
+//===== 
+// 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::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+//   Here we simply set the input 'In' value to the output 'Out'
+//   And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+//    void bbSet{Input|Output}NAME(const TYPE&)
+//    const TYPE& bbGet{Input|Output}NAME() const 
+//    Where :
+//    * NAME is the name of the input/output
+//      (the one provided in the attribute 'name' of the tag 'input')
+//    * TYPE is the C++ type of the input/output
+//      (the one provided in the attribute 'type' of the tag 'input')
+//    bbSetOutputOut( bbGetInputIn() );
+//    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+  
+    if (bbGetInputIn()!=NULL)
+    {
+        if (extrude!=NULL)
+        {
+            extrude->Delete();
+        }
+        if (triangleFilter!=NULL)
+        {
+            triangleFilter->Delete();
+        }
+
+        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->Update();
+        triangleFilter->SetInputData( extrude->GetOutput() );
+        triangleFilter->Update( );
+        bbSetOutputOut( triangleFilter->GetOutput() );
+    } // 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);
+
+}
+//===== 
+// 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 
+
+  
+}
+//===== 
+// 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
+
+
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.h b/bbtk_creaVtk_PKG/src/bbcreaVtkLinearExtrusionFilter.h
new file mode 100644 (file)
index 0000000..e68ba66
--- /dev/null
@@ -0,0 +1,58 @@
+//===== 
+// 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)
+//===== 
+#ifndef __bbcreaVtkLinearExtrusionFilter_h_INCLUDED__
+#define __bbcreaVtkLinearExtrusionFilter_h_INCLUDED__
+
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkPolyData.h>
+#include <vtkLinearExtrusionFilter.h>
+#include <vtkTriangleFilter.h>
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT LinearExtrusionFilter
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(LinearExtrusionFilter,bbtk::AtomicBlackBox);
+//===== 
+// 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)
+//===== 
+    BBTK_DECLARE_INPUT(In,vtkPolyData*);
+    BBTK_DECLARE_INPUT(Direction,std::vector<double>);
+    BBTK_DECLARE_INPUT(ScalarFactor,double);
+    BBTK_DECLARE_OUTPUT(Out,vtkPolyData*);
+  BBTK_PROCESS(Process);
+  void Process();
+    vtkLinearExtrusionFilter    *extrude;
+    vtkTriangleFilter           *triangleFilter;
+    
+//===== 
+// 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)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(LinearExtrusionFilter,bbtk::AtomicBlackBox);
+BBTK_NAME("LinearExtrusionFilter");
+BBTK_AUTHOR("InfoDev");
+BBTK_DESCRIPTION("No Description.");
+BBTK_CATEGORY("empty");
+  BBTK_INPUT(LinearExtrusionFilter,In,"PolyData input ",vtkPolyData*,"");
+  BBTK_INPUT(LinearExtrusionFilter,Direction,"default [1 0 0]   Direction  [x,y,z] ",std::vector<double>,"");
+  BBTK_INPUT(LinearExtrusionFilter,ScalarFactor,"(default 0) ",double,"");
+
+  BBTK_OUTPUT(LinearExtrusionFilter,Out,"PolyData output",vtkPolyData*,"");
+BBTK_END_DESCRIBE_BLACK_BOX(LinearExtrusionFilter);
+//===== 
+// 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)
+//===== 
+}
+// EO namespace bbcreaVtk
+
+#endif // __bbcreaVtkLinearExtrusionFilter_h_INCLUDED__
+
index 5db5dcb7f72018dbf6081671ab042cab4ab58f4a..92cf8834597d385f009340c36c9211d871a53d80 100644 (file)
@@ -6,6 +6,10 @@
 
 #include <vtkPolyDataNormals.h>
 
+#include <vtkPolyData.h>
+#include <vtkPointData.h>
+#include <vtkDataArray.h>
+#include <vtkMath.h>
 
 namespace bbcreaVtk
 {
@@ -17,7 +21,7 @@ BBTK_BLACK_BOX_IMPLEMENTATION(PolyDataNormals,bbtk::AtomicBlackBox);
 //===== 
 void PolyDataNormals::Process()
 {
-
+    printf("EED PolyDataNormals::Process Start\n");
 // THE MAIN PROCESSING METHOD BODY
 //   Here we simply set the input 'In' value to the output 'Out'
 //   And print out the output value
@@ -43,8 +47,87 @@ void PolyDataNormals::Process()
         }
         //        normal->SetFeatureAngle(60.0);
         normal->Update();
+        
+        // >>>>>>>>>>>>>>>>>>>> Calculate the MeanNormal
+        vtkPolyData     *polydata   = normal->GetOutput();
+        vtkPointData    *pointdata  = polydata->GetPointData();
+        vtkDataArray    *dataarray;
+        double          *pValue;
+        /*
+        int i,size=pointdata->GetNumberOfArrays();
+        for(i=0;i<size;i++)
+        {
+            dataarray=pointdata->GetArray(i);
+            printf("EED creaVtkCallbackPointPicker::Execute dataarray=%s  n=%ld p=%ld\n", dataarray->GetName(),dataarray->GetNumberOfValues() ,polydata->GetNumberOfPoints() );
+        } // for i
+        */
+        dataarray   = pointdata->GetNormals();
+        std::vector<double> meanNormal;
+        meanNormal.push_back(1);
+        meanNormal.push_back(0);
+        meanNormal.push_back(0);
+        if (dataarray!=NULL)
+        {
+            meanNormal[0]=0;
+            int i , size=dataarray->GetNumberOfTuples();
+            for (i=0; i<size; i++)
+            {
+                pValue        = dataarray->GetTuple3( i );
+                meanNormal[0] = meanNormal[0] + pValue[0];
+                meanNormal[1] = meanNormal[1] + pValue[1];
+                meanNormal[2] = meanNormal[2] + pValue[2];
+            }
+            
+            if (size!=0)
+            {
+                meanNormal[0] = meanNormal[0] / size;
+                meanNormal[1] = meanNormal[1] / size;
+                meanNormal[2] = meanNormal[2] / size;
+            } else {
+                meanNormal[0] = 1;
+                meanNormal[1] = 0;
+                meanNormal[2] = 0;
+            }
+        } // if dataarray
+        // <<<<<<<<<<<<<<<<<<<<< Calculate the MeanNormal
+
+        if ((bbGetInputType()==1) && (dataarray!=NULL) )
+        {
+            double meanN[3];
+            double wxyz[4];
+            double meanNormalresult[3];
+            double ang;
+            double crossResult[3];
+            printf("EED PolyDataNormals::Process 1\n");
+            meanN[0] = meanNormal[0];
+            meanN[1] = meanNormal[1];
+            meanN[2] = meanNormal[2];
+            printf("EED PolyDataNormals::Process 2\n");
+            int i , size=dataarray->GetNumberOfTuples();
+            for (i=0; i<size; i++)
+            {
+                printf("EED PolyDataNormals::Process 3\n");
+                pValue  = dataarray->GetTuple3( i );
+                ang     = vtkMath::AngleBetweenVectors( pValue, meanN );
+                
+                vtkMath::Cross(meanN,pValue,crossResult);
+                wxyz[0] = ang * bbGetInputParam();
+                wxyz[1] = crossResult[0];
+                wxyz[2] = crossResult[1];
+                wxyz[3] = crossResult[2];
+                printf("EED PolyDataNormals::Process 4\n");
+                vtkMath::RotateVectorByWXYZ(meanN, wxyz ,meanNormalresult);
+                dataarray->SetTuple3( i , meanNormalresult[0], meanNormalresult[1], meanNormalresult[2] );
+            } // for
+
+        } // if Type==1  &&  dataarray
+        bbSetOutputMeanNormal( meanNormal );
         bbSetOutputOut( normal->GetOutput() );
-    } // In
+    } // if In
+    
+    printf("EED PolyDataNormals::Process End\n");
+
+    
 }
 //===== 
 // 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)
index 0cc7b29fb6ad5c67ac2b17715a8d8a23502a2a86..1bcfafd052dd9cd208524029a756704d123e259d 100644 (file)
@@ -23,7 +23,11 @@ class bbcreaVtk_EXPORT PolyDataNormals
 //===== 
   BBTK_DECLARE_INPUT(In,vtkPolyData*);
   BBTK_DECLARE_INPUT(ComputeType,int);
+  BBTK_DECLARE_INPUT(Type,int);
+  BBTK_DECLARE_INPUT(Param,double);
   BBTK_DECLARE_OUTPUT(Out,vtkPolyData*);
+  BBTK_DECLARE_OUTPUT(MeanNormal,std::vector<double>);
+
   BBTK_PROCESS(Process);
   void Process();
 //===== 
@@ -36,9 +40,12 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(PolyDataNormals,bbtk::AtomicBlackBox);
   BBTK_AUTHOR("InfoDev");
   BBTK_DESCRIPTION("No Description.");
   BBTK_CATEGORY("empty");
-  BBTK_INPUT(PolyDataNormals,In,"Mesh input",vtkPolyData*,"");
-  BBTK_INPUT(PolyDataNormals,ComputeType,"(0 default) 0:points  1:Cells",int,"");
-  BBTK_OUTPUT(PolyDataNormals,Out,"Mesh output",vtkPolyData*,"");
+    BBTK_INPUT(PolyDataNormals,In,"Mesh input",vtkPolyData*,"");
+    BBTK_INPUT(PolyDataNormals,ComputeType,"(0 default) 0:points  1:Cells",int,"");
+    BBTK_INPUT(PolyDataNormals,Type,"(0 default) 0:Normal Action   1:Apply correction direction (try param=1)",int,"");
+    BBTK_INPUT(PolyDataNormals,Param,"(0 default) For Type=1 [-2 2] 0:parallel 1:NormalState -1:OpositState",double ,"");
+    BBTK_OUTPUT(PolyDataNormals,Out,"Mesh output",vtkPolyData*,"");
+    BBTK_OUTPUT(PolyDataNormals,MeanNormal,"Mean Normal",std::vector<double>,"");
 BBTK_END_DESCRIBE_BLACK_BOX(PolyDataNormals);
 //=====
 // 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)
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.cxx
new file mode 100644 (file)
index 0000000..886ff89
--- /dev/null
@@ -0,0 +1,124 @@
+//===== 
+// 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)
+//===== 
+#include "bbcreaVtkTrimmedExtrusionFilter.h"
+#include "bbcreaVtkPackage.h"
+
+
+
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,TrimmedExtrusionFilter)
+BBTK_BLACK_BOX_IMPLEMENTATION(TrimmedExtrusionFilter,bbtk::AtomicBlackBox);
+//===== 
+// 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 TrimmedExtrusionFilter::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+//   Here we simply set the input 'In' value to the output 'Out'
+//   And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+//    void bbSet{Input|Output}NAME(const TYPE&)
+//    const TYPE& bbGet{Input|Output}NAME() const 
+//    Where :
+//    * NAME is the name of the input/output
+//      (the one provided in the attribute 'name' of the tag 'input')
+//    * TYPE is the C++ type of the input/output
+//      (the one provided in the attribute 'type' of the tag 'input')
+//    bbSetOutputOut( bbGetInputIn() );
+//    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+    
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+    printf("EED Warning!!!   TrimmedExtrusionFilter::Process      Box not tested.......  \n");
+
+    
+    
+    
+    if ( (bbGetInputIn()!=NULL) && (bbGetInputIn2()!=NULL) )
+    {
+        if (extrusion!=NULL)
+        {
+            extrusion->Delete();
+        }
+        extrusion = vtkTrimmedExtrusionFilter::New();
+        std::vector<double> dir=bbGetInputDirection();
+        if (dir.size()==3)
+        {
+            extrusion->SetExtrusionDirection( dir[0],dir[1],dir[2] );
+        } else {
+            extrusion->SetExtrusionDirection( 1,0,0 );
+        }
+        extrusion->SetInputData( bbGetInputIn() );
+        extrusion->SetTrimSurfaceData( bbGetInputIn2() );
+        if (bbGetInputType()==0)
+        {
+            extrusion->SetExtrusionStrategy(vtkTrimmedExtrusionFilter::BOUNDARY_EDGES);
+        } else {
+            extrusion->SetExtrusionStrategy(vtkTrimmedExtrusionFilter::ALL_EDGES);
+        }
+        extrusion->Update();
+        bbSetOutputOut( extrusion->GetTrimSurface() );
+    } else {
+        printf("EED  Warning!!!  TrimmedExtrusionFilter::Process      Either In or In2 is missing \n");
+    } // 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 TrimmedExtrusionFilter::bbUserSetDefaultValues()
+{
+
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+    extrusion=NULL;
+    bbSetInputIn(NULL);
+    bbSetInputIn2(NULL);
+    bbSetInputType(0);
+
+    std::vector<double> dir;
+    dir.push_back(1);
+    dir.push_back(0);
+    dir.push_back(0);
+    bbSetInputDirection( dir );
+
+}
+//===== 
+// 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 TrimmedExtrusionFilter::bbUserInitializeProcessing()
+{
+
+//  THE INITIALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should allocate the internal/output pointers 
+//    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 TrimmedExtrusionFilter::bbUserFinalizeProcessing()
+{
+
+//  THE FINALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should desallocate the internal/output pointers 
+//    if any
+  
+}
+}
+// EO namespace bbcreaVtk
+
+
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.h b/bbtk_creaVtk_PKG/src/bbcreaVtkTrimmedExtrusionFilter.h
new file mode 100644 (file)
index 0000000..bad5740
--- /dev/null
@@ -0,0 +1,63 @@
+//===== 
+// 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)
+//===== 
+#ifndef __bbcreaVtkTrimmedExtrusionFilter_h_INCLUDED__
+#define __bbcreaVtkTrimmedExtrusionFilter_h_INCLUDED__
+
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkPolyData.h>
+#include <vtkTrimmedExtrusionFilter.h>
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT TrimmedExtrusionFilter
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(TrimmedExtrusionFilter,bbtk::AtomicBlackBox);
+//===== 
+// 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)
+//===== 
+    BBTK_DECLARE_INPUT(In,vtkPolyData*);
+    BBTK_DECLARE_INPUT(In2,vtkPolyData*);
+    BBTK_DECLARE_INPUT(Direction,std::vector<double>);
+
+    BBTK_DECLARE_INPUT(Type,int);
+    BBTK_DECLARE_OUTPUT(Out,vtkPolyData*);
+  BBTK_PROCESS(Process);
+  void Process();
+    
+    vtkTrimmedExtrusionFilter *extrusion;
+    
+//===== 
+// 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)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(TrimmedExtrusionFilter,bbtk::AtomicBlackBox);
+BBTK_NAME("TrimmedExtrusionFilter");
+BBTK_AUTHOR("InfoDev");
+BBTK_DESCRIPTION("No Description.");
+BBTK_CATEGORY("empty");
+
+    BBTK_INPUT(TrimmedExtrusionFilter,In,"PolyData input ",vtkPolyData*,"");
+    BBTK_INPUT(TrimmedExtrusionFilter,In2,"PolyData input ",vtkPolyData*,"");
+    BBTK_INPUT(TrimmedExtrusionFilter,Direction,"default [1 0 0]   Direction  [x,y,z] ",std::vector<double>,"");
+    BBTK_INPUT(TrimmedExtrusionFilter,Type,"(default 0) Type 0:BOUNDARY_EDGES  1:ALL_EDGES",int,"");
+
+    BBTK_OUTPUT(TrimmedExtrusionFilter,Out,"PolyData output",vtkPolyData*,"");
+
+
+BBTK_END_DESCRIBE_BLACK_BOX(TrimmedExtrusionFilter);
+//===== 
+// 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)
+//===== 
+}
+// EO namespace bbcreaVtk
+
+#endif // __bbcreaVtkTrimmedExtrusionFilter_h_INCLUDED__
+