### Remember to Post a Make!

Remember to come back and post what you've printed as Make.
It's good for the designer and the community (that means you)!
To post a Make, come back to this Thing and click **Post a Make**.
Or, you can use the Thingiverse Mobile app found on
Google Play
and the Apple App Store.

Is it possible to use your minicad to export mathematical functions to .STL files? I have been painfully trying to get an open-source software which would do it.

This is exactly what miniSageCAD does. I too was frustrated to being unable to quickly turn mathematical functions into 3D printable models (The situation may have improved by now 2016-03 - I haven't checked recently).

You have to get your function into the form of an algebraic variety that is f(x,y,z)=0.

And plug it in at the end of the code (there are a few usage examples) and execute it in sage

Be prepared for long rendering times!

That's amazing! However I downloaded it and in the text files there are no instructions like a quickstart. Since Sage has a lot of different packages and databases, I don't quite know where to start. I am still looking into it and I think I will eventually find the way, but a quick README telling these directions wouldn't be a good introduction?

When I wrote the code there where no dependencies that where manually to add.

Back then I used locally installed Sage - Now there is SageMathCloud too:

https://cloud.sagemath.com/

I don't know if it will work there too.

How to implement hull or smth for emulating "extrude along the curved path"? In OpenScad I can do this via

union(){

hull(){

translate([0,0,10])rotate(15,[180,0,0])cylinder(h=0.1,r=5);

translate([0,-15,50])rotate(45,[180,0,0])cylinder(h=0.1,r=12);

}

hull(){

translate([0,-15,50])rotate(45,[180,0,0])cylinder(h=0.1,r=12);

translate([0,-30,70])rotate(60,[180,0,0])cylinder(h=0.1,r=20);

}}

Yes convex hulls are painfully lacking.

The reason is that convex hulls are rather nontrivial:

http://en.wikipedia.org/wiki/Convex_hull_algorithmshttp://en.wikipedia.org/wiki/C...

I think todays practically used algorithms are all vertex based.

You'd have to find a general way to generate an implicit function Surf(c):={x,y,z|f_hull(x,y,z)=c} such that forall c: Surf(c)=boundary(hull(Surf1(c),surf2(c),..)) without relying on vertex based algorithms. I guess that there isn't a noniterative direct way to do that. A hull of compositioned objects (planes & tubes) like your example is even harder. Concrete example: For easier reasoning imagine the convex hull of two circles in a two dimensional room. The implicit function for a circle is a cone. You'd have to generate a "roof" from this two cones only with elementary functions (provable impossible?).

Special cases could be implemented though. And I think this (with auto case choice) is a good way to go. Sadly two arbitrary orientated circles like in your specific case will not work this way. But e.g. a truncated cone as convex hull for two spheres will. In Haskell types could carry the necessary information or monads, but in sage I see hurdles/limits.

Another (less powerful) approach for things similar to this would be to to define an implicit function by the minimal distance to an user choosen parametrically defined spacecurve x(t),y(t),z(t).