Freesteel » Z-level slicer
- Slice is free to use and distribute in its binary form as a command-line utility. It can be aggregated with Free Software.
- Slice accepts any STL file of a triangulated 3D model, and outputs in a variety of formats. Unlike other implementations that cut the triangles directly, the input model does not need to be water-tight, because we use a toolpath generating CAM algorithm which samples the contour using a small defined toolshape.
- Slice is the fundamental function of all layer-based rapid prototyping, but our implementation can also be used to generate contours in a volumetric offset or a silhouette shadow of a 3D model.
(c) 2010 - 2012 Freesteel, Slice v1.3, (http://www.freesteel.co.uk).
Slice is distributed freeware and without warranty of any kind.
May contain bugs. Use entirely at your own risk.
Usage: slice [options]
Options:
--version show program's version number and exit
--help show this help message and exit
-o OUTFILE, --output=OUTFILE
output file (*.xhtml , *.html , *.svg,
*.cli, *.txt, *.hpgl, *.plt, *.bmp, *.jpg, *.png,
*.tif, *.gif). The HTML output uses an embedded SVG
file and can be viewed in a compatible browser. Some
browsers might require you to install a plugin for
viewing SVG files. If an output file is omitted,
results are printed to the console window.
-m, --multiple in connection with output to an image format, write
one file per z level
-z Z, --zheights=Z
slice at these z heights (comma separated
list of values, can be of form 'lo, hi, step')
-d WDIFF, --difference=WDIFF
if set, adaptive steps so that slices don't differ by
more than this
-t TOOLTYPE, --type=TOOLTYPE
type of slicing tool (disk or sphere; default is disk)
-r RADIUS, --radius=RADIUS
tool radius
-f OFFSET, --offset=OFFSET
offset contours (<0 to offset inwards, defaults to
-radius for default tool)
-s WRES, --resolution=WRES
resolution (if omitted this calculated from the STL
dimensions)
-l LAYERTHICKNESS, --layer=LAYERTHICKNESS
layer thickness for slicing with a disk (height of
disk), default is 10% of the z height
-v, --verbose print information
-w IMGWIDTH, --width=IMGWIDTH
image width (default 370) (used for output image
formats)
-h IMGHEIGHT, --height=IMGHEIGHT
image height (default 370) (used for output image
formats)
-a ASPECT, --aspect=ASPECT
aspect (default is xy, other values yz or xz)
Examples
Cube10.stl
solid block10
facet normal 0 0 0
outer loop
vertex 0 10 10
vertex 0 10 0
vertex 0 0 10
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 10
vertex 0 10 0
vertex 0 0 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 10 10
vertex 0 10 10
vertex 10 0 10
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 0 10
vertex 0 10 10
vertex 0 0 10
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 10 0
vertex 10 10 10
vertex 10 0 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 0 0
vertex 10 10 10
vertex 10 0 10
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 10 0
vertex 10 10 0
vertex 0 0 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 10 10 0
vertex 10 0 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 10 10
vertex 10 10 0
vertex 0 10 10
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 10 10
vertex 10 10 0
vertex 0 10 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 10 0 0
vertex 10 0 10
vertex 0 0 0
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 10 0 10
vertex 0 0 10
endloop
endfacet
endsolid
Using Cube10.stl, which is a 10x10x10 cube
> slice cube10.stl
prints the JSON formatted result:
{"xlo": 0.0, "yhi": 10.0, "xhi": 10.0,
"zhi": 10.0, "ylo": 0.0, "zlo": 0.0}
{"n_triangles": 12, "n_points": 8,
"n_edges": 28, "n_unmatched_edges": 0}
{"flat_area_z": [0.0, 10.0]}
To create a single slice at Z=5 with a tool radius 1mm and layer height of 0.1,
> slice -layer=0.1 -r1 -f0 cube10.stl
The response (in JSOP) is:
{"z": 5.0, "polygons": [{"points": [[-0.9078014184397163, -0.4194002678573765],
[-0.911478589796249, -0.4113475177304966], [-0.9500634676302036, -0.312056737588
6527], [-0.9771031917621306, -0.2127659574468086], [-0.9935408316398511, -0.1134
7517730496448], [-0.9998993963780151, -0.014184397163120366], [-1.0, 0.085106382
9787233], ..., [-0.792456004957226, -0.6099290780141844], [-0.
8085106382978724, -0.5884815611038012], [-0.8597956319649682, -0.510638297872340
3], [-0.9078014184397163, -0.4194002678573765]], "type": "core"}]}
The shape of this is a square of width 12mm with 1mm rounded corners, because it is sampled with a disc of radius 1. If you want the cut on the surface, the shape must be offset back to its original form using -f-1.
You cannot slice exactly on a flat area because the result is ambiguous, so slicer moves the position of Z slightly.
> slice -z10 cube10.stl
returns
{"z":10.0075, "polygons": []}
To create a silhouette, simply set the z value to below the zlo for the model and the layer thickness to greater than the height of the model.
