Archive for September, 2012


Inside the Stratasys Dimension Catalyst CMB File Format

Way back I did a project involving 3D printed reproductions for visually impaired visitors of a science museum. The models were created using photogrammetric reconstruction, based on hundreds of photos of the large-scale exhibits. For production of scaled down tactile models, we chose a Stratasys Dimension BST 768 printer (a FDM rapid prototyping system) because of it’s relatively durable output and simply because we had one available for a comparably low printing fee.

After many hours of correcting, re-sculpting and tweaking around the digital models, I went to the catalyst ® ex program to create the toolpaths for the printer. The interface is really simple. You choose an STL file containing your 3d model, choose the orientation, scale and position on the building platform, and some basic build options (layer resolution, model interior fillings and type of support structure) and it generates the data for the machine stored as a CMB-File.
One thing that annoyed me is that the program only reads STL files, which is aa really terrible 3D file format. Nobody knows why the 3D printing guys back then invented this stupid format not containing any connectivity information or vertex indices. They just could have chosen any then established format from the computer graphics of CAD communities. But well, if it is the standard, I will stick with it, as long as I don’t have to read it back.
But, what annoyed me even more is that there is no possibility to preview the 3D printed version. Before starting the print job, I wanted to make sure that the model was nice enough, for the printing resolution, and that the printer did not introduce strange artifacts (e.g. staircase artifacts on slightly uneven horizontal surfaces). After all, our largest print took over 36 hours, and despite the low printing fees, it is not that cheap at all. So simply doing a test-print was not an option.
Unfortunately, Stratasys does not offer any kind of 3D preview. Catalyst ® ex only shows the 2D footprint on the building platform and statistics about the amount of building material and time needed. The co-installed utility program CMB View allows closer inspection of the CMB file (amongst other file formats). This is basically a slice viewer, displaying toolpaths of one build-slice. Using the home, end, page-up and page-down keys, you can conveniently step through all slices. In the (somewhat hidden) CMB Viewing Options pane (menu View/Controls/CMB…) you can choose among the different kinds of toolpaths to display. In addition, the View/Info/CMB… menu shows some meta-information. In fact, as it turned out, the CMB Viewer allows to browse all information stored in the CMB files.
The slice-viewer can actually display the slices in 3D and may be rotated freely. With the “Show one layer only” option (CMB Viewing Options) turned off, you can even view all slices simultaneously. So in order to see the 3D shape, you may turn off all options except part exterior and view all layers concurrently. However, this is only a kind of wireframe view, not very useful for judging the resulting surface.

To make a long story short, I found no way around, writing my own pre-visualization, which involved figuring out the file format of the CMB files and parsing the file in order to generate a true 3D preview. Now, after almost a year has passed since my first digging into the file format and after several people asked me about them, I decided to share them on my blog.

read more »


Map of xkcd’s “Click and Drag”

Today’s xkcd comic has probably the largest comic frame ever drawn. You can explore it via clicking and dragging, as the title suggests. It is so large, that it takes a really long time to go through it. So I decided to create an overview map, to aid you in navigation.

This is what I did:
I figured out, that the map pieces follow the URL pattern[n|s]Y[e|w].png,

where n, s, e, w are characters to select the quadrant, and X and Y are positive integers (>=1) with no zero padding. The images are each 2048×2048 pixels in size and are arranged in an orthogonal grid.

The bounds can be found in the JavaScript file

var size=[14, 48, 25, 33];

These are the bounds of [n, e, s, w] respectively, however, I did only find images for [13, 48, 19, 33], a little bit less in the n-s direction, but maybe I was missing something.

I did a brute force download of all the images (sorry Randall) using simple DOS shell commands like this for the s-e-quadrant:

FOR /L %x IN (1,1,25) DO FOR /L %y IN (1,1,48) DO wget

I got 225 files that existed, all others are completely black or white and returned a 404-Not found.
You can find the sorted list of all images at the end of this post.

After I got all the images, I downsampled them to 1/10th, and arranged them with a little C# hack.
Here you can find the result. Gray marks areas where no images are available. These are either completely black or completely white. On the top and left you can find the coordinates of the png files. I added a white grid, so that you can easier follow the coordinates. The black grid lines mark the border between e-w and n-s, although the latter can hardly be seen, since the whole line is set with images.

This map is again 1/10th of my full map, so 1/100th of the original images (click to see full size, otherwise it’s approx. 1/162th):

Overview map 1:100 of

Overview map 1:100 of

You can download the 1/10th map here.
For the full images, please visit

Thank you Randall, and keep up your great work!!

Edit: Other people’s approaches

read more »

Tags: , ,
%d bloggers like this: