A system for parametric design of projects for CNC or traditional techniques

Design into 3D is an effort to create a systematic set of design and fabrication techniques and project generators for objects made using CNC machines, documenting things well enough that one would be able to draw up traditional plans using pen and pencil and fabricate an instance of a project using hand tools, or create files which will efficiently and correctly make toolpaths for cutting on a CNC.

It is simultaneously:

The design philosophy touches on the idea that fundamentally there are only two types of furniture (and arguably functional objects):

  • platforms

  • boxes

with more complicated pieces incorporating both structures, and that any object is fundamentally described in two ways:

  • its design

  • its dimensions

Currently it uses BlockSCAD and OpenSCAD as a 3D modeling front-end using the customizer feature in OpenCAD which is available in current versions.[1]

There are several possible approaches for making designs from OpenSCAD:

  • use the Projection() command to allow the exporting of a 2D view of the design as a DXF or SVG which may then have toolpaths made using a traditional CAM tool

  • directly export the 3D design as an STL which may then have toolpaths made using a 3D CAM tool such as MeshCAM or pyCAM

  • import the OpenSCAD file into FreeCAD and use the Path Workbench to create G-Code

  • exporting the parameters from the customizer as a preset in a JSON file (which is stored in the same directory as the OpenSCAD source file) the JSON may then be loaded into a program developed using a second language which generates a design using those parameters ― eventually for cutting, or toolpaths without further user intervention. As an example, the initial implementation of this uses METAPOST via the library embedded in LuaTeX and importing the JSON file using the Lua scripting language.

  • from within OpenSCAD (or a similar 3D programming/modeling tool) develop the design so that toolpaths are modeled in that language and the coordinate information may be exported as G-Code commands to the console from where they may be extracted

The first and last two options will be explored in the course of this text.

This online ebook is available under a Creative Commons license: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

The Kickstarter edition will be available under a license which will allow commercial usage to a reasonable degree.

Please contact [email protected] if you wish to arrange for any other sort of arrangement.