[vtk-developers] Bug in vtkCompositeDataPipeline?
Bill McGrory
mcgrory at aerosft.com
Thu May 25 15:52:29 EDT 2006
I've been trying to get a
vtkMultiBlockDataSet to work properly with vtkStructuredGrid's which are
output from a vtkStructuredGridSource
>From what I can tell, it appears that the the vtkCompositeDataPipeline
is unaware of child vtkDataObject->Source, so none of the data ever gets
loaded.
I have constructed a work-around which appears (superficially at least)
to work for my particular case, which is basically, if a Source exists
for the original vtkDataObject in the *ForBlock() routines, call the
relevant Update's before performing the ShallowCopy
patch is as follows
Index: vtkCompositeDataPipeline.cxx
===================================================================
RCS file: /cvsroot/VTK/VTK/Filtering/vtkCompositeDataPipeline.cxx,v
retrieving revision 1.34
diff -u -r1.34 vtkCompositeDataPipeline.cxx
--- vtkCompositeDataPipeline.cxx 7 Dec 2005 16:21:29 -0000 1.34
+++ vtkCompositeDataPipeline.cxx 25 May 2006 19:48:48 -0000
@@ -35,6 +35,8 @@
#include "vtkStructuredGrid.h"
#include "vtkUniformGrid.h"
+#include "vtkSource.h"
+
vtkCxxRevisionMacro(vtkCompositeDataPipeline, "$Revision: 1.34 $");
vtkStandardNewMacro(vtkCompositeDataPipeline);
@@ -46,6 +48,28 @@
vtkInformationKeyMacro(vtkCompositeDataPipeline,INPUT_REQUIRED_COMPOSITE_DATA_TYPE, String);
vtkInformationKeyMacro(vtkCompositeDataPipeline,UPDATE_BLOCKS,
ObjectBase);
+class vtkCompositeDataPipelineToDataObjectFriendship
+{
+public:
+ static void UpdateDataObject(vtkDataObject* obj)
+ {
+ if(obj->Source)
+ {
+ obj->Source->Update();
+ }
+
+ }
+
+ static void UpdateInformation(vtkDataObject* obj)
+ {
+ if(obj->Source)
+ {
+ obj->Source->UpdateInformation();
+ }
+
+ }
+};
+
//----------------------------------------------------------------------------
vtkCompositeDataPipeline::vtkCompositeDataPipeline()
{
@@ -490,6 +514,7 @@
info->Get(vtkDataObject::DATA_OBJECT());
if (dobj && dobjCopy)
{
+
vtkCompositeDataPipelineToDataObjectFriendship::UpdateInformation(dobj);
dobjCopy->ShallowCopy(dobj);
dobjCopy->CopyInformation(dobj);
}
@@ -1089,6 +1114,7 @@
if (dobj && dobjCopy)
{
+
vtkCompositeDataPipelineToDataObjectFriendship::UpdateDataObject(dobj);
dobjCopy->ShallowCopy(dobj);
}
}
Is this really a bug, and is this an appropriate fix?
Or am I doing something wrong up the pipeline, such that I shouldn't
need to do this?
Regards
Bill
--
Dr. William D. McGrory AeroSoft, Inc.
mcgrory at aerosft.com Suite 1275
(540) 557-1904 1872 Pratt Drive
(540) 557-1919 (FAX) Blacksburg, VA 24060
More information about the vtk-developers
mailing list