walkmap.stl
Utility functions dealing with stereolithography (STL) files. Not a stable API yet!
binary-stl-to-ascii
(binary-stl-to-ascii in-filename)
(binary-stl-to-ascii in-filename out-filename)
Convert the binary STL file indicated by in-filename
, and write it to out-filename
, if specified; otherwise, to a file with the same basename as in-filename
but the extension .ascii.stl
.
canonicalise
(canonicalise o)
(canonicalise o map-kind)
Objects read in from STL won’t have all the keys/values we need them to have. o
may be a map (representing a facet or a vertex), or a sequence of such maps; if it isn’t recognised it is at present just returned unchanged. map-kind
, if passed, must be a keyword indicating the value represented by the z
axis (defaults to :height
). It is an error, and an exception will be thrown, if map-kind
is not a keyword.
centre
(centre facet)
Return a canonicalised facet
(i.e. a triangular polygon) with an added key :centre
whose value represents the centre of this facet in 3 dimensions. This only works for triangles, so is here not in walkmap.polygon
. It is an error (although no exception is currently thrown) if the object past is not a triangular polygon.
decode-binary-stl
(decode-binary-stl filename)
(decode-binary-stl filename map-kind)
Parse a binary STL file from this filename
and return an STL structure representing its contents. map-kind
, if passed, must be a keyword indicating the value represented by the z
axis (defaults to :height
). It is an error, and an exception will be thrown, if map-kind
is not a keyword.
NOTE that we’ve no way of verifying that the input file is binary STL data, if it is not this will run but will return garbage.
stl->ascii
(stl->ascii stl)
(stl->ascii stl solidname)
Return as a string an ASCII rendering of the stl
structure.
stl?
(stl? o)
(stl? o verify-count?)
True if o
is recogniseable as an STL structure. An STL structure must have a key :facets
, whose value must be a sequence of polygons; and may have a key :header
whose value should be a string, and/or a key :count
, whose value should be a positive integer.
If verify-count?
is passed and is not false
, verify that the value of the :count
header is equal to the number of facets.
write-ascii-stl
(write-ascii-stl filename stl)
(write-ascii-stl filename stl solidname)
Write an stl
structure as read by decode-binary-stl
to this filename
as ASCII encoded STL.