]> Creatis software - creaVtk.git/commitdiff
#3540 GetPropertiesBySlice box vtk9itk5wx3-macos
authoreduardo.davila@creatis.insa-lyon.fr <eduardo.davila@creatis.insa-lyon.fr>
Fri, 24 Jul 2026 12:22:48 +0000 (14:22 +0200)
committereduardo.davila@creatis.insa-lyon.fr <eduardo.davila@creatis.insa-lyon.fr>
Fri, 24 Jul 2026 12:22:48 +0000 (14:22 +0200)
bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbg [new file with mode: 0644]
bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbs [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkGetPropertiesBySlice.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkGetPropertiesBySlice.h [new file with mode: 0644]

diff --git a/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbg b/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbg
new file mode 100644 (file)
index 0000000..141c46b
--- /dev/null
@@ -0,0 +1,321 @@
+# ----------------------------------
+# - BBTKGEditor v 1.6 BBG BlackBox Diagram file
+# - /Users/davila/Creatis/C24/creatools_source/creaVtk/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbg
+# ----------------------------------
+
+APP_START
+CATEGORY:<VOID>
+DESCRIPTION:Description ??
+AUTHOR:Author ??
+EXPORTFORMAT:0
+COMPLEXBOX:FALSE
+COMPLEXINPUTS:0
+BOXES:23
+BOX
+vtk:LoadHola:Box00
+ISEXEC:FALSE
+6.652119:93.160220:-900.000000
+28.202119:90.660220:-900.000000
+FIN_BOX
+BOX
+creaMaracasVisu:ViewerNV:Box01
+ISEXEC:FALSE
+-28.546753:12.988187:-900.000000
+15.333247:10.488187:-900.000000
+PORT
+nTypeView:"6 1 2 0"
+FIN_BOX
+BOX
+creaVtk:GetPropertiesBySlice:Box02
+ISEXEC:FALSE
+24.693444:-60.290749:-900.000000
+47.333444:-62.790749:-900.000000
+PORT
+Type:"1"
+FIN_BOX
+BOX
+creaMaracasVisu:wxVtkBaseView_Info:Box03
+ISEXEC:FALSE
+24.390846:-43.377455:-900.000000
+55.190846:-45.877455:-900.000000
+PORT
+InteractionType:"6"
+PORT
+WithEventPropagation:"true"
+FIN_BOX
+BOX
+vtk:vtkImageDataPointerRelay:Box04
+ISEXEC:FALSE
+52.384212:13.404796:-900.000000
+75.594212:10.904796:-900.000000
+FIN_BOX
+BOX
+creaVtk:ImageThreshold:Box09
+ISEXEC:FALSE
+53.073656:31.995238:-900.000000
+75.253656:29.495238:-900.000000
+PORT
+InValue:"255"
+PORT
+Lower:"1200"
+PORT
+OutValue:"0"
+PORT
+Upper:"5000"
+FIN_BOX
+BOX
+creaVtk:ImageContinuousErode3D:Box10
+ISEXEC:FALSE
+52.668350:24.105883:-900.000000
+75.833350:21.605883:-900.000000
+PORT
+Repetitions:"3"
+PORT
+X:"3"
+PORT
+Y:"3"
+PORT
+Z:"3"
+FIN_BOX
+BOX
+creaMaracasVisu:SetPosition:Box23
+ISEXEC:FALSE
+26.851866:-72.553623:-900.000000
+48.511866:-75.053623:-900.000000
+FIN_BOX
+BOX
+wx:LayoutLine:Box24
+ISEXEC:FALSE
+-80.551274:-80.391480:-900.000000
+-45.471274:-82.891480:-900.000000
+FIN_BOX
+BOX
+std:MagicBox:Box28
+ISEXEC:FALSE
+26.082985:-30.950316:-900.000000
+47.682985:-33.450316:-900.000000
+FIN_BOX
+BOX
+creaVtk:GetPropertiesBySlice:Box30
+ISEXEC:FALSE
+84.973904:-58.862414:-900.000000
+107.613904:-61.362414:-900.000000
+PORT
+Type:"1"
+FIN_BOX
+BOX
+creaMaracasVisu:wxVtkBaseView_Info:Box31
+ISEXEC:FALSE
+84.671306:-41.949121:-900.000000
+115.471306:-44.449121:-900.000000
+PORT
+InteractionType:"6"
+PORT
+WithEventPropagation:"true"
+FIN_BOX
+BOX
+creaMaracasVisu:SetPosition:Box32
+ISEXEC:FALSE
+88.587146:-70.986849:-900.000000
+110.247146:-73.486849:-900.000000
+FIN_BOX
+BOX
+creaVtk:GetPropertiesBySlice:Box35
+ISEXEC:FALSE
+138.411698:-59.185774:-900.000000
+161.051698:-61.685774:-900.000000
+PORT
+Type:"1"
+FIN_BOX
+BOX
+creaMaracasVisu:wxVtkBaseView_Info:Box36
+ISEXEC:FALSE
+138.109101:-42.272480:-900.000000
+168.909101:-44.772480:-900.000000
+PORT
+InteractionType:"6"
+PORT
+WithEventPropagation:"true"
+FIN_BOX
+BOX
+creaMaracasVisu:SetPosition:Box37
+ISEXEC:FALSE
+140.917521:-70.645756:-900.000000
+162.577521:-73.145756:-900.000000
+FIN_BOX
+BOX
+std:MagicBox:Box38
+ISEXEC:FALSE
+138.844785:-30.957716:-900.000000
+160.444785:-33.457716:-900.000000
+FIN_BOX
+BOX
+std:MagicBox:Box22
+ISEXEC:FALSE
+83.479028:-30.961889:-900.000000
+105.079028:-33.461889:-900.000000
+FIN_BOX
+BOX
+creaMaracasVisu:ColorLayerImageView:Box25
+ISEXEC:FALSE
+-85.816416:-17.545474:-900.000000
+-43.696416:-20.045474:-900.000000
+PORT
+ColorBarPosition:"-1000 -1000"
+PORT
+Opacity:"25"
+PORT
+TypeControlsInterface:"2"
+PORT
+lstTransparenceBoundaries:"0"
+FIN_BOX
+BOX
+wx:LayoutSplit:Box26
+ISEXEC:TRUE
+-43.007006:-96.452274:-900.000000
+-18.487006:-98.952274:-900.000000
+PORT
+Orientation:"H"
+PORT
+Proportion:"15"
+FIN_BOX
+BOX
+std:MultipleInputs:Box27
+ISEXEC:TRUE
+74.448938:-96.991851:-900.000000
+96.418938:-99.491851:-900.000000
+FIN_BOX
+BOX
+creaMaracasVisu:ImageChangeInformation:Box29
+ISEXEC:FALSE
+4.870756:68.969380:-900.000000
+28.020756:66.469380:-900.000000
+FIN_BOX
+BOX
+creaMaracasVisu:ViewerNV:Box33
+ISEXEC:FALSE
+-65.821471:-65.678798:-900.000000
+-21.941471:-68.178798:-900.000000
+FIN_BOX
+CONNECTIONS:40
+CONNECTION
+Box03:Direction:Box02:Orientation
+NumberOfControlPoints:0
+CONNECTION
+Box04:Out:Box02:Image
+NumberOfControlPoints:0
+CONNECTION
+Box09:Out:Box10:Image
+NumberOfControlPoints:0
+CONNECTION
+Box10:Out:Box04:In
+NumberOfControlPoints:0
+CONNECTION
+Box03:Point:Box02:InPoint_pixel
+NumberOfControlPoints:0
+CONNECTION
+Box02:OutPoint_pixel:Box23:Point
+NumberOfControlPoints:0
+CONNECTION
+Box28:Out:Box23:wxVtkBaseView
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView4:Box28:In
+NumberOfControlPoints:0
+CONNECTION
+Box28:Out:Box03:wxVtkBaseView3
+NumberOfControlPoints:0
+CONNECTION
+Box03:BoxChange:Box23:BoxExecute
+NumberOfControlPoints:0
+CONNECTION
+Box31:Direction:Box30:Orientation
+NumberOfControlPoints:0
+CONNECTION
+Box31:Point:Box30:InPoint_pixel
+NumberOfControlPoints:0
+CONNECTION
+Box30:OutPoint_pixel:Box32:Point
+NumberOfControlPoints:0
+CONNECTION
+Box31:BoxChange:Box32:BoxExecute
+NumberOfControlPoints:0
+CONNECTION
+Box04:Out:Box30:Image
+NumberOfControlPoints:0
+CONNECTION
+Box36:Direction:Box35:Orientation
+NumberOfControlPoints:0
+CONNECTION
+Box36:Point:Box35:InPoint_pixel
+NumberOfControlPoints:0
+CONNECTION
+Box35:OutPoint_pixel:Box37:Point
+NumberOfControlPoints:0
+CONNECTION
+Box38:Out:Box37:wxVtkBaseView
+NumberOfControlPoints:0
+CONNECTION
+Box36:BoxChange:Box37:BoxExecute
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView3:Box38:In
+NumberOfControlPoints:0
+CONNECTION
+Box04:Out:Box35:Image
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView2:Box22:In
+NumberOfControlPoints:0
+CONNECTION
+Box22:Out:Box32:wxVtkBaseView
+NumberOfControlPoints:0
+CONNECTION
+Box22:Out:Box31:wxVtkBaseView3
+NumberOfControlPoints:0
+CONNECTION
+Box38:Out:Box36:wxVtkBaseView3
+NumberOfControlPoints:0
+CONNECTION
+Box04:Out:Box25:In
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView2:Box25:WxVtkBaseView
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView3:Box25:WxVtkBaseView1
+NumberOfControlPoints:0
+CONNECTION
+Box01:wxVtkBaseView4:Box25:WxVtkBaseView2
+NumberOfControlPoints:0
+CONNECTION
+Box25:Widget:Box24:Widget3
+NumberOfControlPoints:0
+CONNECTION
+Box24:Widget:Box26:Widget1
+NumberOfControlPoints:0
+CONNECTION
+Box01:Widget:Box26:Widget2
+NumberOfControlPoints:0
+CONNECTION
+Box03:BoxChange:Box27:In2
+NumberOfControlPoints:0
+CONNECTION
+Box31:BoxChange:Box27:In4
+NumberOfControlPoints:0
+CONNECTION
+Box36:BoxChange:Box27:In6
+NumberOfControlPoints:0
+CONNECTION
+Box00:Out:Box29:In
+NumberOfControlPoints:0
+CONNECTION
+Box29:Out:Box09:In
+NumberOfControlPoints:0
+CONNECTION
+Box29:Out:Box01:In
+NumberOfControlPoints:0
+CONNECTION
+Box33:Widget:Box24:Widget5
+NumberOfControlPoints:0
+APP_END
diff --git a/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbs b/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbs
new file mode 100644 (file)
index 0000000..f8a48dd
--- /dev/null
@@ -0,0 +1,176 @@
+# ----------------------------------
+# - BBTKGEditor v 1.6 BBS BlackBox Script
+# - /Users/davila/Creatis/C24/creatools_source/creaVtk/bbtk_creaVtk_PKG/bbs/exampleGetPropertiesBySlice.bbs
+# ----------------------------------
+
+# BBTK GEditor Script
+# ----------------------
+
+include std
+include itkvtk
+include vtk
+include creaMaracasVisu
+include creaVtk
+include wx
+include std
+
+author "Author ??"
+description "Description ??"
+category "<VOID>"
+
+new vtk:LoadHola Box00
+
+new creaMaracasVisu:ViewerNV Box01
+  set Box01.nTypeView "6 1 2 0"
+
+new creaVtk:GetPropertiesBySlice Box02
+  set Box02.Type "1"
+
+new creaMaracasVisu:wxVtkBaseView_Info Box03
+  set Box03.InteractionType "6"
+  set Box03.WithEventPropagation "true"
+
+new vtk:vtkImageDataPointerRelay Box04
+
+new creaVtk:ImageThreshold Box09
+  set Box09.InValue "255"
+  set Box09.Lower "1200"
+  set Box09.OutValue "0"
+  set Box09.Upper "5000"
+
+new creaVtk:ImageContinuousErode3D Box10
+  set Box10.Repetitions "3"
+  set Box10.X "3"
+  set Box10.Y "3"
+  set Box10.Z "3"
+
+new creaMaracasVisu:SetPosition Box23
+
+new wx:LayoutLine Box24
+
+new std:MagicBox Box28
+
+new creaVtk:GetPropertiesBySlice Box30
+  set Box30.Type "1"
+
+new creaMaracasVisu:wxVtkBaseView_Info Box31
+  set Box31.InteractionType "6"
+  set Box31.WithEventPropagation "true"
+
+new creaMaracasVisu:SetPosition Box32
+
+new creaVtk:GetPropertiesBySlice Box35
+  set Box35.Type "1"
+
+new creaMaracasVisu:wxVtkBaseView_Info Box36
+  set Box36.InteractionType "6"
+  set Box36.WithEventPropagation "true"
+
+new creaMaracasVisu:SetPosition Box37
+
+new std:MagicBox Box38
+
+new std:MagicBox Box22
+
+new creaMaracasVisu:ColorLayerImageView Box25
+  set Box25.ColorBarPosition "-1000 -1000"
+  set Box25.Opacity "25"
+  set Box25.TypeControlsInterface "2"
+  set Box25.lstTransparenceBoundaries "0"
+
+new wx:LayoutSplit Box26
+  set Box26.Orientation "H"
+  set Box26.Proportion "15"
+
+new std:MultipleInputs Box27
+
+new creaMaracasVisu:ImageChangeInformation Box29
+
+new creaMaracasVisu:ViewerNV Box33
+
+
+connect Box03.Direction Box02.Orientation
+
+connect Box04.Out Box02.Image
+
+connect Box09.Out Box10.Image
+
+connect Box10.Out Box04.In
+
+connect Box03.Point Box02.InPoint_pixel
+
+connect Box02.OutPoint_pixel Box23.Point
+
+connect Box28.Out Box23.wxVtkBaseView
+
+connect Box01.wxVtkBaseView4 Box28.In
+
+connect Box28.Out Box03.wxVtkBaseView3
+
+connect Box03.BoxChange Box23.BoxExecute
+
+connect Box31.Direction Box30.Orientation
+
+connect Box31.Point Box30.InPoint_pixel
+
+connect Box30.OutPoint_pixel Box32.Point
+
+connect Box31.BoxChange Box32.BoxExecute
+
+connect Box04.Out Box30.Image
+
+connect Box36.Direction Box35.Orientation
+
+connect Box36.Point Box35.InPoint_pixel
+
+connect Box35.OutPoint_pixel Box37.Point
+
+connect Box38.Out Box37.wxVtkBaseView
+
+connect Box36.BoxChange Box37.BoxExecute
+
+connect Box01.wxVtkBaseView3 Box38.In
+
+connect Box04.Out Box35.Image
+
+connect Box01.wxVtkBaseView2 Box22.In
+
+connect Box22.Out Box32.wxVtkBaseView
+
+connect Box22.Out Box31.wxVtkBaseView3
+
+connect Box38.Out Box36.wxVtkBaseView3
+
+connect Box04.Out Box25.In
+
+connect Box01.wxVtkBaseView2 Box25.WxVtkBaseView
+
+connect Box01.wxVtkBaseView3 Box25.WxVtkBaseView1
+
+connect Box01.wxVtkBaseView4 Box25.WxVtkBaseView2
+
+connect Box25.Widget Box24.Widget3
+
+connect Box24.Widget Box26.Widget1
+
+connect Box01.Widget Box26.Widget2
+
+connect Box03.BoxChange Box27.In2
+
+connect Box31.BoxChange Box27.In4
+
+connect Box36.BoxChange Box27.In6
+
+connect Box00.Out Box29.In
+
+connect Box29.Out Box09.In
+
+connect Box29.Out Box01.In
+
+connect Box33.Widget Box24.Widget5
+
+
+
+# Complex input ports
+exec Box26
+exec Box27
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkGetPropertiesBySlice.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkGetPropertiesBySlice.cxx
new file mode 100644 (file)
index 0000000..0859085
--- /dev/null
@@ -0,0 +1,223 @@
+//===== 
+// 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 "bbcreaVtkGetPropertiesBySlice.h"
+#include "bbcreaVtkPackage.h"
+
+#include <vtkExtractVOI.h>
+#include <vtkImageThreshold.h>
+#include <vtkImageSeedConnectivity.h>
+#include <vtkDiscreteFlyingEdges2D.h>
+#include <vtkCenterOfMass.h>
+
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,GetPropertiesBySlice)
+BBTK_BLACK_BOX_IMPLEMENTATION(GetPropertiesBySlice,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 GetPropertiesBySlice::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')
+    
+    if (bbGetInputImage()!=NULL)
+    {
+        if (bbGetInputInPoint_pixel().size()==3)
+        {
+            double  spc[3];
+            int     dim[3];
+            int     ext[6];
+            int     voi[6];
+            double  range[2];
+            double  outPointDouble[3];
+            bbGetInputImage()->GetSpacing(spc);
+            bbGetInputImage()->GetExtent(ext);
+            dim[0] = ext[1]-ext[0]+1;
+            dim[1] = ext[3]-ext[2]+1;
+            dim[2] = ext[5]-ext[4]+1;
+            if (bbGetInputType()==1) // geometric center
+            {
+                std::vector<int> outPointInt;
+                
+                //Crop
+                vtkExtractVOI *crop = vtkExtractVOI::New();
+                crop->SetInputData( bbGetInputImage() );
+                crop->UpdateWholeExtent();
+//                crop->Modified();
+//                crop->Update();
+//                vtkImageData *image2D = crop->GetOutput();
+//                    image2D->SetExtent( 0 , dim[0]-1 , 0 , dim[1]-1 , 0 , 0 );
+                crop->GetOutput()->GetScalarRange( range );
+                
+                // Threshold
+                vtkImageThreshold *thresh = vtkImageThreshold::New();
+                thresh->SetInValue(255);
+                thresh->SetOutValue(0);
+                thresh->SetOutputScalarTypeToUnsignedChar();
+                
+                thresh->ThresholdBetween( range[1]/2, range[1] );
+                thresh->SetInputData( crop->GetOutput() );
+//                thresh->Update();
+
+                // Connectivity
+                vtkImageSeedConnectivity *connect = vtkImageSeedConnectivity::New();
+                connect->SetInputData( thresh->GetOutput() );
+                connect->SetInputConnectValue(255);
+                connect->SetOutputConnectedValue( 255 );
+                connect->SetOutputUnconnectedValue(0);
+                connect->RemoveAllSeeds();
+                connect->SetOutputConnectedValue( 255 );
+//                connect->Update();
+
+                //Geometric center
+
+                //vtkPolyData  perimeter
+                
+                vtkDiscreteFlyingEdges2D *discreteflyingedges2d = vtkDiscreteFlyingEdges2D::New();
+                discreteflyingedges2d->SetInputData( connect->GetOutput() );
+//              discreteflyingedges2d->Update();
+                
+                //vtkCenterOfMass
+                vtkCenterOfMass *centerofmass = vtkCenterOfMass::New();
+                centerofmass->SetUseScalarsAsWeights(false);
+                
+                centerofmass->SetInputData( discreteflyingedges2d->GetOutput() );
+//                centerofmass->Update();
+
+                connect->AddSeed( bbGetInputInPoint_pixel()[0] , bbGetInputInPoint_pixel()[1] , bbGetInputInPoint_pixel()[2] );
+
+                if (bbGetInputOrientation()==2)  // xy
+                {
+                    voi[0] = 0;
+                    voi[1] = dim[0]-1;
+                    voi[2] = 0;
+                    voi[3] = dim[1]-1;
+                    voi[4] = bbGetInputInPoint_pixel()[2];
+                    voi[5] = bbGetInputInPoint_pixel()[2];
+                    crop->SetVOI(voi);
+                    crop                    -> Update();
+                    thresh                  -> Update();
+                    connect                 -> Update();
+                    discreteflyingedges2d   -> Update();
+                    centerofmass            -> Update();
+                    centerofmass->GetCenter( outPointDouble );
+                    outPointInt.push_back( (int) round(outPointDouble[0]/spc[0]) );
+                    outPointInt.push_back( (int) round(outPointDouble[1]/spc[1]) );
+                    outPointInt.push_back( (int) round(outPointDouble[2]/spc[2]) );
+                } // if Orientation ==0 xy
+
+                if (bbGetInputOrientation()==1)  // xz
+                {
+                    voi[0] = 0;
+                    voi[1] = dim[0]-1;;
+                    voi[2] = bbGetInputInPoint_pixel()[1];
+                    voi[3] = bbGetInputInPoint_pixel()[1];
+                    voi[4] = 0;
+                    voi[5] = dim[2]-1;
+                    crop->SetVOI(voi);
+                    crop                    -> Update();
+                    thresh                  -> Update();
+                    connect                 -> Update();
+                    discreteflyingedges2d   -> Update();
+                    centerofmass            -> Update();
+                    centerofmass->GetCenter( outPointDouble );
+                    outPointInt.push_back( (int) round(outPointDouble[0]/spc[0]) );
+                    outPointInt.push_back( (int) round(outPointDouble[2]/spc[2]) );
+                    outPointInt.push_back( (int) round(outPointDouble[1]/spc[1]) );
+                } // if Orientation ==0 xy
+
+                if (bbGetInputOrientation()==0)  // yz
+                {
+                    voi[0] = bbGetInputInPoint_pixel()[0];
+                    voi[1] = bbGetInputInPoint_pixel()[0];
+                    voi[2] = 0;
+                    voi[3] = dim[1]-1;;
+                    voi[4] = 0;
+                    voi[5] = dim[2]-1;
+                    crop->SetVOI(voi);
+                    crop                    -> Update();
+                    thresh                  -> Update();
+                    connect                 -> Update();
+                    discreteflyingedges2d   -> Update();
+                    centerofmass            -> Update();
+                    centerofmass->GetCenter( outPointDouble );
+                    outPointInt.push_back( (int) round(outPointDouble[2]/spc[2]) );
+                    outPointInt.push_back( (int) round(outPointDouble[0]/spc[0]) );
+                    outPointInt.push_back( (int) round(outPointDouble[1]/spc[1]) );
+                } // if Orientation ==0 yz
+                                
+                //Clean Memory
+/*
+                crop                    -> Delete();
+                thresh                  -> Delete();
+                connect                 -> Delete();
+                discreteflyingedges2d   -> Delete();
+                centerofmass            -> Delete();
+*/
+                bbSetOutputImageConnected2D( connect->GetOutput() );
+                bbSetOutputPolyDataDiscreteflyingedges2D( discreteflyingedges2d->GetOutput() );
+                bbSetOutputValue( bbGetInputImage()->GetScalarComponentAsDouble( outPointInt[0],outPointInt[1],outPointInt[2], 0) );
+                bbSetOutputOutPoint_pixel( outPointInt );
+            } // if type == 1  geometric center
+        } else {
+            printf("Warnning! BBTK - GetPropertiesBySlice box. InPointPx size is not 3 \n");
+        } // if InPointPx size =3
+    } else {
+        printf("Warnning! BBTK - GetPropertiesBySlice box. Image in put is not set.\n");
+    } // if Image!=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 GetPropertiesBySlice::bbUserSetDefaultValues()
+{
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+            bbSetInputImage(NULL);
+            bbSetInputType(0);
+            bbSetInputOrientation(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 GetPropertiesBySlice::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 GetPropertiesBySlice::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/bbcreaVtkGetPropertiesBySlice.h b/bbtk_creaVtk_PKG/src/bbcreaVtkGetPropertiesBySlice.h
new file mode 100644 (file)
index 0000000..0c564b2
--- /dev/null
@@ -0,0 +1,62 @@
+//===== 
+// 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 __bbcreaVtkGetPropertiesBySlice_h_INCLUDED__
+#define __bbcreaVtkGetPropertiesBySlice_h_INCLUDED__
+
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkImageData.h>
+#include <vtkPolyData.h>
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT GetPropertiesBySlice
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(GetPropertiesBySlice,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(Image,vtkImageData*);
+    BBTK_DECLARE_INPUT(Orientation, int);
+    BBTK_DECLARE_INPUT(Type, int);
+    BBTK_DECLARE_INPUT(InPoint_pixel, std::vector<int>);
+    BBTK_DECLARE_OUTPUT(OutPoint_pixel,std::vector<int>);
+    BBTK_DECLARE_OUTPUT(Value,double);
+    BBTK_DECLARE_OUTPUT(ImageConnected2D,vtkImageData*);
+    BBTK_DECLARE_OUTPUT(PolyDataDiscreteflyingedges2D,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(GetPropertiesBySlice,bbtk::AtomicBlackBox);
+    BBTK_NAME("GetPropertiesBySlice");
+    BBTK_AUTHOR("Info-Dev");
+    BBTK_DESCRIPTION("No Description.");
+    BBTK_CATEGORY("empty");
+    BBTK_INPUT(GetPropertiesBySlice,Image,"Input image",vtkImageData*,"");
+    BBTK_INPUT(GetPropertiesBySlice,Orientation,"(default 0)  Orientation  0=xy  1=yz  2=xz",int,"");
+    BBTK_INPUT(GetPropertiesBySlice,Type,"(default 0) 0=nothing  1=Geometric center",int,"");
+    BBTK_INPUT(GetPropertiesBySlice,InPoint_pixel,"In point in pixel units",std::vector<int>,"");
+    BBTK_OUTPUT(GetPropertiesBySlice,OutPoint_pixel,"Out point in pixel units",std::vector<int>,"");
+    BBTK_OUTPUT(GetPropertiesBySlice,Value,"Value",double,"");
+    BBTK_OUTPUT(GetPropertiesBySlice,ImageConnected2D,"Image Connected 2D",vtkImageData*,"");
+    BBTK_OUTPUT(GetPropertiesBySlice,PolyDataDiscreteflyingedges2D,"PolyData Discrete Flying Edges 2D",vtkPolyData*,"");
+BBTK_END_DESCRIBE_BLACK_BOX(GetPropertiesBySlice);
+//===== 
+// 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 // __bbcreaVtkGetPropertiesBySlice_h_INCLUDED__
+