]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkPlaneWidget.cxx
#3478 PointPickerNearest
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkPlaneWidget.cxx
index 869a8f7e58c20346ef43798a1568d4b0db629ec0..32043789232fbf01d68a5fe662e559e62019a8c7 100644 (file)
@@ -10,12 +10,45 @@ namespace bbcreaVtk
 
 void boxcreaVtkPlaneWidget::Execute()  // virutal
 {
-   box->bbSetOutputOut( box->_boxcreavtkplanewidget.GetPlaneSource()->GetOutput()  );
-       box->bbSignalOutputModification(std::string("Out"));
-       box->bbSetOutputCenter( box->_boxcreavtkplanewidget.GetCenter() );
-       box->bbSignalOutputModification(std::string("Center"));
-       box->bbSetOutputNormal( box->_boxcreavtkplanewidget.GetNormal() );
-       box->bbSignalOutputModification(std::string("Normal"));
+    std::vector<double> center = _box->_boxcreavtkplanewidget.GetCenter();
+    std::vector<double> normal = _box->_boxcreavtkplanewidget.GetNormal();
+    double  delta   = 0.00000001;
+    bool    ok      = false;
+    
+    // 0 Center and Normal change
+    // 1 Center change
+    // 2 Normal change
+    if ( (_ReactiveType==0) ||  (_ReactiveType==1) )
+    {
+        if (abs(_cxBack-center[0])>delta ) ok=true;
+        if (abs(_cyBack-center[1])>delta ) ok=true;
+        if (abs(_czBack-center[2])>delta ) ok=true;
+    }// if ReacitivityType 1 3
+    if ( (_ReactiveType==0) ||  (_ReactiveType==2) )
+    {
+        if (abs(_nxBack-normal[0])>delta ) ok=true;
+        if (abs(_nyBack-normal[1])>delta ) ok=true;
+        if (abs(_nzBack-normal[2])>delta ) ok=true;
+    }// if ReacitivityType 2 3
+
+    if ( ok==true )
+    {
+        _cxBack = center[0];
+        _cyBack = center[1];
+        _czBack = center[2];
+        _nxBack = normal[0];
+        _nyBack = normal[1];
+        _nzBack = normal[2];
+        _box->bbSetOutputOut( _box->_boxcreavtkplanewidget.GetPlaneSource()->GetOutput()  );
+        _box->bbSetOutputCenter( center );
+        _box->bbSetOutputNormal( normal );
+//EED 2022-01-08
+//       _box->bbSignalOutputModification(std::string("Out"));
+//       _box->bbSignalOutputModification(std::string("Center"));
+//       _box->bbSignalOutputModification(std::string("Normal"));
+        _box->bbSignalOutputModification();
+
+    }
 }
 
 //----------------------------------------------------------------------------------------------
@@ -30,7 +63,6 @@ BBTK_BLACK_BOX_IMPLEMENTATION(PlaneWidget,bbtk::AtomicBlackBox);
 //===== 
 void PlaneWidget::Process()
 {
-
 // THE MAIN PROCESSING METHOD BODY
 //   Here we simply set the input 'In' value to the output 'Out'
 //   And print out the output value
@@ -42,8 +74,6 @@ void PlaneWidget::Process()
 //      (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 ((bbGetInputIn()==NULL) || (bbGetInputRenderer()==NULL))
        {
                bbSetOutputOut( NULL );
@@ -59,57 +89,76 @@ void PlaneWidget::Process()
                _boxcreavtkplanewidget.SetRepresentation( bbGetInputRepresentation() );
                _boxcreavtkplanewidget.SetOrigin( bbGetInputOrigin() );
         _boxcreavtkplanewidget.SetNormalIn( bbGetInputNormalIn() );
+        _boxcreavtkplanewidget._ReactiveType=bbGetInputReactiveType();
                _boxcreavtkplanewidget.Process();
                
                bbSetOutputOut( _boxcreavtkplanewidget.GetPlaneSource()->GetOutput() );
                bbSetOutputCenter( _boxcreavtkplanewidget.GetCenter() );
                bbSetOutputNormal( _boxcreavtkplanewidget.GetNormal() );
+        int sizeN=bbGetInputOrigin().size();
+        int sizeC=_boxcreavtkplanewidget.GetCenter().size();
+        printf("EED PlaneWidget::Process OriginIn.size=%d     CenterOut.size=%d \n", sizeN, sizeC);
+        if (sizeN==3) 
+        {
+            double nx = bbGetInputOrigin()[0];
+            double ny = bbGetInputOrigin()[1];
+            double nz = bbGetInputOrigin()[2];
+            printf("EED PlaneWidget::Process OriginIn=%f %f %f  \n", nx,ny,nz);
+        }
+        if (sizeC==3)
+        {
+            double cx =_boxcreavtkplanewidget.GetCenter()[0];
+            double cy =_boxcreavtkplanewidget.GetCenter()[1];
+            double cz =_boxcreavtkplanewidget.GetCenter()[2];
+            printf("EED PlaneWidget::Process CenterOut=%f %f %f \n", cx,cy,cz);
+        }
        }
-       
 }
+
 //===== 
 // 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 PlaneWidget::bbUserSetDefaultValues()
 {
-
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
-
-   bbSetInputActive(false);
-   bbSetInputIn(NULL);
-   bbSetInputResolution(60);
-   bbSetInputRepresentation(1);
-   bbSetInputRenderer(NULL);
-   bbSetOutputOut(NULL);
-   _boxcreavtkplanewidget.box = this;
+    _boxcreavtkplanewidget._box            = this;
+    _boxcreavtkplanewidget._cxBack         = -10000000;
+    _boxcreavtkplanewidget._cyBack         = -10000000;
+    _boxcreavtkplanewidget._czBack         = -10000000;
+    _boxcreavtkplanewidget._ReactiveType   = 0;
+    
+    bbSetInputActive(false);
+    bbSetInputIn(NULL);
+    bbSetInputResolution(60);
+    bbSetInputRepresentation(1);
+    bbSetInputRenderer(NULL);
+    bbSetInputReactiveType( _boxcreavtkplanewidget._ReactiveType );
+    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 PlaneWidget::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 PlaneWidget::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