]> Creatis software - creaVtk.git/commitdiff
#3493 MeshManager
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Tue, 30 Aug 2022 15:06:00 +0000 (17:06 +0200)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Tue, 30 Aug 2022 15:06:00 +0000 (17:06 +0200)
bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkCreateMeshFromPoints.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkCutter.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkCutter.h
bbtk_creaVtk_PKG/src/bbcreaVtkMeshManager.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkMeshManager.h
bbtk_creaVtk_PKG/src/bbcreaVtkMeshManager_tool.cxx
bbtk_creaVtk_PKG/src/bbcreaVtkMeshManager_tool.h
lib/creaVtk/MeshManagerModel.cpp
lib/creaVtk/MeshManagerModel.h

index 3daea3442b25456357365b688b0ef28ffb411ff2..c1d7192e642d0df74cb1a40c03fdec9d38341661 100644 (file)
@@ -6,11 +6,11 @@
 
 // #include "vtkBooleanOperationPolyDataFilter.h"
 #include "vtkPolyDataBooleanFilter.h"
+#include "vtkPoints.h"
 
 #include "vtkCleanPolyData.h"
 #include "vtkTriangleFilter.h"
 
-
 namespace bbcreaVtk
 {
 
@@ -36,9 +36,19 @@ void BooleanOperationPolyDataFilter::Process()
 //    bbSetOutputOut( bbGetInputIn() );
 //    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
   
+    printf("EED  BooleanOperationPolyDataFilter::Process Start In1=%p     In2=%p\n", bbGetInputIn1(), bbGetInputIn2() );
+
+    
+
        if ((bbGetInputIn1()!=NULL)  && (bbGetInputIn2()!=NULL) )
        {
 
+        vtkPoints               *points1         = bbGetInputIn1()->GetPoints();
+        vtkPoints               *points2         = bbGetInputIn2()->GetPoints();
+        printf("EED BooleanOperationPolyDataFilter::Process  Number of points 1  %ld\n", points1->GetNumberOfPoints() );
+        printf("EED BooleanOperationPolyDataFilter::Process  Number of points 2 %ld\n", points2->GetNumberOfPoints() );
+
+        
 printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at the end of CreateMesh.. or create 2 new boxes\n");
 printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at the end of CreateMesh.. or create 2 new boxes\n");
 printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at the end of CreateMesh.. or create 2 new boxes\n");
@@ -95,11 +105,20 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
         }
  */
         
-               booleanOperation->Update();
-               bbSetOutputOut( booleanOperation->GetOutput() );
+        booleanOperation->Update();
+        vtkPoints *points = booleanOperation->GetOutput()->GetPoints();
+        if (points!=NULL)
+        {
+            bbSetOutputOut( booleanOperation->GetOutput() );
+        } else {
+            bbSetOutputOut( NULL );
+        } // if points!=NULL
        } else {
+        bbSetOutputOut( NULL );
                printf("EED Warnning!  BooleanOperationPolyDataFilter::Process   vtkPolyData In1 or In2  is EMPTY\n");
        } // if In1 In2 != NULL
+        
+    printf("EED  BooleanOperationPolyDataFilter::Process End \n" );
 }
 
 //===== 
index 3d6227fc45d9202a66d34c711c216e932bcd2969..4c444dd8fb467c9c9139eb7b60350973b668046c 100644 (file)
@@ -35,6 +35,12 @@ void CreateMeshFromPoints::Process()
                std::vector<double> lstY                = bbGetInputLstY();
                std::vector<double> lstZ                = bbGetInputLstZ();
                std::vector<int> lstIndexs              = bbGetInputLstIndexs();
+    
+    printf("CreateMeshFromPoints::Process: sizeX %d \n", lstX.size() );
+    printf("CreateMeshFromPoints::Process: sizeY %d \n", lstY.size() );
+    printf("CreateMeshFromPoints::Process: sizeZ %d \n", lstZ.size() );
+    printf("CreateMeshFromPoints::Process: lstIndexs %d \n", lstIndexs.size() );
+
                if ( (lstIndexs.size()<=1) || (lstX.size()==0) || (lstX.size()!=lstY.size()) || (lstY.size()!=lstZ.size()) )
                {
                        printf("Warnning! CreateMeshFromPoints::Process: List of points X Y Z  and LstIndexes is not correct\n");
@@ -58,7 +64,7 @@ void CreateMeshFromPoints::Process()
                        int iSeg1,iSeg2;
                        int iGeneral    =       0;
                        int     sizeLstIdexes=lstIndexs.size();
-                       for (i=0; i<sizeLstIdexes-1;i++)
+                       for (i=0; i<sizeLstIdexes-1; i++ )
                        {
                                sizeSegment1 = lstIndexs[i];
                                sizeSegment2 = lstIndexs[i+1];
@@ -76,8 +82,8 @@ void CreateMeshFromPoints::Process()
                                        triangleStrip->GetPointIds()->SetId(ii*2+1,iSeg2);
                                        iSeg1++;
                                        iSeg2++;
-                                       if (iSeg1>=maxSegment1) iSeg1=maxSegment1-1;
-                                       if (iSeg2>=maxSegment2) iSeg2=maxSegment2-1;
+                    if (iSeg1>=maxSegment1) { iSeg1=maxSegment1-1; }
+                    if (iSeg2>=maxSegment2) { iSeg2=maxSegment2-1; }
                                } // for ii 
                                iGeneral=iGeneral+sizeSegment1;
                                cells->InsertNextCell(triangleStrip);
index 82651c6971d86dafb2feb110795b039d3f519fbc..826d759336ef5e5f24c2d7d21f95299f8ce9b0c5 100644 (file)
@@ -33,7 +33,8 @@ void Cutter::Process()
   //  See example in:
   //  https://kitware.github.io/vtk-examples/site/Cxx/VisualizationAlgorithms/Cutter/
   
-    if (bbGetInputIn()!=NULL)
+    printf("EED Cutter::Process start this=%p   ImFu=%p \n ", this, bbGetInputImplicitFunction() );
+    if ( (bbGetInputActive()==true) && (bbGetInputIn()!=NULL) )
     {
         vtkCutter *cutter;
         cutter = vtkCutter::New();
@@ -44,6 +45,8 @@ void Cutter::Process()
     } else {
         bbSetOutputOut( NULL );
     }
+    
+    printf("EED Cutter::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)
@@ -53,6 +56,7 @@ void Cutter::bbUserSetDefaultValues()
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
 //   bbSetInputIn(NULL);
+    bbSetInputActive( true );
     bbSetOutputOut( NULL );
 }
 //===== 
index 35614e043eeea19febfd0338a2cd8f7ce3008730..9878972ec450ed1c47ddc889ab22813fb7a779ad 100644 (file)
@@ -21,6 +21,7 @@ class bbcreaVtk_EXPORT Cutter
 //===== 
 // 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(Active,bool);
   BBTK_DECLARE_INPUT(In,vtkPolyData*);
   BBTK_DECLARE_INPUT(ImplicitFunction,vtkImplicitFunction*);
   BBTK_DECLARE_OUTPUT(Out,vtkPolyData*);
@@ -37,6 +38,7 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(Cutter,bbtk::AtomicBlackBox);
   BBTK_DESCRIPTION("vtkCutter");
   BBTK_CATEGORY("empty");
 
+  BBTK_INPUT(Cutter,Active,"(default true) Active true/false)",bool,"");
   BBTK_INPUT(Cutter,In,"vtkPolyData input",vtkPolyData*,"");
   BBTK_INPUT(Cutter,ImplicitFunction,"vtkImpliciteFunction  ex.: vtkBox, vtkCone, vtkCylender, vtkPlane, vtkSphere(s), vtkQuadric, ETC.",vtkImplicitFunction*,"");
 
index cb4cca82146eacf3fbfeb8ca1810acf8ce9c1679..25be322b77ae54db2506b330d78485caec30fe62 100644 (file)
@@ -6,6 +6,23 @@
 namespace bbcreaVtk
 {
 
+MeshManagerModel_Box::MeshManagerModel_Box( MeshManager *box )
+{
+    mBox=box;
+}
+
+MeshManagerModel_Box::~MeshManagerModel_Box( )
+{
+}
+
+void MeshManagerModel_Box::RefreshOutputs( )
+{
+    mBox->bbSetOutputMeshBase( GetMeshBase() );
+    mBox->bbSetOutputMeshTemp( GetMeshTemp() );
+    mBox->bbSignalOutputModification();
+}
+
+
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,MeshManager)
 BBTK_BLACK_BOX_IMPLEMENTATION(MeshManager,bbtk::AtomicBlackBox);
 //===== 
@@ -26,14 +43,14 @@ void MeshManager::Process()
 //      (the one provided in the attribute 'type' of the tag 'input')
 //    bbSetOutputOut( bbGetInputIn() );
 //    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
-    if (meshManagerModel==NULL)
+    
+    if (meshManagerModel_Box==NULL)
     {
-        meshManagerModel = new MeshManagerModel();
-        meshManagerModel->SetMeshBase( bbGetInputMesh() );
-        bbSetOutputMeshBase( meshManagerModel->GetMeshBase() );
-        bbSetOutputMeshTemp( meshManagerModel->GetMeshTemp() );
-        bbSetOutputMeshManagerModel( meshManagerModel );
-    }
+        meshManagerModel_Box = new MeshManagerModel_Box(this);
+        meshManagerModel_Box->SetMeshBase( bbGetInputMesh() );
+        meshManagerModel_Box->RefreshOutputs();
+        bbSetOutputMeshManagerModel( meshManagerModel_Box );
+    } // if meshManagerModel_Box
 }
 
 //===== 
@@ -44,7 +61,7 @@ void MeshManager::bbUserSetDefaultValues()
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
 //   bbSetInputIn(0);
-    meshManagerModel = NULL;
+    meshManagerModel_Box = NULL;
     bbSetInputMesh(NULL);
 }
 
index 315ee5dcd947d313e21861f1d341aa7c39ba20a9..e4e389ae0c0131f618eaa1e179bb03c8fc7ecc90 100644 (file)
@@ -13,6 +13,8 @@
 namespace bbcreaVtk
 {
 
+class MeshManagerModel_Box;
+
 class bbcreaVtk_EXPORT MeshManager
  : 
    public bbtk::AtomicBlackBox
@@ -28,12 +30,25 @@ class bbcreaVtk_EXPORT MeshManager
   BBTK_PROCESS(Process);
   void Process();
     
-  MeshManagerModel *meshManagerModel;
+  MeshManagerModel_Box *meshManagerModel_Box;
 //===== 
 // 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)
 //===== 
 };
 
+class MeshManagerModel_Box : public MeshManagerModel
+{
+public :
+    MeshManagerModel_Box(MeshManager *box);
+    ~MeshManagerModel_Box();
+    virtual void RefreshOutputs();
+protected:
+private:
+    MeshManager *mBox;
+};
+
+
+
 BBTK_BEGIN_DESCRIBE_BLACK_BOX(MeshManager,bbtk::AtomicBlackBox);
   BBTK_NAME("MeshManager");
   BBTK_AUTHOR("InfoDev");
index cb12791578fb80198f7e91ada973999e0e5f57e8..bda31e1b44a90818c75af3cb1514f33a543bbc5e 100644 (file)
@@ -27,25 +27,37 @@ void MeshManager_tool::Process()
 //    bbSetOutputOut( bbGetInputIn() );
 //    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
 
-    if (bbGetInputTool()==1) // Undo
+    if (bbGetInputMeshManagerModel()!=NULL)
     {
-        printf("EED Warning!   MeshManager_tool Undo   Not implemented.\n");
-    }
-    if (bbGetInputTool()==2) // Redo
-    {
-        printf("EED Warning!   MeshManager_tool Redo   Not implemented.\n");
-    }
+        if (bbGetInputTool()==10) // Undo
+        {
+            printf("EED Warning!   MeshManager_tool Undo   Not implemented.\n");
+        } // if Tool 10 Undo
+        
+        if (bbGetInputTool()==20) // Redo
+        {
+            printf("EED Warning!   MeshManager_tool Redo   Not implemented.\n");
+        } // if Tool 20 Redo
 
-    
-    if (bbGetInputTool()==3)  // Set
-    {
-        bbGetInputMeshManagerModel()->SetMeshBase( bbGetInputMesh() );
-    }
+        if (bbGetInputTool()==30)  // Set
+        {
+            printf("EED    MeshManager_tool::Process Set\n");
+            if (bbGetInputMesh()!=NULL){
+                vtkPoints   *points = bbGetInputMesh()->GetPoints();
+                if (points!=NULL)
+                {
+                    bbGetInputMeshManagerModel()->SetMeshBase( bbGetInputMesh() );
+                } // if points!=NULL
+            } // Mesh!=NULL
+        } // if Tool 30 Set
 
-    if (bbGetInputTool()==4) // Reset
-    {
-        printf("EED Warning!   MeshManager_tool Reset   Not implemented.\n");
-    }    
+        if (bbGetInputTool()==40) // Reset
+        {
+            printf("EED Warning!   MeshManager_tool Reset   Not implemented.\n");
+        } // if Tool 40 Reset
+    } else {
+        printf("EED Warning! MeshManager_tool : MeshManagerModel not defined. \n");
+    }// if MeshManagerModel != NULL
 }
 
 //===== 
@@ -59,32 +71,28 @@ void MeshManager_tool::bbUserSetDefaultValues()
    bbSetInputMesh(NULL);
    bbSetInputMeshManagerModel(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 MeshManager_tool::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 MeshManager_tool::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
 
 
index f4ce72e9bb33de23dda322820c92e8a4ba09671e..43a960dc24fd9b7435725e0c97ab98ab1c9299d5 100644 (file)
@@ -38,7 +38,7 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(MeshManager_tool,bbtk::AtomicBlackBox);
   BBTK_DESCRIPTION("No Description.");
   BBTK_CATEGORY("empty");
 
-  BBTK_INPUT(MeshManager_tool,Tool,"(default 0) 0:Nothing 1:Undo 2:ReDo 3:Set 4:Reset",int,"");
+  BBTK_INPUT(MeshManager_tool,Tool,"(default 0) 0:Nothing 10:Undo 20:ReDo 30:Set 40:Reset",int,"");
   BBTK_INPUT(MeshManager_tool,Mesh,"Mesh",vtkPolyData*,"");
   BBTK_INPUT(MeshManager_tool,MeshManagerModel,"Mesh Manager Model",MeshManagerModel*,"");
 
index bcf8c1acefe9db68e67a4f933559702cddff9b70..01f33987c6399fb0763949edcd9bc7d9b334673d 100644 (file)
@@ -39,13 +39,17 @@ MeshManagerModel::~MeshManagerModel()
 
 void MeshManagerModel::SetMeshBase(vtkPolyData* mesh)
 {
-    _meshBase = mesh;
-    if (_meshTemp!=NULL)
+    if (mesh!=NULL)
     {
-        _meshTemp->Delete();
-    } // if
-    _meshTemp = vtkPolyData::New();
-    _meshTemp->DeepCopy(_meshBase);
+        _meshBase = mesh;
+        if (_meshTemp!=NULL)
+        {
+            _meshTemp->Delete();
+        } // if
+        _meshTemp = vtkPolyData::New();
+        _meshTemp->DeepCopy(_meshBase);
+        RefreshOutputs();
+    } // if mesh
 }
 
 vtkPolyData*  MeshManagerModel::GetMeshBase()
@@ -57,3 +61,7 @@ vtkPolyData*  MeshManagerModel::GetMeshTemp()
 {
    return _meshTemp;
 }
+
+void MeshManagerModel::RefreshOutputs() // virtula
+{
+}
index 70f33f84110cff4f81a0d75cf1c856bacbf35a0c..7677cc7641d712e6b8aca96423299b3269c4e839 100644 (file)
@@ -48,6 +48,7 @@ public :
     void SetMeshBase(vtkPolyData* mesh);
     vtkPolyData* GetMeshBase();
     vtkPolyData* GetMeshTemp();
+    virtual void RefreshOutputs();
 
 //--Method template----------------------------
 //  void FunctionName(int& parameterA);