"Self-Replicating" 3D Printers: Complex Designs with OpenSCAD

CS 480: Robotics & 3D Printing Lecture, Dr. Lawlor

Here are the OpenSCAD designs we built in class last time:
Generally speaking, the trick to not getting overwhelmed in an OpenSCAD design is the same trick in programming anything--find the simplest way to break the work into manageable pieces.

One common problem with printed parts is the plastic will crack at high-stress points.  Mechanical engineers will tell you a sharp inside corner acts as a stress riser, so you want to at least bevel, and preferably round off, all your inside corners.  You can do this by unioning a cylinder or torus, but where slanting edges intersect, it can be difficult to compute the location of the cylinder centerline.

One way to simplify complex designs is to switch to 2D outlines, which you then extrude with linear_extrude.  Enlarging a 2D design with offset(r=+3) adds rounded corners to the outside, but moves the outside edges as well.  If you then shrink the design, the outside corners and flat faces are left unchanged, but all the inside corners are rounded. 
This same trick works in 3D, using a minkowski sum with a sphere to compute a positive offset, but minkowski performs poorly on complex shapes, and no simple implementation of a negative offset in 3D exists in OpenSCAD.

Self-Replicating Printers

There are a number of 3D printer designs that are "self replicating", in the sense that the printer itself consists mostly of printed parts.  Until we can build a semiconductor fabrication printer, you need to add "vitamins" such as control electronics and motors, as distinguished from the "food" like filament that you feed the printer with.

A 3D printer is a fairly complex mechanical device, with lots of moving parts, so 3D printer designs are some of the most complex OpenSCAD programs available.

The Rostock derivative Kossel printer (source code on github, or browseable) is a delta 3D printer.  It's parts are each OpenSCAD files, sharing a common set of named configuration parameters in a small configuration scad file.

The Mendel90 printer (source code on github) is a cartesian 3D printer.  Again, each part is an OpenSCAD file, but Chris built a very full-featured configuration and inventory management system.  I was able to use his Mendel90 design to much thicker guide rods and a much bigger print area, in my Alaska90 3D printer.