Freecad is an amazing tool. It is based on the open source CAD kernel OpenCascade: http://www.opencascade.com/
If you want to do CAD directly you can use OpenCascade directly or if you can use its various wrappers. The Python OCC wrapper is quite nice: http://www.pythonocc.org/
We use both Python OCC and FreeCAD to help with handling CAD data import/export in http://Clara.io
Although if you are interested in create CAD online, I recommend http://onshape.com
I worked on a project that used the OpenCASCADE CAD kernel, and our conclusion was that it still has a ways to go. We often got errors with boolean operations and the speed of operations was generally slow.
OpenCascade is pretty much the only open source CAD kernel. There is brlcad, but that can only do CSG.
We tried parasolid, then we got forced into using ACIS. We didn't really end up with much of a complete product in the end as this was government funded research.
Wow, was this Darpa's iFab? I don't recognize you from your username but I wouldn't be surprised if we worked together in some indirect way. I had literally the same experiences and explored all those same kernels. ... We concluded that the issues with OpenCascade's Boolean operations were so baked into the code that they'd probably be better off with a total rewrite. From what we could tell digging in the code, they tesselate the BRep, do a boolean on the tesselations, and then try to match the results back to the input surfaces. This ended up with all kinds of nonmanifold surfaces, edges, and vertices, in addition to taking minutes to hours to return an answer, if it ever did return. One guy took a pretty deep dive into that code to try to figure if he could optimize it, and it was bad in so many ways, like it was doing something that required tons of triangles to be copied and reconstructed over and over. ... I'll give OpenCascade credit for one thing though, which is that an STL generated from a manifold input STEP or other file format will actually be a manifold STL (i.e. crack free etc to the level of assuming "identical" vertices will be bit for bit identical in the STL file). Try making even a trivial part into STL with Solidworks and I virtually guarantee that "identical" vertices will not be bit for bit identical. There will be cracks and you'll have to correct for them. I've never had that problem with OpenCascade. Whatever there tesselation algorithm is, it at least makes crack free results.
Interesting to read about some real world experiences with Open CASCADE 'in the wild'.
What version of Open CASCADE did you look into the Boolean operations? The experience I have is also that they are not very fast, but more in terms of minutes not hours. From what I know there are 'old' style and 'new' style Boolean operations in the recent (6.9 and 7.0 beta) versions of Open CASCADE and the experience I am talking about is the 'new' style Boolean operations.
How big were the typical shapes you used, in terms of number of vertices/edges/faces? And for these shapes what was the comparative speed in Parasolid or ACIS kernels?
Do you have any examples of these? Lattices and gradient structures are cool, but the problem is it's difficult to actually make these structures. 3D printers can make these structures, but they only accept data in B-Rep. Not to mention the 3D printers that can make these structures have closed controllers and run with proprietary software. The AMF file format can actually represent these things[0], but no one uses AMF.
Another problem is how does a human actually design these structures? 3D gradients are going to be hard to visualize much less work with. In addition, why should we have a human design gradients in these structures in the first place? Why not have a computer do this?
Gradient solids sound like they'd be useful for things like bone lattice printing. Some parts of a bone could make use of having greater density than others. eg to optimise weight, flexibility, strength, biomass holding area, in different areas.
If you want to do CAD directly you can use OpenCascade directly or if you can use its various wrappers. The Python OCC wrapper is quite nice: http://www.pythonocc.org/
We use both Python OCC and FreeCAD to help with handling CAD data import/export in http://Clara.io
Although if you are interested in create CAD online, I recommend http://onshape.com