<p class="MsoNormal">I’ve just started using vtkpython and have a hopefully basic
question.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">The output from vtkExodusIIReader is a vtkMultiBlockDataSet.</p>
<p class="MsoNormal">The input to vtkSurfaceFilter requires a vtkDataSet.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">How do I get these two to talk to one another? My file only has a single block.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thanks,</p>
<p class="MsoNormal">Tim</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">-- error --</p>
<pre><span style="font-family:Consolas">vtkStreamingDemandDrivenPipeline (0x17dee0c0): Input for connection index 0 on input port index 0 for algorithm vtkDataSetSurfaceFilter(0x17ded900) is of type vtkMultiBlockDataSet, but a vtkDataSet is required.</span></pre>
<p class="MsoNormal">-- error --</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">-- code --</p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">import vtk</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""># load the geometry</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">wedge = vtk.vtkExodusIIReader()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">wedge.SetFileName('mesh_wedge_only.g')</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""># extract a single block ???</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">block = vtk.vtkExtractBlock()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">block.SetInputConnection(0, wedge.GetOutputPort())</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">block.AddIndex(0)</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""># extract the surface of the block</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">surface = vtk.vtkDataSetSurfaceFilter()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">surface.SetInputConnection(0, block.GetOutputPort())</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""># break into triangles</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">triangles = vtk.vtkDataSetTriangleFilter()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">triangles.SetInputConnection(0,
surface.GetOutputPort())</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""># write to STL file</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">output = vtk.vtkSTLWriter()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">output.SetFileTypeToBinary()</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">output.SetFileName('mesh_surface_clipped.stl')</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">output.SetInputConnection(0,
triangles.GetOutputPort())</span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">output.Update()</span></p>
<p class="MsoNormal">-- code --</p>