Home

Awesome

scad-tarmi: Commonplace abstractions for scad-clj

This is a Clojure library of miscellaneous abstractions and conveniences for use in CAD work with Matthew Farrell’s scad-clj.

Clojars Project

The Lojban word tarmi refers to a conceptual shape.

Usage

The core module is trivial, meant only to reduce boilerplate.

The util module contains a few utilities that leverage the power of Clojure to do fairly common CAD operations with OpenSCAD primitives. It has a loft function, but please read the fine print.

Three families of drop-in replacements

The maybe module carries drop-in replacements for scad-clj functions that will produce as little output as possible, for slightly shorter OpenSCAD artefacts. The maybe version of translate will compact a series of translations into one operation in OpenSCAD.

The reckon and flex modules also contain drop-in replacements, but for the purpose of reasoning about what a model will look like. reckon has numeric versions of OpenSCAD operations. flex uses either reckon or maybe functions depending on whether their input is itself numeric.

Design for manufacturability

The dfm module exposes an error-fn function. This function represents a compromise between several concerns in design for manufacturability (DFM) for ordinary 3D printers (particularly FDM). It is based on these assumptions:

These assumptions, and default values applied in error-fn, are based on tests of a LulzBot TAZ 6, an FDM printer with a 0.5 mm nozzle, running its default Marlin firmware (version current as of 2018-11), slicing in Cura (LulzBot edition, v3.2) and printing PLA at 100% flow. Results will vary with other printers, slicers and materials. Measure the size of your error with a test print and pass it to error-fn to get a compensator function back.

Lastly, error-fn assumes that negative space will be used to fit other parts, such as threaded fasteners, where dimensions are sensitive. Therefore, negative space is the primary use case. error-fn primarily expects a negative value as a measurement of error and will assume that any passed nominal measurement passed to a compensator should be enlarged. It can also work with positive space, but needs an extra parameter for it.

Acknowledgements

The thread-drawing function (threaded/thread, deprecated since scad-tarmi v0.5.0 in favour of scad-klupe) is a reimplementation in Clojure of a corresponding function in polyScrewThread_r1.scad, created by aubenc at Thingiverse and released by the author into the public domain.

License

Copyright © 2018–2021 Viktor Eikman

This software is distributed under the Eclipse Public License, (EPL) v2.0 or any later version thereof. This software may also be made available under the GNU General Public License (GPL), v3.0 or any later version thereof, as a secondary license hereby granted under the terms of the EPL.