Ask Slashdot: Best 3-D Design Software?
An anonymous reader writes "I'm just getting into playing around with various maker-related tools, and I've run into a bit of a roadblock. I have access to a 3-D printer, a CNC mill, and a bunch of other fun tools, but I'm not able to make my own designs to use on them. I'd like to learn some 3-D design, but there are a ton of different software options, and I'm not sure which is the best. I've been hesitant to jump right into one, because I don't know how well it'll suit my needs compared to the others, and many of the options have a pretty steep price tag. I also don't want to spend a bunch of time learning one only to find out it's not very good for actually making things. I've played around briefly with Solidworks, Alibre, and AutoCAD, and also some free options like Blender and Sketchup. But these are complicated piece of software, and knowing nothing, it's hard for me to evaluate the differences. Makers of Slashdot, what do you recommend? Also, if you know of good online resources for learning 3-D design in general, or on any of this software in particular, I'd love to see it."
Rhino is an excellent surface modeler. People need to understand that a solid modeler is a different animal from a surface modeler. Solid modelers are usually parametric and are good for nested objects and assemblies. Surface modelers are good at smooth ergonomic designs. Many people use both to complete projects.
It'll always create closed meshes and is simple enough for beginners to use with more advanced modes available as you learn more. It can also export to a wide variety of formats.
As someone who has used AutoDesk Inventor, PTC Elements/Pro, and Solidworks in an engineering setting, they are all pretty much the same toolset but with the buttons rearranged. If you want to use CAD software, though, what really matters most is whether you can find a guide that is well-written on how to use CAD software for things. You may, in fact, want to take a course at the local community college. Whatever software they use, you can then buy and be at least moderately experienced with it.
My college uses http://www.amazon.com/Introduction-Solid-Modeling-Using-SolidWorks/dp/0073522694 this book and it's pretty well-written, if you would rather avoid having to take a course. Solidworks is very capable of doing anything a hobbyist might want to and more.
The Guerrilla guide to CNC machining, mold making, and resin casting is probably one of best resources you can find.
Except that "Design Software" is something "slightly" different. Think Rhinoceros 3D or StudioTools. Blender sucks, surface-wise.
Ezekiel 23:20
If you come from a programming background, you might have a look at OpenSCAD (http://www.openscad.org/). It's a FOSS tool which allows you to do constructive solid geometry (http://en.wikipedia.org/wiki/Constructive_solid_geometry) through a programming language rather than a GUI (though you do have a GUI for visualization).
It's pretty cool as it allows you to create parametric objects : for example, there are libraries to generate gears by specifing parameters such as radius and number of teeth.
Quite a few projects of the reprap family are developped with this tool.
Solidworks, AutoCAD (CATIA, Unigraphics PRO/Engineer etc.) are software designed for engineering and understanding what they're all about, even if some have some handy CNC extensions(both proprietary or created by others) would require some relevant education in the field; I suggest you play around with the stuff people use for the gaming industry (Maya, Milkshape, Rhino). Anyway, my 2 cents.
I would suggest you start on 3D printing as that has the most intuitive manufacturing paradigm (YMMV but still...). The easiest solid modeler to learn is probably Tinkercad: https://tinkercad.com/. Blender and Sketchup are not solid modelers. They CAN produce manufacturable (i.e watertight) meshes if you know what you want from them, though. I would suggest you try 3D printing with Tinkercad to get your bearings and then figure out where to go next.
I tried Wings3d first, and it's easy to get into and make some compositions of cubes and spheres and whatnot. There's a good starting tutorial here where you make a simple table.
However, as a programmer, I find it much faster and more intuitive to use OpenSCAD. Instead of clicking on things and moving them around on the screen, you edit code that generates the objects. There are thousands of examples to get you started at thingiverse. Here's one of mine.
At the other extreme, Google Sketchup is excellent for the "click and drag objects around" approach. Its UI is way more powerful than Wings3D, and it may even be an easier starting point for non-programmers.
Alibre is worth learning if your serious about CAD/CAM. The personal version is only $99 and should do anything you want outside of NURBS. You absolutely don't want to use something like Blender for 2D/3D precision work.
Alibre tries to follow the Solidworks way of doing things, so if you learn Alibre then you can quickly migrate to something more high-end if you ever need too.
It has support for full parametric solids cad, so it isn't the old school Autocad stuff where you have to pretend you know what its going to look like from your 2D sketches.
When your ready to cut metal, or print plastic, Alibre can output a number of solid models (STL) formats, as well as DWG and DXF which are critical for using importing into a good CAM package (whole nother ask slashdot on choosing a good CAM).
Alibre has some pretty easy to follow tutorials to get you started.
I don't work for the company, just a VERY happy camper when I bit the bullet 2 years or so ago and got the $99 version. Used it to design a 3D printer down to every last nut/bolt.
Yes its a challenge, but like everything worth doing...
Last, but not least, get plugged into the forums at cnczone.com. They have categories for every type of machine from mills, lathes, to 3D printers; from every type of CAD package to every type of CAM. Its a great asset, and once your hooked you'll spend more time reading on cnczone than here on Slashdot (sacrilegious i know).
I have been doing 3D modeling for over 25 years. If you really want to get good or create some neat stuff, it doesn't matter what program you use. They are all "hammers" and we all prefer a particular "handle" to pound nails. If you really want to do some scripted 3d renderings, use POVray, If you want a program with a UI Blender,3DSMax, or something along those lines works great. If you need precision, any form of AutoCAD works great. Pro/E and others like it are a bit more difficult. Pick a program and buy a book and learn to use it, or search YouTube for video tutorials. I use autodesk programs and I am in the ADN, because I enjoy writing my own plugins and all autodesk programs are fairly easy to write add ons for. If you want to create great models you will, but you will have to learn the terms and quite a few complex operations regardless of the program used. That's just the reality of it.
It's amazing.
The command-line in Rhino is robust (scriptable via Python) and Grasshopper allows node-based geometry workflows (like Max/MSP, Houdini, Quartz Composer, etc). It also allows you to create complex scripts and control their input in real time. Rhino is impressively accurate (algorithm-wise) for its price. I've seen this setup where my girlfriend studies architecture, but also at NYU's interactive telecommunications program (where I study) - two places that have quite different requirements (one designs large-scale and shares with engineers, one designs fist-scale and prints directly), yet it serves them both quite well. I wish all of the 3D programs I worked with had this workflow.
One major caveat is, however, that this stack works only on windows. Grasshopper is written in .NET (and, until recently, only scriptable in C# in VB - python is new and experimental). But it'll take you a long time to hit a wall with the available functions and have to write something.
AgentCubes/Inflatable Icons allows you do create 3D shapes very quickly with no 3D modeling background. Paint images in 2D and turn into 3D. You indicated that you are struggling with 3D tools such as Blender and even Sketchup. I guess I don't know what kinds of shapes and what kind of quality of 3D shapes you have in mind. We have been exploring for some time why many people have problems using these kinds of tools. The short answer is that these tools are aimed at typically professional 3D designers or, more generally, at people with a lot of time at their hands to learn an interface with a steep learning curve. If your goal is to produce 3D shapes of the Pixar level quality then there just is not way around these kinds of tools. If, on the other hand, you just need to build very simple shapes that you can produce in, say, a couple of minutes, and maybe print that on a 3D printer then perhaps Inflatable Icons may do the trick.
A benchmark with Inflatable Icons was that if it takes more than a minute to explain how to make a 3D shape it is too complex. The idea is to make casual 3D tools. We have tested this with many kids and it works great. The short version of the concept is that practically all 3D tools work on the "First Shape then Paint" while we have flipped this around to be "First Paint then Shape" You are basically drawing a 2D image first using a Photoshop-like editor. Then you use tools including inflation to turn then 2D image into a 3D shape.
video: http://www.youtube.com/watch?v=2GWcb3aG2w0&feature=player_embedded
sample Inflatable Icons (you can even edit them in the browser): http://scalablegamedesign.cs.colorado.edu/arcade/
I'm trying to understand what you are asking for, and I'll just take a wild guess and say that you are a complete beginner who really wants to use advanced tools to make some stuff, not just a saw+hammer+nails?
Consider what you are asking of your CNC/printer/etc. vs. what you want to create. If you want to make things that are composed of many things attached together for some function, then the idea of make something in 3D becomes a layer of more of complex considerations. If you want parts to fit and move, or not, in a certain way then you have added yet another layer of complexity. There are many options available at many price points. If you want to create geometrically (mathematically) precise parts, then a NURBS surface or a solids modeler will be very helpful. If you want to create assemblies with parts that mechanically fit together and function together properly, then it would be wise to consider an app that can provide associativity and assembly functionality. If you want to create organic forms that don't need to work functionally together (ie slide, rotate, not move, etc.) then you can utilize the organic, yet relatively imprecise mesh modeling apps. The two types of software (mathematically precise and polygon mesh modelers) rarely work well together, at least in my 20 years of experience. There are apps that will get around this impediment, but they can be pricey.
If you are going to make things then output from the design process (CAD) needs to transfer/output/export to the next phase (CAM), and from there to your advanced tools/machine. I am not trying to advocate, just explain the process and the steps between the phases.
If you want relatively cheap but good 3D software that can output to CAM and 3D Printer, you can try ViaCAD ($), FreeCAD (free), and some others.
Wow, its difficult not to go into detail. I've erased 1/2 of what I typed and tried to answer all of the OP questions without going over board.
True that. It's surface tools are almost non-existent. There has been talk of integrating a better nurbs library (Nurbana) into Blender, but I don't think much has come of it. There just isn't much demand. Blender targets artists, not engineers. If you're going to be creating an object for rendering, there are very few reasons to ever use nurbs over subdivision surfaces. Subdivs, while lacking the precision, do not have the same topological constraints.
Not familiar with computational design? Check out some of the examples on the processing gallery.
123D Design from Autodesk is free and compatible with 3D printers.
Here's a guy who used it to replace a critical piece of a mounting bracket for his TomTom GPS.
The video gives you some insight into the workflow from design to 3D printing.
Blender.
When learning complex and powerful software look for two things: Cross-platform & Open-source.
Cross-platform code is usually much more stable, having a healthy abstraction layer from the os.
Open-source: It can never be taken away from you - say you learn autocad, and use 1 feature allot, then there is a new version of windows and it's not compatible with your autocad, so you get new autocad, but that feature isn't there anymore. if it were opensource you could maybe do something about it.
You put the two of them together and you also get the benefit of possibly flying anywhere in the world, and being able to download powerful software that you already know how to use on whatever computer they have there.
I started 3d modeling on truespace, and the many hours (and dollars) i spent on that are gone forever now.
Not to mention stuff tends to move around with every single version so a tutorial for version 2.55 may not be applicable to 2.66. It wouldn't be so bad if they documented things, but this is sadly not always the case. Just take the bevel took for example. I don't think that's stayed in one place for any of the past 10 or so releases. Sometimes it's a tool. Sometimes it's a modifier. Sometimes it's under the "w" menu. It can be frustrating as all hell if you don't keep up with every release. Skip a few and it's like learning the program from scratch again.
Since your goal is 3D printing or CNC machinging I would say you definitly want a "Solid Modeler" type package. I prefer SolidWorks personally, In my experience it's the defacto among small to medium sized manufacturing shops that keep up with the times, Pro-Engineer is popular too. AutoCAD seems pretty popular among shops that are a little behind the times.
Larger companies (Auto and Aerospace manufacturers) tend to use packages such as Catia, but that's way overkill (and way out of budget) for 3D printing and the like, it's more suited to massive assemblies with thousands or millions of components. Solidworks isn't without it's faults but I find the interface fairly intuitive once you learn the basics and it's perfect for small-scale stuff. I've used it many times to design small components and assemblies for car and computer projects among other things. Most professional software solid-modeling packages can export to whatever format you'll need for your 3D printer, CNC software, or whatever it is that your manufacturer requires.
You want a solid-modeler like Solidworks/Pro-E/Catia/etc because they're all designed with dimensional accuracy in mind. Surface modelers are generally used for 3D graphics production and have a higher concentration on making things look good than being dimensionally accurate. It's like the difference between MS Word and Adobe Photoshop... if you want to write a book, Word is probably the better software, but if you're designing a poster, Photoshop is probably the better choice... both create "documents" but they have very different uses... similarly if you need a 3D design software for manufacturing or real world production you want Solidworks, but if you wanted to make a 3D move or game Maya would be a better choice.
Collector's Edition
I'm not a complete CAD junkie or anything, but I've used ProE, SolidWorks, and even CATIA. If I wanted to just design something for fun, I'd probably reach for SolidWorks first. It's really powerful, but also really intuitive and easy to use (at least the more recent versions).
I've heard a lot of good things about Rhino, too (and many others have called it out here), but I haven't used it personally, so I can't compare it to the others above.
Subdivs, while lacking the precision, do not have the same topological constraints.
I am puzzled by the "lack of precision" assertion. I use Blender for artwork, and occasionally for architectural models. It can be easily set up for meshes with sub millimeter accuracy within a 10 kilometer cubic universe. Its 3D cursor system allows precise placement of a vertex or object anywhere within that space, or precise location of an existing vertex, or extremely accurate placement of a new vertex or object at a point interpolated between the location of two or more existing vertices. Though for some interpolations, you do have to construct a simple temporary mesh to get very high precision: Euclidean geometry in 3 dimensions.
Blender does have some weaknesses. But its mesh modeling capabilities are pretty good, and for the purpose being discussed, the limitations in its nodal textures, its new render engine, its compositing features, and its video sequence editor will not matter since there would be no need to use them. OTOH, the ability to export a mesh constructed in Blender to the common CAD formats make it possible to easily work up a design in Blender, then export it to tools that can develop materials lists, cost estimates, and so on that true CAD tools can generate.
I don't know if Blender is a good tool for what OP wants to do, but it certainly has enough accuracy for any real world 3D design work.
Will
I've been trying to work up a list for use w/ a Shapeoko here:
http://www.shapeoko.com/wiki/index.php/Advanced_Software
Still haven't found a suitable package (for my needs) --- all-too many of them can't do real curves / arcs and fake them w/ polylines --- so I've been hand-coding G-code.
I'd be glad of additional apps/packages or information.
Sphinx of black quartz, judge my vow.
Since this is /. I'll start with a programming analogy. Imagine someone saying: "Hey, I got one of those rasberry pi computers and a bunch of stepper motors and I want to build a robot." Sure you could do it but you would need to be ready to put in some time and a lot of hard work.
CAD design is a field, just like programming. You need to learn some basics of design (drafting in the days of old) first. This doesn't mean that you need a degree but it does mean that you should be a bit organized in how you approach it. Here's my suggestion:
1. Pick a program that will let you do 3d modeling that you can easily aquire. Pick wisely so that you only waste 1 strike if caught =)
2. If you do spend money, don't spend a lot. This could be a momentary interest/hobby
3. Get a book that teaches the basics of design with the program that you chose
4. Start simple
5. Be patient
I do 3D printing and talk a lot to the designers of the big printers. As mentioned above, you definitely don't want Blender, or any of those other surface modelling apps. They WILL work, but tend to suck for dimensional accuracy, and you can create weird crap that cant actually exist.
I think if money is no object, Solidworks is by far the easiest and most powerful thing you can jump into, with tons of resources on the net. If you can afford the price tag or are going to pirate it anyways, Solidworks is great.
The mendelmax series of printers is designed by maxbots. He personally uses Alibre. He says it does a lot of what solidworks does, and with some caveats, thinks that for the 99$ it is a great tool and all you'll ever need for basic 3D modelling. Depending on your patent stance, 3D systems owns a shit ton of patents on 3d printing in general and they don't hesitate to use them to close down infringing competitors. This may sour you.
If you want a fairly nice option that is getting nicer every day, FreeCAD is obviously free, open source, and is a fairly nice tool. Obviously no Solidworks, but the price is right!
And the last but certainly not least is OpenSCAD. You write your 3D models like programs, and it will render them. This allows some very cool time saving things, but it is obviously a bit less visual, so it depends on how you think, design, etc, and what your background is. Many of the things you will make in OpenSCAD will end up being parametric as well, making resizing and changing things somewhat easier. That being said any of the above tools can create parametric designs.
Anyways good luck, I love 3d printing, and would love to get a mill some day! Or maybe just start casting my prints using the lost PLA method: http://3dtopo.com/lostPLA/
Have fun!
It's easier to fight for one's principles than to live up to them.
Placement of individual vertices isn't really the issue. The issue is control of curvature between the vertices.
For example... in Blender, try to make a cube with a cylindrical hole in it. The four square faces of the cube are no problem; they can be specified exactly with polygons. The cylindrical hole, OTOH, is more of a problem. You will end up with an approximation to the cylindrical hole, but not an exact cylinder. You will also have to get your approximation at the right level of detail on the first go, because there's no easy way to re-generate at a higher level of detail without re-making the entire mesh.
Compare with NURBS modeling... with NURBS, the four sides of the cube are plain NURBS patches; basically the same as the Blender polygons. The sides with the circular holes in them will be specified with trim-curves which (in this particular instance, but not always) can exactly specify a circular hole. The cylindrical hole will then be a single patch which is mathematically identical to a cylinder. The entire NURBS solid can be generated to any level of detail using tessellation. It's not necessary to specify the level of detail until you actually output the solid for machining, 3D printing, or whatever.
This describes the "precision problem". The problem is not individual vertices, but control of the curvature between them.
As another poster said, most CAD packages have a terrible UI. Be prepared to spend lots of time.
SketchUp is a pleasant exception, but that's because it has relatively few features. Nevertheless, it's a good starting point. Use it until you run into its limitations, and use the knowledge you've gained to make an informed decision about your next step.
I've recently started using PTC Creo Elements (formerly Pro-Engineer, I believe). It couples a very complicated UI with useless documentation.
I've also used Inivis AC3D. After running into SketchUp's limitations, I tried a number of CAD packages, and this what I ended up with. I wanted an application where I could use at least some of my Adobe Illustrator experience, so I downloaded a couple of programs and tried drawing a simple curved shape (a rocket engine nozzle) in it. AC3D was the only one where I managed to do this within an hour or so.
Its drawback is that it doesn't do parametric (Bezier) curves.