I've had a design for one of these floating around in my head for a while. I built a working prototype of the 3D printer part a few months ago in 34.02, but was having trouble handling the 'automatic' part, and decided to leave off another go until minecarts were in and working, as they make the required logic much simpler to mechanize. Tonight I finally got up off my butt (figuratively speaking; I am in fact sitting down while I type this) and got started.
Basic idea is to take a bunch of pumps in a row, have their inputs blocked off by floodgates which are themselves blocked off by a bridge. On the other side of the bridge is some sort of infinite magma supply. There are more rows of pumps, staggered so that the output of the highest row is one space away from the next highest, which is one away from the next highest and so on, so that a whole rectangle can be pumped. In it's normal state, the bridge and floodgates are all closed and the pumps are unpowered. When the printer is turned on, the bridges are lowered, a set of levers corresponding to the actual space below is checked for input, then the corresponding floodgates open and the magma is given some time to flow through. The bridges are then raised, the pumps are quickly powered on and then off, and then the floodgates are all raised. The magma falls into a chamber at least two units larger on at least one side and at least one on all the others than the actual dumping area. Along that side on each z-level you want to print at is a pressure plate which is used in controlling the level of water in the chamber. After each layer is cast, the water level increases by one until the last layer of the print out is complete.
The setup is imperfect for several reasons (besides the obvious, that you can only print things that are formable by casting), the main one being that due to fluid weirdness, it is impossible to consistently form structures with unsupported parts on higher z-levels. There are ways around this (such as casting first the supported bits, then the bits connected to the supported bits and so on), but they are sufficiently computationally difficult to implement that I'm leaving that to figure out another time, though it is possible to cast them manually if you turn off the auto layering aspect of the printer (so it will only automatically print one layer at a time. You can therefore print the same layer multiple times, which lets you do what I suggested above). The other problem with this, which is unresolvable except by cheating and forming supporting struts which you intend to remove later, is that it is impossible to have hanging bits of your structure which are connected to a supported bit only on higher z-levels, for example the structure (seen from the side) below.
# = wall
_ = floor
###
# #
#
__#_
I'll post some pictures once I have more to show, but the basic structure of each level of pumps is shown below.
%% = pump
* = gear assembly ~ = magma
- = bridge X = floodgate
#~~#*#
#~# %%
#~-X##
~~##*#
~# %%
~-X##
Things will probably move a bit slowly at first, but once I get the fort's basic infrastructure up and running and get some migrants production should go faster. I'm going to try to make a 20x20x10 printing area, but we'll see how much I end up finishing.