SOLVESPACE -- parametric 2d/3d CAD

(you are viewing a thread; or go back to list of threads)

A practical feature tree is much needed. (by Zach)
(using version 3.0 from Debian Sid package)

I have about 15 years industry experience in large-scale 3D CAD projects, using PTC Creo(Pro/E) and some Autodesk Inventor. I heard about SolveSpace in a recent Hackernews post, and I wanted to try it out for hobby projects outside of work.

SolveSpace seems to have good bones: the 2D solver is quite impressive, and the NURBS surface model performs better than I was anticipating (for example 2nd-order surfaces are modeled exactly rather than being approximated).

I can work around a lack of sweeps, blends and fillets for most simple parts, so SolveSpace could be quite useful. The big issue for me is with the lack of a practical feature tree (the "home" mode in the Property Browser window is the closest approximation of one in SolveSpace.)


1. Why isn't the feature tree always visible? In large-scale projects, it's more important than the 3D image of the part itself. Why do I need to be constantly clicking "home" to return to that mode? Can't it have it's own window?

2. Why do some features appear in the feature tree, and why do some not appear? For example, workplanes do not appear, and some sketches do not appear either.

3. I can't seem to find a way to re-arrange the tree to place features in a different order. Likewise, I can't seem to insert new features above existing features. This point is a major limitation---it means I would have to delete and re-create many features to make such a change.

4. There seems to be no way to suppress features.

5. I haven't been able to figure out what a "group" is. I am guessing it is a concept very different from other CAD software I have used, and probably needs better documentation (or even a different name).

6. Not exactly feature tree related: It doesn't seem that I can project geometry from edges or sketches into new sketches. This is critical for any real parametric design.
Fri Jun 18 2021, 11:36:41
(no subject) (by Tom)
You can get back to "home" by pressing escape. Seems like the UI is intended for use with keyboard shortcuts, and a lot slower without them.

A "group" is either a plane sketch ("-sketch-in-plane") or a solid feature ("-extrude"). I've only used the workplane that gets created automatically with the "Sketch in New Workplane" group, and I don't think any other kind is generally useful. So it's basically a "feature linked list", and if you need a true "feature tree" (like "(A union B) minus (C minus D)") then you have to use multiple files and link them.

SolveSpace treats the wireframe geometry and solid model separately, so there's no single operation to suppress a feature. You can hide a group to hide the wireframe, or suppress solid model in an extrude/difference/etc.

You can sketch new lines/curves and constrain them on top of old geometry, and the constraint will apply projected into the workplane. I don't know any way to directly project though.
Fri Jun 18 2021, 11:56:58
(no subject) (by Andrew)
When using sketch in plane, 3d points are projected onto the plane, and show when the cursor is close.

While it is not possible move groups within the hierarchy, by selecting a group, it is possible to insert one or more groups between it and.the next in the hierarchy.. This is useful when creating a sketch, and realizing some other feature is required to constrain it.
Fri Jun 18 2021, 13:31:11
(no subject) (by Paul)

Reworking the sketch hierarchy to make it an actual hierarchy (tree) is a big job. The previous maintainer was planning to undertake it, but is no longer involved with Solvespace. I agree that it should be done, but it's doesn't seem likely for some time.

Until then, we're trying to push what we have to make it better within some of those existing internal design constraints.

To your question 5: What is a group? It's a collection of sketch entities handled by the solver all at once, and for 3D groups there is an associated NURBS shell which is combined with the previous stuff using the boolean operation selected for the group. You can apply constraints between an entity in the current group and a previous group, but only the one in the current group will move to satisfy that constraint. If you then move the one in the previous group, the later groups will be re-solved and follow accordingly.

When you constrain a point in one group to a point from a previous group, it will not be movable since it is completely constrained to the previous point. There are exceptions which can make that description confusing: When you draw a sketch and then extrude it, 2 copies of the original sketch are made - one at each end of the extrusion. The "bottom" entities are known to be an exact copy and are constrained to remain on top of the original sketch entity. However, if the 2d sketch was not fully constrained, solvespace will select the point from the sketch group when you drag it (instead of the point in the extrude group). This is very useful but sometimes blurs the line between groups.

On a related note, I don't like that we can only link one other file per group. That means constraints on parts in an assembly are solved one part at a time rather than all together. We *might* be able to improve this issue without the major re-work required for fully hierarchical sketches.
Sat Jun 19 2021, 12:11:37
(no subject) (by EvilSpirt)
SolveSpace itself needs a very big imrovements to be done, but it seems specific UI codebase is hard to adopt and imporove. Maybe moving to another UI framework can make such improvements easy? Anyway, SolveSpace was hard to improve, and nothing changed now. I've decided to start another SolveSpace-like CAD without such kind of problems: You are welcome.
Mon Jun 28 2021, 04:17:08
(no subject) (by Paul)
@EvilSpirit As has been discussed a LOT, the UI toolkit is not terribly relevant. The internal framework could use a lot of work. The text window is a mess and can not support internationalization the way it is.

Notecad is an interesting project. My only complaint about it is that it has diverted your attention away from solvespace development ;-) Oh, and it's in C# and it doesn't support NURBS surfaces, which are not problems for a lot of people.

My own hope is that solvespace will ultimately inspire some new OSS CAD software in the future that will take a lot of lessons from solvespace and other things. Unfortunately it is a huge effort to build something like that from scratch. Fortunately there are people working on pieces that may ultimately be part of something new and better. For example, I nerd-sniped someone who then created an algebraic constraint solver in Rust:

I'm up for creating a NURBS subsystem in Rust, but I simply don't have the free time. Best we can do is make good examples and try to pass on lessons learned about CAD software from all past attempts - from solvespace and FreeCAD to commercial offerings - so someone down the road can really get it "right".
Mon Jun 28 2021, 16:06:46
Post a reply to this comment:
Your Name:
Your Email:
(no HTML tags; use plain text, and hit Enter for a line break)
Attached file (if you want, 5 MB max):
© 2008-2021 SolveSpace contributors. Most recent update Apr 18 2021.