This plugin allows to import and export surface data in Napari to common file formats. The generated file formats can be read by other common applications, and - in particular - allow 3D-printing.
This section explains which data can be written with the napari-stl-exported and how you can do so.
Currently supported file formats for export include and rely on the vedo io API.
- .stl: Standard triangle language
- .ply: Polygon file format
- .obj: Wavefront object
Currently supported Napari layer types are:
- Surface layers
- Label layers: The label data is converted to surface data under the hood using the marching cubes algorithm implemented in scikit-image and is then exported using Vedo. Warning: This can be slow for large image data!
Interactively: To export the data, simply save the selected layer with File > Save Selected Layer(s)
and specify the file ending to be some_file.[file_ending]
, for supported file types, see above. Similarly, supported file types can be imported into Napari with File >
From code: A Napari Label layer can be added to the viewer as described in the napari reference with this code snippet:
import napari
import numpy as np
# Load and binarize image
label_image = np.zeros((100, 100, 100), dtype=int)
label_image[25:75, 25:75, 25:75] = 1
# Add data to viewer
viewer = napari.Viewer()
label_layer = viewer.add_labels(data, name='3D object')
# save the layer as 3D printable file to disc
napari.save_layers(r'/some/path/test.stl', [label_layer])
You can create sample label/surface data for export using the built-in functions as shown here:
...or from code with
import napari_stl_exporter
pyramid = napari_stl_exporter.make_pyramid_surface()
To actually send your object to a 3D-printer, it has to be further converted to the .gcode format with a Slicer program. The latter convert the 3D object to machine-relevant parameters (printing detail, motor trajectories, etc). Popular slicers are:
- Slic3r: Documentation here
- Prusa Slicer: Tutorial here
Note: You can also upload the STL file to github.com and interact with it in the browser:
This napari plugin was generated with Cookiecutter using with @napari's cookiecutter-napari-plugin template.
You can install napari-stl-exporter
via pip:
pip install napari-stl-exporter
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
Distributed under the terms of the BSD-3 license, "napari-stl-exporter" is free and open source software
If you encounter any problems, please file an issue along with a detailed description or post to image.sc and tag El_Pollo_Diablo