8 ms·
ImplicitCAD: Powerful, Open-Source, Programmatic CAD
- TD-Linux 12y agoHow does this differ from OpenSCAD? The example looks nearly identical.
- irickt 12y agoThe example is the same. ImplicitCAD is a prototype project written in Haskell. OpenSCAD is mature, active, and written in C++ and other languages.
- maaku 12y agohttp://www.implicitcad.org/faq#implicitcad-and-openscad http://www.implicitcad.org/faq#implicitcad-and-openscad
- mkeeter 12y agoThey're using different representations for solid geometry. ImplicitCAD is using implicit surfaces / functional representations, while OpenSCAD is using a boundary representation (which is a lot more common in commercial packages). Implicit surfaces are a very nice representation and make certain operations very easy: booleans become MIN or MAX functions between two functions. However, it becomes much harder to do feature-based operations -- a task like "bevel that edge" is tricky when the edge is an emergent property of the function, rather than as part of the model's explicit representation.
- colah3 12y agoAuthor of ImplicitCAD here! I had some neat tricks that made beveling most edges really easy! (Though, when the didn't work, it was pretty messy.) Please keep in mind that I abandoned this project 2+ years ago, and started it four years ago. Things have come always since then. OpenSCAD was less mature when I started.
- doczoidberg 12y agobest opensource CAD application is FreeCAD: http://www.freecadweb.org/ http://www.freecadweb.org/ It is not very easy to learn but has many features of commercial applications including scripting via python.
- kanzure 12y agoWorking with FreeCAD means maintaining OpenCASCADE, here's my notes (hopefully this will help you get a sense for what you're signing up for): http://diyhpl.us/wiki/cad/opencascade/ http://diyhpl.us/wiki/cad/opencascade/ I think that OpenCASCADE is very difficult to maintain. At least half the variable names are "aMPBLPB" and "aMPBLI", the other half are some strange combination of Russian, English and French. I think that to insulate yourself from the actual CAD engine it would be a good idea to use cadquery, a python library that is aiming to let you switch out the actual CAD implementation without (dramatically) rewriting your source code. At the moment, I think the two biggest players in the CAD kernel landscape are verbnurbs ( http://verbnurbs.com/ http://verbnurbs.com/ ) and solvespace ( http://solvespace.com http://solvespace.com ) (which includes parametric modeling and constraint solving, btw). Both are very well written, well documented, and well tested. BRLCAD also has surface-surface intersection for NURBS, although I don't remember all the caveats....
- Sodel 12y agoFirst off, thank you for mentioning Cadquery and Verb. I've never heard of either, and they're both interesting. Cadquery in particular looks very promising. Solvespace is a genuine joy to use. If making chamfers, path-based operations, and other such features were better supported, I'd gladly make it my primary CAD package. It was released as open source pretty recently. I really hope some more development takes off.
- doczoidberg 12y agoThanks for your notes. As mentionned there is a python interface for FreeCAD. There is no need to know OpenCascade. I didn't know verbnurbs and solvespace. Verbnurbs is only a simple NURBS library. Solvespace seems to be more comparable to OpenCascade. I will look deeper into it.
- vic20forever 12y agoRelevant: https://news.ycombinator.com/item?id=8631804 https://news.ycombinator.com/item?id=8631804
- pwnna 12y agoSo I've looked at potentially working with OpenSCAD before, but unfortunately had to go back to something like Autodesk Inventor before really starting. The biggest problem I have with all open source 3D CAD systems are the lack of parametric modeling. If you're unfamiliar with this, this basically is setting constraints on your geometry. For example, you can say that edge A has the same length as edge B, and it mirrors across plane C, which is 10 cm away from the primary XY plane. This is essential to my workflow in 3D modeling and makes most geometry based operations (such as specifying that edge A is 10cm and starts at 3,4) obsolete. It also allows easy assemblies: you can specify the axis of shaft A need to be coincidental with the axis of hole B. Plain text based 3D modelling would be awesome as you can use reasonable revision controls and have reasonable merge strategies.. but the lack of parametric modelling, at least for me, is a deal breaker. I've looked into writing a library for parametric modelling in Python, but then I realized that you probably need to be a PhD in geometry to write a correct implementation with reasonable speed....
- kanzure 12y ago> I've looked into writing a library for parametric modelling in Python, but then I realized that you probably need to be a PhD in geometry to write a correct implementation with reasonable speed.... Well, here's a video of sympy + OpenCASCADE for parametric modeling: https://www.youtube.com/watch?v=ZUCv7COgzU0&t=25s https://www.youtube.com/watch?v=ZUCv7COgzU0&t=25s but see also my other comment for my thoughts regarding OpenCASCADE..
- kaoD 12y ago> The biggest problem I have with all open source 3D CAD systems are the lack of parametric modeling. I remember doing that in FreeCAD. Maybe I didn't get all the intrincacies and you mean something bigger than what I tried, but there was definitely a constraint system. EDIT: Found a video https://www.youtube.com/watch?v=qY_GGTa9-mU https://www.youtube.com/watch?v=qY_GGTa9-mU Is this what you mean?
- pwnna 12y agoAFAIK FreeCAD has a 2D constraint system. I need a 3D one to really work efficiently.
- eternalban 12y agoBack in '91, there was a mini putsch by the TAs of Columbia GSAPP's CAD course. The existing course and supporting software were based on computational geometry and a scripting language to go with it. The new regime brought in Maya, et al. I think I was the only one who lamented and found it a step backwards..
- colah3 12y agoAuthor here. Sorry, I abandoned this two or three years ago. Please look at this in the context of a project done several years ago and never completed. (I do ML research these days -- you can see my blog here: http://colah.github.io/ http://colah.github.io/) Julia Longtin took up working on ImplicitCAD a few months ago. I'm not sure how much she's progressed with it. Honestly, I no longer believe ImplicitCAD was the right approach to the problem, or that there's even as much of a problem as I originally thought. In particular, the system ImplicitCAD uses to represent objects, a variant of f-rep (http://en.wikipedia.org/wiki/Function_representation http://en.wikipedia.org/wiki/Function_representation) has issues. (f-rep is awesome, I just tried to have my cake and eat it too with some trade offs, and thought I was being really clever! :P) After ImplicitCAD, I worked with Rob Gilson on a SVG/WebGL constraint-based modelling tool, mech.ly. We got some neat stuff working, but never got to a point where we wanted to release things. I'm pretty persuaded this is the right direction to go. I learned a lot from both projects. I also matured a lot intellectually. For example, I now review academic literature before diving into solving hard problems! :)
- ics 12y agoAs the submitter I just want to say thanks for dropping in to comment. As a professional CAD user and hobby Haskell learner, I found the project very interesting and thought it was worth sharing. If you ever feel like sharing I'd be very interested in reading a post-mortem of your work on ImplicitCAD or any other CAD-related software.
- moeamaya 12y agoI second this; it's really motivating to learn about an emphatic approach to an idea that ultimately resulted in an oblique transition. A post-mortem would help those interested in solving similar problems start from a more informed base.
- sklogic 12y agoSome time ago ImplicitCAD inspired me to try a somewhat different approach: using the same OpenSCAD source language, generate OpenCL kernels for efficient, explicit CSG splicing (no meshes, triangles and stuff, only the nice continuous surfaces).
- bitwize 12y agoIt's a neat tool for programmers, but mechanical engineers don't want no part of this. What they want is something that operates visually and lets them design parts and assemblies with direct manipulation and shaping of 3D objects, applying constraints and invariants, etc. This is why the industry has standardized on tools like SolidWorks and Inventor -- those tools operate the way a mech eng thinks. Knuth ran into the same problem with METAFONT for typography: 99% of designers were not skilled enough at programming to effectively create beautiful fonts with METAFONT, nor did they wish to be. And today METAFONT is nowhere while Type1, TrueType, and OpenType proliferate.
- sklogic 12y agoReally? I've been working for a CAD company which only recently (about 10 years ago) got visual modelling for their 30+ years old product, and still a majority of their customers do not want to use it, preferring a huge, convoluted, awful text-based language instead.
- auxym 12y agoI agree with this, the process of mechanical design very much involves messing around with things visually. I've interned in a place that still used "good old" 2D, non-parametric autocad, and a lot of the "premilinary" design work took place on scratch pieces of paper. Sketch stuff up quickly, see how it looks and fits together iterate. Move to autocad for a to-scale sketch, then to drafters to the official engineering drawings.
- leoedin 12y agoFor anyone looking for an open-source parametric CAD system that is robust and functional enough to use on real projects, try SolveSpace[1]. [1]: http://solvespace.com/index.pl http://solvespace.com/index.pl For some reason it's barely known about, which is a shame as it's by far the most powerful open-source CAD system I've used. The parametric modelling system is very similar to that of commercial CAD software.