Solvespace – parametric 2d/3d CAD
github.com
github.com
Strikes me as different than something more drafting oriented like Freecad. It's more like a type of 3D breadboard.
That strikes me as being very similar to the Part Design Workbench of FreeCAD which uses the Sketcher and constraint solver. Anyone have more details on a comparison of Solvespace and FreeCAD?
http://www.freecadweb.org/wiki/index.php?title=Basic_Part_De...
IMO the main issue is that the constraint solver recomputes everything whenever you add/move something, even though past additions are already properly constrained. As a result, the software gets less and less responsive as your design gets more complicated. I don't know if the devs adressed that issue (it's a tough one), but I know it was already on the radar a few months ago.
I'd be very curious to see a couple screenshot of your project! I used Google Sketchup to do landscaping last year around my house; I wonder how this would compare...
sketchup plan: https://goo.gl/photos/Qc5mEnFiFm9UWBvv8 reality: https://goo.gl/photos/Gn66MSc8UPshR3CC8
The design is a bit crude, but the goal was to get the structure's dimensions right. And it worked!
If these are linear constraints, maybe they can use the "Cassowary" incremental solver.
I'd love to be wrong about this, because this general problem is one I'd be very interested in being able to solve more efficiently.
We've been planning to evaluate Eigen for a while, but I will also look at Cassowary, thanks!
That being said, depending on the sketch, often the vast majority of the time SolveSpace is calculating after dragging something is spent not in solver, but rather regenerating geometry, and that's harder to optimize.
So yeah, the constraints in SolveSpace are nonlinear. They're solved by a Newton-ish method, which for underconstrained sketches also minimizes at each step the sum of the squares of the distances that any un-dragged points move (plus some other stuff). The Jacobian matrix is computed by an internal symbolic algebra system, allowing considerable flexibility in the range of user-facing constraints without a combinatorial explosion of hand-coded special cases.
As whitequark notes, the final solution of the constraint equations is a relatively small part of the overall work. The difficulty is mostly in writing them, to handle many useful cases in relatively few lines of code, and to converge reasonably in the Newton's method.
For a dramatic speedup, we could partition the constraint equations into roughly-triangular form, and then solve sub-systems in dependency order. Practical sketches seem to have a lot of such structure, and a visualization of that graph would be an interesting expression of the design intent. (To be clear, this isn't a spreadsheet; you still have to numerically solve systems of multiple equations, just not all of your equations at once.) I wrote an earlier solver that did this in some cases, but SolveSpace doesn't at all.
I used to use Inventor professionally, and that had a MTBF of perhaps 4 hours. I haven't needed a CAD program since then, but one of the things that'd make me try Solvespace first is that whitequark appears to actually care about reliability.
Even in case that SolveSpace does crash, it has an autosave facility (with a five minute interval by default), and so you should never lose more than five minutes of work.
You should also use the 2.x branch and not the released version 2.1, as the branch has some important bugfixes. I will release 2.2 within a few of days though.
Also, I find solvespace much easier to use the Freecad. Freecad has such a myriad of options and controls that I find myself often taking a while to find the one I'm looking for. Solvespace is a much more focused tool, having fewer but easier to find controls.
I've done some pretty complex stuff in it and it hasn't let me down yet.
I'll give solvespace a shot to see how it compares, for me the reason to use parametric CAD is that I'm far more comfortable programming something than editing it in a GUI, and besides it makes changing stuff so much easier.
Funny that one of their example of clamps looks exactly the same as the one I've designed to hold the spindle on my CNC! (cut from sheet aluminium https://github.com/buserror/buserror-reprap/blob/master/stl/...)
I have not used both apps extensively, but clearly FreeCAD is much bigger tool with wider use-cases. If talking about 3D cad only, I like minimalist Solvespace's approach better (from UI/UX stand point and from source code's perspective as well), easier menus, easier use (simple shortcuts), readable and rather small-ish codebase.