Archive for February, 2014

3D Printing software

Friday, February 14th, 2014

I’m looking for a good solution for 3d printing, but have run into show-stopping problems in everything I’ve tried (I need to combine a mesh with a geometric object). I’ve used AutoDesk Inventor Pro, Sketchup Pro with extra plugins, MeshLab, NetFabb, OpenSCAD, TinkerCAD,  and some others. Blender looks like it might be capable, but it’s an enormous effort to get into it far enough to tell. It’s extremely modal, and tools disappear when I need them, but reappear when I am doing something else. Maya has also been recommended to me, but that too has a difficult learning curve.

The fundamental problem is that if you do a Boolean operation on two 3D mesh solids, the result is no longer a valid 3D mesh solid. The repair tools can work on the result and be made happy, but Sketchup still refuses to consider the result a solid so won’t allow further steps to be done.
I’ve spent days and days trying to get past this barrier, trying tools and trying hand repairs, always stopped by one insurmountable (by me) problem or another.
There are an enormous number of combinations to learn and experiment with, so this could take a very long time (or I could give up until the software matures).
If anyone can recommend a path that can combine geometry with (valid) mesh solids in a way that can be made to result in a valid mesh solid (so that I can print it), I’d sure appreciate the advice…

More history and ranting

My current struggle started with a Sketchup Pro model done by someone else, modeling a complicated aluminum extrusion. I made a mating part to plug into the end of the extrusion, and printed that, only to discover that the real extrusion is slightly different from the drawing.

I couldn’t make Sketchup do the needed reshapes without it screwing up (I know there must be a way, and now I know that Layers mean something totally un-layer-like in Sketchup, and you are supposed to use nested Groups to get layer-like effects.)

Somehow in the process, Sketchup stopped thinking I had a legitimate solid, so I exported it to STL and used NetFabb’s repair tools on it, which wrap the object nicely (I thought). I eventually got an object that prints and fits properly in the real extrusion, but now I need to add a rounded bulge to it–the project is to make safety bumpers for the extremely sharp extrusions, to save my clothing and my skin. The extrusions are EurekaZone track-saw related products, and I’m always running into them as I walk around my work table or duck under to get tools off the shelves below.

Anyway, I can’t get the Sketchup part that prints and fits to be considered by Sketchup as a valid solid (indicated by Sketchup displaying a volume measurement for it), and until that happens I can’t further modify it in Sketchup.

There are plugins one can add to Sketchup (Solid Inspector, Solid Solver, etc) that analyze a mesh looking for problems and helping you fix them, but I can make them happy (with a lot of effort) and yet Sketchup itself won’t accept the result.

I’ve used various tools to examine the form, and by removing a skin I can look inside, and see little starbursts of spurious vertices that have somehow been created in the process of manipulating the STL mesh. The triangle count went from around 10000 to 1500000, so it’s not easy to fix manually, though I’ve tried. They are often connected to external faces, so if I select a cluster of vertices and delete them, some of the external faces also disappear. Of course, I can replace those manually too.

One approach that appeals would be to delete all but the external surface vertices, and then manually add the real edges and faces back, but I don’t yet know how to do that. I no longer know the true dimensions of all the features, because they were developed in a process of repeated reshapings, but some tools are able to show vertex coordinates, so I should be able to find them (but it’s very tedious–I likely need a few hundred, a lot to write down if it comes to that).

MeshLab looks capable, but you need to know the Mesh business in order to know what to tell it to do. There must be suitable books somewhere, but so far I haven’t found an easy entree that makes MeshLab approachable. I can’t face just trying everything to see what it does.

Blender looks promising, and I started using it, but the interface is difficult. In an experiment, I managed to select two vertices and wanted to put an edge between them, but could not find a tool that makes edges! Obviously there exists such a tool, and I’m sure I saw it once, but now I can’t find it. If your hands brush against the keyboard, every key you touch does something, often apparently irreversable (you can undo the actions but not the mode changes I think), and leaves you in a mode you’ve never seen before. (This must be an exaggeration. Surely.)

I’ve been working my way through a Blender book I bought, but it is aimed at amazing goals like making proper textures, base meshes, etc in preparation for making movies, so it’s going way too deep in directions that I’m not currently interested in, but I need to have some acquaintance with those topics if I’m to recognize some new context I suddenly get switched to so I can figure out how to get back.

Of course, this is not an important project. I could solve my problem by gluing bits of carpet to the part I can print now. But I want to know how to do such things, and it surely must be possible! Somehow the current software seems simultaneously extremely sophisticated and extremely primitive…

I spent 5 hours yesterday printing my first DualStrusion project, a blue Valentine heart with some white text embedded (but slightly raised). The print finished when the heart surface was reached, leaving the white text (mostly hollow) without its top layer. Sheesh. Not my fault…
I’m tempted to get into the GCode level, which I do regularly with laser cutters and milling machines. Then it really will be my fault…

My most satisfying way of doing CAD in 2-2.5D for laser cutters is writing PostScript code, which allows me to parameterize everything in a sensible way. PostScript becomes PDF, which has a laser cutter driver. Presto.

Perhaps the way to get that kind of control for 3D printing is to drive FreeCAD from Python, or SketchUp from Ruby.

I rather like OpenSCAD, but it is very limiting. I recently wanted to print standard pipe threads, and there’s no helical extrude in OpenSCAD that can do it, so I spent a couple days generating thousands of thin triangular solids in the appropriate locations, hulled them together in pairs, unioned those, then subtracted them from a solid. Doing it in Python would be a lot easier. Furthermore, OpenSCAD takes over an hour on a fast Mac Pro to render the result so you can export to STL for printing! I published my solution on ThingiVerse.

If I ever figure out how to do these simple things simply, I should write a book. Sorry about this rant…

Update 24 February 2015:

AutoDesk Fusion360 Ultimate, currently available at no charge, looks very promising. It’s a rewrite from scratch that combines features of Inventor Pro and some of their other software. It’s a hybrid of a direct editor and a history tree-based editor. It still has some gaps, but works at a very useful level. And, it directly supports generating tool paths for milling machines or routers!