Making Printable Models from Parts Diagrams

Printrbot provides part diagrams of the laser-cut wood parts included with their printer kits. These diagrams are useful if you want to save even more on the cost of a kit by having the parts cut yourself. Alternatively, you can use these patterns to print replacement parts for your Printrbot using your Printrbot. Here’s a roundabout way to convert the part diagrams to printable models using only free software.

First, download a parts diagram from the Printrbot Support page for your printer. Here is the diagram for my printer (PDF).

Open the PDF in LibreOffice. For this example, I’ll convert part 16, the cooling fan mount. Select the part, including holes, but not including the “16” label:

pdfselection

Select Export… from the File menu. Check Selection and choose EPS as the file type to export.

Screenshot-Export

Be sure mm is selected as the unit in the EPS Options window. Click OK.

Screenshot-EPS Options

Convert the EPS file to DXF format using pstoedit:

pstoedit -dt -f dxf:"-polyaslines -mm" part16.eps part16.dxf

(There may be friendlier tools available to convert PDF or EPS files to DXF. DXF is needed because it is the only 2D format understood by OpenSCAD, which is used in the next step to extrude the outline into three dimensions. Printrbot part diagrams are available as DXF drawings, but I think it requires a bit more CAD expertise to extract individual parts from those files.)

Use OpenSCAD to import the DXF drawing and give it depth:

linear_extrude(height=6) import("part16.dxf");

Screenshot-OpenSCAD-exp

Finally, to get a printable STL file, select Compile and Render from OpenSCAD’s Design menu, then Export as STL… from the same menu. Here’s the result positioned in RepetierHost, ready to print:

Screenshot-Repetier-Host V0.90D - ListViewItem: fidgetcube_black_remeshed.stl

Another thing to try would be to use OpenSCAD to union an assembly of multiple parts into a model you could print as a single piece for greater rigidity and ease of maintenance. You might also customize the model to accomodate different components. This article on using fasteners with printed parts is worth a look for useful design tips, too.

Posted on Friday, January 24th, 2014.

A Fan Fix

At some point the other day I peeled the sticker off the center of the cooling fan on my Printrbot extruder. I think in so doing I must have budged the solder where the wires enter the fan: last night I realized the fan wasn’t running, regardless of setting. So, this morning I pulled my multimeter out of cold storage (no, really – it is cold in the garage) and verified current was reaching the fan. I was happy to confirm the fan was at fault, and not some connection on the circuit board.

A quick trip to Unicorn Electronics for an identical replacement, and we’re back in action!

20140123-153424.jpg

The cooling fan helps ensure plastic emerging from the extruder solidifies quickly. Actually, as a test I printed several items earlier this week with it turned off, and didn’t notice a difference in output – perhaps it is more important when the ambient temperature is higher.

Posted on Thursday, January 23rd, 2014.

Building OpenSCAD from Source

OpenSCAD is a useful tool for 3D modeling. You create models in OpenSCAD by writing scripts composed of commands like cube or rotate to instantiate and manipulate shapes. Furthermore, you can combine shapes using constructive solid geometry operations like union or difference. So it is not a substitute for interactive modeling, but a tool for writing programs to generate models from input. For example, Thingiverse Customizer uses OpenSCAD.

openscadscreenshot

I use OpenSCAD with Linux Mint, where it is readily available via the Software Manager. However, the version available there is not the latest. Furthermore, the downloadable version of the latest release on the OpenSCAD web site does not run on my laptop, due to an unnecessarily strict glibc version dependency. So, rather than muck around with a bunch of different versions, I decided to just build the latest code available from Github. Happily, the build instructions work. Here’s a step-by-step summary for Linux (assumes you have git installed):

# download the code
git clone https://github.com/openscad/openscad.git

# enter the downloaded directory
cd openscad

# download MCAD part library, stored as a separate repository
git submodule update --init

# download and compile other dependencies (tools and libraries)
# - might take a while depending how many are already installed
scripts/uni-get-dependencies.sh
scripts/uni-build-dependencies.sh

# compile Openscad
qmake
make

Now you can run openscad from that directory, or run sudo make install to install the app for systemwide access.

Posted on Wednesday, January 22nd, 2014.

PrintrBot Assembly Notes

The Printrbot Simple’s assembly instructions are published online as a photo-illustrated guide. Having recently assemble my own Printrbot, I thought I would share a few comments and tips for the benefit of anyone else about to build one.

First, and most generally, it’s worth reading through the instructions before you begin building to get a sense of how everything it will fit together. At the very least, look at the photos for the next step before you proceed with the current step to see how the current step will look when done.

Find the right tool for the job of separating the laser-cut plywood parts (step 2). I did not settle on a safe and consistent cutting method until I tried the chisel-tip blade pictured at right. (Simply snapping the parts apart by hand is possible, but discouraged due to the possibility of splitting or snapping the parts themselves.) This advice may soon be moot since I understand Printrbot plans to transition to all-aluminum construction.

The zip ties securing the Z axis drive rod coupler (step 40) pass very close to wires from the circuit board. I wrapped a piece of tape around the zip tie nubs to prevent them from accidentally yanking wires as the rod rotates. Careful grouping and routing of wires is general good practice to avoid interference with moving parts.

zstop

Last but most important: once you’ve finished the assembly, but before you run the printer for the first time, examine the 3″ bolt installed on the back of the extruder carraige in step 30. This is the Z stopper. Its job is to hit the Z end stop switch on the base of the printer (nut and black box at right in the picture above) just before the extruder tip hits the print bed (at left in the picture above). Make sure it is threaded in far enough to do so! Otherwise, the extruder tip will be driven into the print bed when the printer attempts to find its “home” location by descending until the Z stop is triggered.

Posted on Wednesday, January 22nd, 2014.

My Printrbot

Earlier this month I ordered a Printrbot Simple. The kit arrived last Thursday. I stayed up late to assemble it and had a lot of fun in the process – I marvel at the way such a sophisticated class of machine can be built from relatively simple parts. See the photo captions in the slideshow above for comments on particular steps.

Me being me, I can almost claim the kit was worthwhile for the satisfaction of assembly alone. But it works, too! It works very well – better than I expected, to be honest.

I’ve printed a variety of models so far, including some of my own design and some from Thingiverse. Above, my prints of Matthew Croucher’s calibration cubes and Steven Morlock’s version of the bust of Nefertiti. Below, a bicycle taillight adapter I designed and an experiment in painting a landscape model of Binghamton prepared with hmstl.

Physically, I have found two adjustments are key to getting good results.

The first is common to all 3D printers: the bed must be level relative to the extruder; otherwise, the plastic won’t adhere reliably and you’ll get frustrated. Currently, levelling is accomplished by adjusting the spring-loaded screws at each corner of the bed to ensure an even gap between the extruder and the platform across the whole print bed. Thanks to the clever hackers at Printrbot, however, a system that compensates in software for bed orientation is evidently in the works.

Secondly, since the Printrbot Simple’s X/Y motion is driven through lengths of fishing line, it is important to keep these cords taut. My first few prints came out a bit sloppy, largely due to a bit of slack in the lines. I increased the tension and everything since has come out sharp. The cords are now almost tight enough to pluck like a guitar string.

rephostprintprogress

I am using Repetier-Host to control the printer. It provides an interface for placing models on the print bed, converting models to printable instructions using the bundled Slic3r program, and monitoring the status of prints in progress. You can also use it to manually operate the printer’s mechanisms – useful for reloading filament or checking the bed level. The screenshot at right shows a print in progress; you can monitor a graph of the extruder temperature or a visualization of what’s been printed so far (not shown).

Desktop 3D printers build objects by extruding one layer of a model at a time. A slicing program’s job is to convert an arbitrary model into a stack of printable layers, or slices. Thus, the options set in Slic3r (or similar software) have a big impact on the outcome of the print.

slicedscreenshot

Important slicing options include layer height and infill – the density of the filler material, if any, to be laid down within the outline of each layer. Other key settings include the number of perimeter outlines to output for each layer and whether to generate supports for overhanging features – scaffolding to be removed when the print is done, as seen around the Nefertiti bust above. Last but not least, you can configure the speed at which the printer executes each type of task. I find that reducing speed helps reduce unwanted vibrations. At right, a screenshot of the slicing preview of this sweet pencil holder. You can see the internal grid that forms the 0.05 infill consumes little material but provides plenty of reinforcement.

I think a comparison to traditional photography is apt: a great part of the art lies in familiarity with the technology and process, which informs the photographer’s choice of lens, film, and exposure.

Choosing the most appropriate settings for each print is a balancing act between a number of factors: strength, material consumption, print speed, and fidelity to detail, to name a few. I think a comparison to traditional photography is apt: a great part of the art lies in familiarity with the technology and process, which informs the photographer’s choice of lens, film, and exposure.

In conclusion, I gladly recommend the Printrbot Simple to anyone interested in getting into 3D printing – not despite its simplicity, but because of it. It is easy to observe how it works, and thanks to its simple construction, not too intimidating to assemble or adjust. I’ve read a lot about 3D printing in the past few months, but I’ve learned a lot more in the past few days just from playing around with this printer.

Posted on Wednesday, January 22nd, 2014.

Pre Printer

“And the tools were laid out by the build guide with care, in anticipation of the PrintrBot that soon would be there.”

20140116-100133.jpg

I ordered a PrintrBot Simple kit (with XL upgrade), due to arrive today!

Posted on Thursday, January 16th, 2014.

Portraits

20140114-195846.jpg

Getting a bit carried away with the twee filter effects.

Posted on Tuesday, January 14th, 2014.

Portrait Sketches

20140111-235214.jpg

20140112-011727.jpg

Posted on Saturday, January 11th, 2014.

3D Printing Projects

If you’ve been following my recent posts here and elsewhere, you’ve probably noticed a recurring theme: 3D printing. The immediate source of this new interest is the Makerbot my dad is hosting at school, thanks to the forward-thinking investment of DCMO BOCES. Read more about 3D printing in the library and other related topics at my dad’s blog.

The plastic objects produced by today’s 3D printers aren’t really anything new, but the ability to make them at home in an afternoon certainly is.

No retooling is necessary to create different objects with additive manufacturing. This removes a barrier to the creative experimentation and iteration that is a vital part of craftsmanship. Plastic has unique properties, but unlike materials such as wood and metal, which were worked by hand for generations before the advent of mass production, plastic has never been an artisan medium. The plastic objects produced by today’s 3D printers aren’t really anything new, but the ability to make them at home in an afternoon certainly is. So, I think there is a potent sense of empowerment driving interest in this technology.

For similar precedent, see how the proliferation of affordable computing power has transformed our access to information, if not society itself. 3D printing has already enabled individual artists, engineers, and entrepreneurs to realize their ideas. I am curious what influence it could have on [mass-produced, disposable] material culture at large.

Parts

More immediately, I see 3D printing as an opportunity to make better use of the things I already have. In particular, I saw it as way to reuse or repair the many bike accessesories I’ve accumulated, which sometimes end up unused due to misfit or MIA mounting hardware. A custom-printed bracket fits more securely than zip ties and duct tape but is more affordable than a factory-ordered replacement, if one is even available.

This shim adapts the clamp of a spare beam rack to the smaller diameter seatpost of my old folding bike:

3D printed bike shim shim-assembly

This piece is part of a set intended to let my trunk bag attach to the same beam rack. The bag has a plastic rail on the bottom which slots into grooves in compatible racks. I’ve not quite perfected the rail fit yet.

Rack Clip test fit

This small sleeve replaces the folding bike’s original steering joint sleeve. It’s a tough act to follow, as the sleeve must be snug enough to prevent play (disconcerting at speed!) but loose enough to let the pin be inserted or removed with ease to facilitate folding. We printed a couple versions to experiment with different infill (density) settings.

Dahon folding bike steerer bushing Dahon folding bike steerer bushing replacement

With three water bottle cages, my bike already has more fluid capacity than most. That’s no reason not to add hardpoints for two more, though. These little clamps fit the tubing from which my bike’s front and rear racks are built, and can be installed in pairs to provide bolt points for water bottle cages (or other gadgets, I suppose) wherever there is room. Partly an experiment in designing surfaces thin enough to take advantage of plastic’s flexibility for snap-on installation.

3D printed water bottle cage attachments

Programs

I’ve also been writing some little programs to help generate printable objects.

Previously introduced here, hmstl makes printable landscape models – geographic manipulatives – from heightmap images. (The name is a cryptic abbreviation for “Heightmap to STL”, STL being a common 3D file format suitable for printing.) Here’s a picture of the printed output next to the hmstl model:

Printed Terrain Model

The program optionally accepts a “mask” image; masked areas are not included in the output. This can be used to generate models of non-rectangular areas. Here’s an arbitrary example using an oval mask:

terrainmasktest

Here’s a more meaningful example. The heightmap represents the elevation of the area around Binghamton, NY, while a mask image was used to cut out a model of the actual city limits:

bingprint

Another program is ridge-o-gram, introduced here, which produces “lenticular” models from black and white image pairs. The pixels of each image are presented as the left and right faces of a series of ridges, so that one image is seen when you view the object from the left and the other from the right. Intended to take advantage of the Makerbot 2x’s dual extruders by printing the “black” and “white” image components as interlocking perforated layers. Haven’t quite managed a successful print yet, in part because the output is pretty complex and perhaps near the limit’s of the Makerbot’s resolution, at least for non-tiny images.

Under the hood, hmstl and ridge-o-gram both use libtrix, a crude C library I wrote to handle the repetive task of formatting triangle coordinates for STL files output. It is crude in the sense that it does nothing to enforce valid geometry – it’s just the simplest possible shortcut for reading and writing STL files, so it trusts the application to generate printable shapes. A fun exercise in reinventing the wheel, though.

Naturally, I’ve got a bunch of ideas for other parts and programs, including friendlier web-based ways to use the programs, but we’ll save that for later.

Posted on Monday, December 9th, 2013.

Ridge-o-gram proof of concept

Test ridge-o-gram detail

This image shows the first output of a program that converts two black and white images into a pair of interlocking 3D models. The models comprise a ridged surface that presents one image when viewed from the left and the other image when viewed from the right. One model represents the white pixels from both images and the other model represents the black pixels from both images (displayed here in blue).

(Astute observers may notice something odd with the perspective in this video clip – foreshortening is reversed. I had inattentively fiddled with the viewer’s settings before recording the video.)

mmd

Is there a name for this kind of display? I’m sure I’ve seen folded posters or other artwork that utilizes this effect, but without knowing applicable terms I haven’t had much luck finding examples.

The present implementation is a proof of concept. Only the ridged upper surface is currently generated. The plan is to generate a solid base as well, with the eventual goal of producing a two-piece panel that can be printed as single assembly with a dual-extruder 3D printer like the Makerbot 2X. I’d like to make it available as a web site.

Posted on Saturday, November 16th, 2013.