]> Creatis software - creaVtk.git/commitdiff
#3505 Split Meshes
authorPablo Garzon <gapablo2001@gmail.com>
Thu, 11 May 2023 12:45:22 +0000 (14:45 +0200)
committerPablo Garzon <gapablo2001@gmail.com>
Thu, 11 May 2023 12:45:22 +0000 (14:45 +0200)
bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataConnectivityFilter.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataConnectivityFilter.h [new file with mode: 0644]

diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataConnectivityFilter.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataConnectivityFilter.cxx
new file mode 100644 (file)
index 0000000..fdce1f4
--- /dev/null
@@ -0,0 +1,93 @@
+//===== 
+// 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 "bbcreaVtkPolyDataConnectivityFilter.h"
+#include "bbcreaVtkPackage.h"
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,PolyDataConnectivityFilter)
+BBTK_BLACK_BOX_IMPLEMENTATION(PolyDataConnectivityFilter,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 PolyDataConnectivityFilter::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')
+    
+    //Get all connected components in a polydata vector
+    if(bbGetInputIn() == NULL){
+       printf("PG PolyDataConnectivityFilter::Process Input polydata is null \n");
+       return;
+    }
+    
+       if(bbGetInputType() == 1){
+               std::vector<vtkPolyData*> output;
+               connFilter->SetInputData( bbGetInputIn() );
+               connFilter->SetExtractionModeToSpecifiedRegions();
+               connFilter->Update();
+               vtkPolyData *component;
+               int numRegions = connFilter->GetNumberOfExtractedRegions();
+
+               for(int i = 0; i < numRegions; i++){
+                       connFilter->AddSpecifiedRegion(i);
+                       connFilter->Update();
+                       component = vtkPolyData::New();
+                       component->DeepCopy(connFilter->GetOutput());
+                       output.push_back(component);
+                       connFilter->DeleteSpecifiedRegion(i);
+               }
+
+               bbSetOutputOut(output);
+       }
+}
+//===== 
+// 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 PolyDataConnectivityFilter::bbUserSetDefaultValues()
+{
+
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+       connFilter = 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 PolyDataConnectivityFilter::bbUserInitializeProcessing()
+{
+
+//  THE INITIALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should allocate the internal/output pointers 
+//    if any 
+       connFilter = vtkPolyDataConnectivityFilter::New();
+  
+}
+//===== 
+// 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 PolyDataConnectivityFilter::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/bbcreaVtkPolyDataConnectivityFilter.h b/bbtk_creaVtk_PKG/src/bbcreaVtkPolyDataConnectivityFilter.h
new file mode 100644 (file)
index 0000000..d9547d4
--- /dev/null
@@ -0,0 +1,52 @@
+//===== 
+// 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 __bbcreaVtkPolyDataConnectivityFilter_h_INCLUDED__
+#define __bbcreaVtkPolyDataConnectivityFilter_h_INCLUDED__
+
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+#include <vtkPolyData.h>
+#include <vtkPolyDataConnectivityFilter.h>
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT PolyDataConnectivityFilter
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(PolyDataConnectivityFilter,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(Type,int);
+  BBTK_DECLARE_OUTPUT(Out,std::vector<vtkPolyData*>);
+  BBTK_PROCESS(Process);
+  void Process();
+  
+  vtkPolyDataConnectivityFilter *connFilter;
+//===== 
+// 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(PolyDataConnectivityFilter,bbtk::AtomicBlackBox);
+BBTK_NAME("PolyDataConnectivityFilter");
+BBTK_AUTHOR("InfoDev");
+BBTK_DESCRIPTION("No Description.");
+BBTK_CATEGORY("empty");
+BBTK_INPUT(PolyDataConnectivityFilter,In,"Input polydata",vtkPolyData*,"");
+BBTK_INPUT(PolyDataConnectivityFilter,Type,"0: nothing, 1: Extract all connected regions",int,"");
+BBTK_OUTPUT(PolyDataConnectivityFilter,Out,"output polydatas",std::vector<vtkPolyData*>,"");
+BBTK_END_DESCRIBE_BLACK_BOX(PolyDataConnectivityFilter);
+//===== 
+// 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 // __bbcreaVtkPolyDataConnectivityFilter_h_INCLUDED__
+