Parametric Design Pilot Project
Parametric Mechanical Design Concept
In a standard design flow, the engineers/designers prepare a documentation set -- fabrication and assembly drawings, bills of materials, process sheets, etc -- for a specific size and version of a product. Sometimes, the design will be prepared in several variants, with different options, and then the documentation will typically have variant tabulations.
In a parametric design flow, size and other options are specified as parameters, and an appropriate documentation set is automatically generated in response to a requested set of parameters. For example, "make this bed frame for a mattress 94 x 62 inches".
Many CAD packages support parametric features, with variables that represent dimensions. Dependent dimensions can be computed from primary dimension parameters and other constraints. In essence, the master engineering CAD drawing becomes a computer program which can generate any one of a huge range of specific drawings in response to variable values. Very early on AutoCAD implemented this by embedding a LISP interpreter in their drawing program.
Existing parametric design workflows remain rife with manual steps between choosing the parameters and completed fabrication drawings and CAM files.
Our intent is to turn this process into a one-click process, just like a typical software project build (i.e. "make all").
Parametric design platform
(Need review of alternative options here) rapcad?
A candidate for an open source parametric design platform is ImplicitCAD, implementing extended openSCAD in the Haskell programming language. Parametric design computations that are too sophisticated to be expressed in extopenSCAD can take advantage of the Haskell language itself (which is, however, something of a "boutique" language with a small user base) or perhaps use another language in combination with macro substitution (e.g. using open-source cpp or m4) into the extopenSCAD file.
The primary design files are text files -- very much like computer source programs -- and the entire process should be compatible with software project build tools.
As with most software projects, we expect that a multi-tool toolchain will be necessary to produce a suite of output files:
- human-readable mechanical drawings
- bills of material
- "IKEA-style" assembly drawings
Automatic build ("Make") tools
As with a large software project, managing a dynamically-changing hardware project requires tracking the dependencies between sub-modules.
As a starting point, standard GNU Make can be used to automatically update any dependent file when something it depends on changes. The crux of the matter is determining the dependencies.
- Many programming languages (e.g. c, c++) have tools for exposing dependencies (e.g. gnu cpp -M flag)
- Dedicated scripts can be written to parse other types of files searching for their "import", "include", or similar directives
- A potential general solution is gendep, which watches what files are opened in the process of executing a build step.
A project based almost entirely on torch-cut and laser-cut parts is ideal as an early pilot for this process. The parametric toolchain should produce final g-code files to be executed by the torch table and laser cutter.
Subsequently, more sophisticated projects could include parametrically-generated parts to be made with 3D printers and CNC machine tools.
Light-cutting-force CNC machines seem like good candidates here.
I think these machines can be designed so that virtually all of the frame components are made from CNC-cut sheet parts. Sheet parts can be designed with "dotted line" perforated fold lines that can be hand-bent into 3D configurations without a press brake.
A parametric toolchain should be able to take as parameters the working volume of the desired machine and produce a set of drawings, BOM, and g-code files to build it.