Yastom

A slicer designed for the cloud

I built yastom because I was frustrated with how opaque even open source slicers are. It was impossible to pull them apart and watch how each component part works, then combine them together and watch how the parts work in concert. Yastom allows increased transparency over existing slicers by dividing the slicing process into a series of decoupled algorithms, each of which communicates via a serialization format that is easy to visualize.

Yastom operates through a series of python classes called "processing layers". Each processing layer accepts the input from the processing layer preceding it, and transfers its output to the layer following it. The implementation details of each layer are abstracted away, as all algorithms communicate in terms of the serialization format for geometric data. Processing layers can be chained together in any way as long as each processing layers understands the data produced by its predecessor.

To configure a run of yastom, a JSON object is used which contains the initial input for the processing chain, configuration values used throughout the chain (the layer height at which the mesh is sliced for example), and a list of processing layers to be used. Yastom uses this information to invoke each processing layer in sequence.

This pattern could easily be translated to web scale and used to support a highly automated and diverse set of digital fabrication machines while minimizing engineering effort required to maintain the codebase.

Mesh visualization provided by the initial phase of the pipeline. Any phase that produces a mesh can be visualized.
The result of applying a raw slicing algorithm layer to the initial mesh. Each line segment generated in this way is given a random color.
The result of applying the contour finding algorithm layer to the given list of line segments.