# Transfer result of vtkVoxelModeller to STL format.

**URL:** https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904
**Category:** Support
**Created:** [August 4, 2020, 10:17am UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904 "2020-08-04T10:17:01Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![EugeneZ](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/e/8c91f0/32.png) [@EugeneZ](https://discourse.vtk.org/u/EugeneZ)
#### Post date: [August 4, 2020, 10:17am UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/1 "2020-08-04T10:17:02Z")

</div>

Hello Team,  
I have some voxelisation and want to save it to STL format.  
Why code below doesn’t generate STL-file?  
Thanks in advance.

vtkSmartPointer voxelModeller = vtkSmartPointer::New();  
voxelModeller-\>SetModelBounds( bounds );  
voxelModeller-\>SetInputConnection( pDataSource-\>GetOutputPort() );  
voxelModeller-\>Update();  
vtkSmartPointer writer = vtkSmartPointer::New();  
writer-\>SetInputConnection( voxelModeller-\>GetOutputPort() );  
writer-\>SetFileName( “voxel.stl” );  
const int iResult = writer-\>Write();

---

<div class="post-metadata">

### Author: ![cory.quammen](https://discourse.vtk.org/user_avatar/discourse.vtk.org/cory.quammen/32/6751_2.png) [@cory.quammen](https://discourse.vtk.org/u/cory.quammen)
#### Post date: [August 4, 2020, 6:57pm UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/2 "2020-08-04T18:57:58Z")

</div>

`vtkVoxelModeller` produces a `vtkImageData` output, which is a regular grid data structure. STL supports only polygonal meshes, which is quite different from a regular grid, so I don’t see how it would be possible to save a `vtkImageData` to an STL file.

---

<div class="post-metadata">

### Author: ![EugeneZ](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/e/8c91f0/32.png) [@EugeneZ](https://discourse.vtk.org/u/EugeneZ)
#### Post date: [August 5, 2020, 8:56am UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/3 "2020-08-05T08:56:32Z")

</div>

Hello Cory,  
Thank you for an answer.  
My plan is read cell by cell and union to single solid.

For the problem now is - after voxalisation all cells in bounds are built. I expected only cells inside geometry are built. Shoul I post-process it? In the code below number of cells is 1000. It means all bounds here.

Thanks in advance.  
With respects, Eugene.

vtkSmartPointer pDataSource = vtkSmartPointer::New();  
double bounds[6] = { 0.0 };  
pDataSource-\>GetOutput()-\>GetBounds( bounds );  
vtkSmartPointer voxelModeller = vtkSmartPointer::New();  
voxelModeller-\>SetModelBounds( bounds );  
voxelModeller-\>SetInputConnection( pDataSource-\>GetOutputPort() );  
voxelModeller-\>SetSampleDimensions( 11, 11, 11 );  
voxelModeller-\>Update();

```
vtkImageData* pData = voxelModeller->GetOutput();
if ( !pData )
{
	return;
}

const vtkIdType iSize = pData->GetNumberOfCells();
```

---

<div class="post-metadata">

### Author: ![cory.quammen](https://discourse.vtk.org/user_avatar/discourse.vtk.org/cory.quammen/32/6751_2.png) [@cory.quammen](https://discourse.vtk.org/u/cory.quammen)
#### Post date: [August 5, 2020, 3:53pm UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/4 "2020-08-05T15:53:59Z")

</div>

> [@EugeneZ](#):
>
> For the problem now is - after voxalisation all cells in bounds are built. I expected only cells inside geometry are built

Voxels will be generated inside and outside the geometry, and the resulting data has a 1 for every voxel inside the geometry and 0 outside. You need to do some processing of this to get only the inside of the model, but since I’m not sure what you are ultimately trying to achieve, I’m not sure what advice to give you. Can you elaborate on your goal? Do you need a polygonal dataset to write into an STL file?

---

<div class="post-metadata">

### Author: ![EugeneZ](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/e/8c91f0/32.png) [@EugeneZ](https://discourse.vtk.org/u/EugeneZ)
#### Post date: [August 5, 2020, 3:55pm UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/5 "2020-08-05T15:55:49Z")

</div>

> [@cory.quammen](#):
>
> has a 1 for every voxel inside the geometry and 0 outside

Sorry, I didn’t find this flag.

---

<div class="post-metadata">

### Author: ![cory.quammen](https://discourse.vtk.org/user_avatar/discourse.vtk.org/cory.quammen/32/6751_2.png) [@cory.quammen](https://discourse.vtk.org/u/cory.quammen)
#### Post date: [August 5, 2020, 4:01pm UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/6 "2020-08-05T16:01:22Z")

</div>

It is part of the point data, accessible with

```auto
vtkDataArray* array = pData->GetPointData()->GetScalars();

```

---

<div class="post-metadata">

### Author: ![EugeneZ](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/e/8c91f0/32.png) [@EugeneZ](https://discourse.vtk.org/u/EugeneZ)
#### Post date: [August 5, 2020, 4:02pm UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/7 "2020-08-05T16:02:51Z")

</div>

Okey, thank you.  
My target is to substitute some geometry by more rough volume to make less weight of geometry.

---

<div class="post-metadata">

### Author: ![EugeneZ](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/e/8c91f0/32.png) [@EugeneZ](https://discourse.vtk.org/u/EugeneZ)
#### Post date: [August 6, 2020, 6:10am UTC](https://discourse.vtk.org/t/transfer-result-of-vtkvoxelmodeller-to-stl-format/3904/8 "2020-08-06T06:10:32Z")

</div>

Hi Cory,  
Thank you a lot for support.  
I implemented voxelisation by my own code from scratch.

With respects, Eugene.
