<div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><font size="2">
<p>Hi,</p>
<p>Ok, let&#39;s go for a short example (just the idea).</p>
<p>1) I suppose that _all_ my cells are VTK_VOXEL type.</p>
<p>int nbpoints=(dim_x+1)*(dim_y+1)*(dim_z+1);</p>
<p>int nbcells=dim_x*dim_y*dim_z;</p>
<p>vtkXMLWriterC_SetDataObjectType(writer, VTK_UNSTRUCTURED_GRID);</p>
<p>/* fill my vtk_points tab */</p>
<p>vtk_points = malloc(3*nbpoints*sizeof(float));</p>
<p>.../...</p>
<p>vtkXMLWriterC_SetPoints(writer, VTK_FLOAT, vtk_points, nbpoints);</p>
<p>/* fill my vtk_cells tab &amp; vtk_cells_type */</p>
<p>vtk_cells = malloc((VTK_NB_POINTS_VOXEL+1)*nbcells);</p>
<p>.../...</p>
<p>vtk_cells_type = malloc(nbcells*sizeof(int));</p>
<p>for (p=0; p&lt;nbcells; p++)</p>
<p>vtk_cells_type[p] = VTK_VOXEL;</p>
<p>vtkXMLWriterC_SetCellsWithTypes(writer,</p>
<p>vtk_cells_type, nbcells, vtk_cells, VTK_NB_POINTS_VOXEL+1);</p>
<p>This (should) work. It does, in fact ;-)</p>
<p>2) Now, I have nb_cells_quad VTK_QUAD (4 vertices) and dim_x*dim_y*dim_z VTK_VOXEL (8 vertices).</p>
<p>int nbpoints=(dim_x+1)*(dim_y+1)*(dim_z+1);</p>
<p>int nbcells=dim_x*dim_y*dim_z+nb_cells_quad;</p>
<p>vtkXMLWriterC_SetDataObjectType(writer, VTK_UNSTRUCTURED_GRID);</p>
<p>/* fill my vtk_points tab */</p>
<p>vtk_points = malloc(3*nbpoints*sizeof(float));</p>
<p>.../...</p>
<p>vtkXMLWriterC_SetPoints(writer, VTK_FLOAT, vtk_points, nbpoints);</p>
<p>/* fill my vtk_cells tab &amp; vtk_cells_type */</p>
<p>vtk_cells = malloc((VTK_NB_POINTS_VOXEL+1)*(dim_x*dim_y*dim_z) +</p>
<p>(VTK_NB_POINTS_QUAD+1)*nb_cells_quad);</p>
<p>.../...</p>
<p>vtk_cells_type = malloc(nbcells*sizeof(int));</p>
<p>for (p=0; p&lt;(dim_x*dim_y*dim_z); p++)</p>
<p>vtk_cells_type[p] = VTK_VOXEL;</p>
<p>for (p=(dim_x*dim_y*dim_z); p&lt;(dim_x*dim_y*dim_z)+nb_cells_quad; p++)</p>
<p>vtk_cells_type[p] = VTK_QUAD;</p>
<p>The problem is here: for size cells, vtkXMLWriterC_SetCellsWithTypes should be a pointer</p>
<p>because I have several cells sizes; but it uses an integer, so only one value can be set;</p>
<p>this obviously does not work (and my code core dumps).</p>
<p>vtkXMLWriterC_SetCellsWithTypes(writer,</p>
<p>vtk_cells_type, nbcells, vtk_cells, VTK_NB_POINTS_VOXEL+1);</p>
<p>^^^^^^^^^^^^^^^^^^^^^</p>
<p>So I&#39;m thinking of something like this:</p>
<p>vtk_cells_size = malloc(nbcells*sizeof(int));</p>
<p>for (p=0; p&lt;(dim_x*dim_y*dim_z); p++)</p>
<p>vtk_cells_size[p] = VTK_NB_POINTS_VOXEL + 1;</p>
<p>for (p=(dim_x*dim_y*dim_z); p&lt;(dim_x*dim_y*dim_z)+nb_cells_quad); p++)</p>
<p>vtk_cells_size[p] = VTK_NB_POINTS_QUAD + 1;</p>
<p>and then</p>
<p>vtkXMLWriterC_SetCellsWithTypes(writer,</p>
<p>vtk_cells_type, nbcells, vtk_cells, vtk_cells_size);</p>
<p>^^^^^^^^^^^^^^</p>
<p>But vtkXMLWriterC_SetCellsWithTypes() should have to be modified to do that because you need</p>
<p>to pass a pointer instead of an integer.</p>
<p>Or may be I misunderstood how to use vtkXMLWriterC_SetCellsWithTypes() ?</p>
<p>Another argument (from my own opinion ;-) is that vtkXMLWriterC_SetCellsWithType()</p>
<p>(without s) uses cellType and cellsSize integer arguments.</p>
<p>I think these two arguments must have the same dimension.</p>
<p>So in vtkXMLWriterC_SetCellsWithTypes() (with s), as cellTypes is a pointer, </p>
<p>cellSize should be a pointer too.</p>
<p>Cheers,</p></font></blockquote></div>