SOLVESPACE -- parametric 2d/3d CAD

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

whitequark's changelog (by whitequark)
I've implemented or pulled in quite a few improvements already, so I thought I would create a thread dedicated to describing these.

As of 2016-06-10 (

* Working Linux (GTK2/3) and OS X (Cocoa) ports.
* Files are automatically saved and restored if SolveSpace happens to crash. (Patch by Marc Britten.)
* Automatic placement of horizontal/vertical constraints if a line segment is close enough to horizontal/vertical.
* Diameter constraints can be shown as radius.
* Solids can be made transparent.
* "pi" can be used in expressions.
* Triangle mesh can be exported for viewing in the browser, with no plugins needed (e.g.
* Reference dimensions and angles can be added with Shift+D and Shift+N.
* A new constraint, length difference, can be used. The shortcut is J. (Patch by Peter Ruevski.)
* Unicode is now fully supported for filenames, group names, etc, but not yet comments or TTF text.
* Copying and pasting entities will also duplicate any constraints that only involve entities in the clipboard.
* Lathe groups now feature circles and faces that you can use to create constraints against.
Mon Jan 11 2016, 01:46:49
(no subject) (by whitequark)
As of 2016-06-13 (

* Three.js geometry export (viewable in the browser) now displays curves smoothly.
* Three.js export is now easier to use, as a single .html file can be saved that requires no manual editing.
* All export dialogs now remember the last format you have used to simplify exporting many files manually.
* If an imported file is not found, a dialog will prompt you to locate it, so as to avoid editing .slvs files manually.

Additionally, several bugs were fixed, including one impacting generated geometry.
Thu Jan 14 2016, 06:50:19
Maybe it is time for an official beta? (by ruevs)
Or even a release?

I am not sure how many users SolveSpace has (I hope many thousands - it deserves it) but 99% of people will never use anything but an official release.

Your branch has accumulated quite a bit of nice features and improvements. In my opinion a release or at least an official beta mentioned on the download page would be useful. The added benefit would be that Jonathan will merge upstream into so that there will be a new "official baseline" to work against. Having the forks diverge too much it not healthy.

P.S. By the way:
Whitequatrk, one of your comments on Github about integrating Open CASCADE to do better NURBS boolean operations truly bothers me ;-) Have you read this ?
Mon Jan 18 2016, 03:05:17
(no subject) (by whitequark)
@ruevs, I submitted a PR to Jonathan. There is nothing I can do to speed up integration at this point.

As for OpenCASCADE, it is widely known that it is horrible. It is also widely known that it is the only good open-source NURBS library. So there is no choice, unless you are content with poor boolean performance, and I am not.
Mon Jan 18 2016, 11:39:44
NURBS (by Marc Britten)
What does Blender use?
Mon Jan 18 2016, 11:54:27
(no subject) (by whitequark)
@Marc, I believe Blender does not have NURBS booleans.
Mon Jan 18 2016, 12:37:08
(no subject) (by User1)
What about "libnurbs"(OpenNURBS fork)?
Tue Jan 19 2016, 01:09:33
(no subject) (by User1)
Also see "verb" (opensource)
Tue Jan 19 2016, 01:12:38
(no subject) (by whitequark)
libnurbs does not have NURBS booleans, verbnurbs does not have surface-surface intersections with trimmed NURBS surfaces, although it probably comes closest of all to what we need.
Tue Jan 19 2016, 01:57:51
(no subject) (by User1)
"... At the moment, I think the two biggest players in the CAD kernel landscape are verbnurbs ( ) and solvespace ( ) (which includes parametric modeling and constraint solving, btw). Both are very well written, well documented, and well tested..."

Think, if SolveSpace will implement verbnurbs, it will be good.
Fri Jan 22 2016, 04:57:47
(no subject) (by Jonathan Westhues)
verbnurbs implements the textbook NURBS primitives, plus a little bit more. It doesn't implement the hard stuff (e.g., NURBS Booleans).

OpenCASCADE is a terrifying codebase, but has no real free competitor. It might be nice to see someone change that, whether starting from SolveSpace's present kernel or not; the math scares developers off, but it's not as bad as people think, just lots of cases to consider.
Fri Jan 22 2016, 06:04:40
(no subject) (by User1)
@Jonathan Westhues,
when you planned merge whitequark's repo in main SolveSpace tree?
Fri Jan 22 2016, 07:38:46
(no subject) (by whitequark)
As of 2016-01-28 (

* A scrolling-related crash on non-Linux platforms was fixed.
* A button for creating lathe groups was added to toolbar.
* Error messages for solver failures were made much more readable: now, the messages explicitly call out sketches with redundant and unsolvable constraints, and distinguish between the case where constraints are redundant but solvable, and where constraints are redundant and unsolvable, giving the unsolvability priority in the latter case.
* A setting was added that makes the solver consider sketches with redundant but solvable constraints valid. This allows to e.g. constrain imported parts using two parallel constraints placed on their normals, which would normally overconstrain the sketch. Note that turning this setting on makes the solutions slightly less stable, although this should not be noticeable outside of degenerate cases.
* Explicitly regenerating the sketch (e.g. by pressing spacebar) while a non-last group is active will now regenerate groups only up to the last group. This speeds up regeneration and does not erroneously display errors in a mesh that is not visible, if there are any.
Thu Jan 28 2016, 05:13:05
(no subject) (by User1)
When you would realise major version (2.1 or 2.2)?
I want post news about it, but for now there are NO fresh builds on Launchpad, and only presented Nightly builds not recognized on news sites.
Sun Jan 31 2016, 05:58:23
(no subject) (by whitequark)
Never, releasing a minor version is the prerogative of Jonathan. Also, Launchpad builds are basically nightlies as well.
Sun Jan 31 2016, 10:03:21
(no subject) (by User1)
I dont know will be it usefull or not, but look at opensource tool "FREE!ship Plus", that in some way is NURBS-based CAD.
1) Windows/Wine version -
2) Linux version -
Mon Feb 1 2016, 16:09:45
(no subject) (by whitequark)
No NURBS booleans there.
Wed Feb 3 2016, 06:52:41
(no subject) (by User1)
I sew you may few new things, so can you create fresh nightly build?
(please, also create 32bit for linux)
Thanks for new futures!
Sun Feb 14 2016, 02:40:14
Nightly 2016-02-14; full i18n & improved chord tolerance (by whitequark)
As of 2016-02-14 (

* HIGHLIGHT: Full internationalization! SolveSpace now supports any Unicode characters, among others including extended Latin, Cyrillic, Chinese, Japanese and Korean in its user interface and in TTF rendering.
- Note though that RTL scripts and ligatures are not supported (yet?), so Hebrew and Arabic would be unreadable. The builtin single-stroke font (used in e.g. comments) is also internationalized, however it only supports extended Latin, Cyrillic and Japanese, since that was the extent of the font with the best support I found. See attachment for some examples.
- Also note that fonts extensively relying on joining glyphs, e.g. for the Devanagari script, may produce self-intersecting contours that cannot be extruded.
- Also note that there may be minor changes in the curves generated from TTF files, so please double-check your old files.
* There is now a separate value of chord tolerance for display and for export. The display chord tolerance is specified in percents of the bounding box, so that zooming in or out does not change the generated mesh. The export chord tolerance is absolute and specified in millimeters, since the exported data is an input to some manufacturing process.
* "Zoom to Fit" now fits the display to the selected entities, if there are any. This makes it easier to focus on small detail of complex models.
* Deleting an imported group will not cause all subsequent groups to also be removed.
* Conversion of Beziers to piecewise linear curves was made slightly faster and slightly more accurate.
Sun Feb 14 2016, 10:32:02, download attachment 1875.png
(no subject) (by User1)
Cool! Need 32bit deb!
Sun Feb 14 2016, 16:07:19
(no subject) (by whitequark)
Just check out the source and run `dpkg-buildpackage -b -sn`.
Sun Feb 14 2016, 17:25:24
Nightly 2016-02-14; complete DXF rewrite (by whitequark)
As of 2016-02-14 (

* DXF export was completely rewritten. Circles, arcs and splines are exported instead of a piecewise linear approximation, if at all possible; if not, the piecewise linear segments are assembled into a polyline that can be handled as one piece. Constraints with labels (distance, radius/diameter, angle, and comment) are exported as DXF dimensions and can be easily manipulated. Color and line thickness are exported. Mesh edges, entities, dimensions, and comments are exported on separate layers.
- Note that the resulting DXF file can only be opened by AutoCAD 2007 or later, or a program that can read files prepared for this version of AutoCAD.
* Groups can be inserted at any point in the stack after the active group, not just at the end.
- Caution: files saved after using this feature will be incompatible with SolveSpace 2.0.
* Active group can be removed.
* Entity visibility is not forcibly turned on when active group is switched.
* When the dimension line of a point-line distance constraint does not fall onto the constrained line, extension lines are drawn towards the nearest end.
Fri Feb 19 2016, 18:38:47
(no subject) (by User1)
Hi! Any activity here? Is it some timeline or plans for nearest nightly?
As for me, icons in main window must be in some way reorganized, and maybe need add 1 or 2 icons for new futures.
Fri Mar 4 2016, 08:14:13
(no subject) (by EvilSpirit)
Yes, we are working on. You can write your suggestions as issue in whitequark's repository and we will consider it.
Fri Mar 4 2016, 11:12:26
(no subject) (by User1)
So, what progress now? There are many opened issues on github, that not solved yet.
Any plan to next nightly?
Thu Mar 17 2016, 19:06:23
Nightly 2016-03-18 (by whitequark)

* Image export on *nix now works.
* Stippled line styles are added, based on ISO 128, also exported to DXF natively. They are useful for e.g. marking centerlines on drawings.
* Text height of constraint labels can now be adjusted, for better text legibility on HiDPI displays or people with myopia.
* Hit testing on files with large numers of entities is now several times faster.
* "Paste Transformed..." is now added to the context menu.
Fri Mar 18 2016, 16:41:57
(no subject) (by User1)
I see activity on github, so thinks its a time for next "nightly" build!
I'm ready for testing it! ;-)
Fri Apr 8 2016, 07:47:17
Nightly 2016-04-08 (by whitequark)

Features implemented:
* Automatic horizontal/vertical constraint suggestion now can be temporarily turned off by holding Ctrl, to avoid intermittently overconstrained sketches.
* Angle constraints now have the unit symbol ().
* Ukrainian letters ЄІЇєіїҐґ were added to the builtin vector font.
* Stippled lines are now exported to PDF and EPS.

Bugs fixed:
* Sketch is now regenerated after clicking the "Allow redundant constraints" option.
* The sensible order of toolbar icons is restored.
* File chooser now suggests "dxf" file extension when selecting the DXF format.
* Pasting now creates just one undo step.
* Workplanes and normals are not stylable anymore.
* Only visible constraints are now exported to DXF.
* Edges exported to Three.js now take the export scale factor into account.
* SolveSpace now runs on OS X without Homebrew installed.
Fri Apr 8 2016, 08:00:26
Nightly 2016-04-16; technical drawing mode (by whitequark)

Highlight: technical drawing mode! Now, when "Show hidden lines" option is
enabled, hidden lines are drawn using a stipple; when "Show outline of solid"
option is enabled, the outline of a solid is drawn using a wider line.
Also, the only solid edges that are displayed are those with a discontiguity
between them. Of course, all this is also considered when doing 2d export.
As such, it is now much more convenient to prepare drawings with SolveSpace.

Features implemented:
* Spline points can now be added and removed without recreating the spline.
* The constraint editor is now resized according to the font size and
width of the value being edited.
* When a new group is created, its color is now taken from the nearest
previous group with a solid.
* When exporting a 2d view, overlapping lines are now deduplicated,
making it easier to post-process the vector artwork.
* Stippled lines are now exported to SVG.
* Entities exported to DXF are now split into layers according to styles.
* Integer angles are now displayed without trailing zeroes.
* The builtin vector font is now grid-fitted, leading to a much more
legible display.
* Angle constraints now have proper reference lines and arrowheads.

Bugs fixed:
* SolveSpace does not crash anymore when compiled with GCC 6.
* Plane faces are now considered when doing "Zoom to Fit".
* Length difference constraint now works correctly in inch mode.
* Several minor glitches related to creating new files while
an operation was in progress.
Sat Apr 16 2016, 08:19:57
(no subject) (by whitequark)
Sat Apr 16 2016, 08:20:35
(no subject) (by whitequark)
Sat Apr 16 2016, 08:21:04
(no subject) (by yugami)
nice job on the drawing features.
Sat Apr 16 2016, 19:35:48
Nightly 2016-04-17 (by whitequark)

Bugs fixed:
* Right-clicking on derived entities no longer causes a crash.
Sat Apr 16 2016, 21:23:50
GTK3 (by Paul)
How is the GTK3 version working these days? I'd like to build this on Fedora and maybe try to get it running on Wayland.
Sun Apr 17 2016, 13:05:21
(no subject) (by whitequark)
@Paul: Works fine (like it always did). GTK3 itself is still ugly as sin and buggy as an illuminated room in a tropical night, but maybe you have a higher tolerance for that than me...

However, SolveSpace uses GLX directly for offscreen rendering, rather than going through the GTK GL widget, which is not available in GTK2. So, if you try to run it under Weston, it just immediately segfaults. It's straightforward to fix that particular part, but...

But the Wayland environment does not provide GL, it provides EGL, which uses OpenGL 4.0 strict mode (yadda yadda, something like that, I'm not an expert on OpenGL trivia). In short, SolveSpace uses all the OpenGL 2.0 fixed function pipeline APIs, and those are all missing from the GL 4.0 interface available under Wayland, even if they're actually present in the underlying drivers. So even if I port it from GLX to EGL, it won't run.

Assuming Cairo is fast enough and good enough, we could change *all* rendering in SolveSpace to go through Cairo, whether display, export, or whatever (see This would simplify a lot of things, and make EGL work among them, but I fear that it is not as easy as it seems.
Sun Apr 17 2016, 13:36:39
(no subject) (by Paul)
I was under the impression that you can do drawing with any OpenGL version you like. It's just wayland/weston itself that uses EGL.

And for GLX there is this:

Neither of those is the original page that led me to believe it'd be easyish. As for GTK3, it's already fully supported on Wayland and it's one of the options with SolveSpace. On my (old) machine, wayland works well but programs using Xwayland have poor performance, so I'm hoping all the software I like the most will run native Wayland sometime in the near future.
Sun Apr 17 2016, 20:42:01
(no subject) (by whitequark)
@Paul: no, that's wrong. "And now, here comes the problem : Wayland doesn't support desktop GL nor GLX. Instead, it only supports GLES with a new binding named EGL." GLES is the part that lacks the fixed function pipeline APIs.

Of course, you can link SolveSpace with jwzgles or jwzgles+eglx, but this is far from great. E.g. even for the trivial glxgears example you can see a rendering bug.
Sun Apr 17 2016, 21:42:50
(no subject) (by whitequark)
On reflection, forget Cairo, it's not at all suited for 3d rendering. We'll have to implement GLES support ourselves.
Mon Apr 18 2016, 00:28:46
Trouble with extrusion difference in latest daily ? (by JujuSL)

I discovered Solvespaces a few months ago and it is a great piece of software. And your updates make it even better.

I installed the latest daily April 17 version (amd 64 linux) and I face a problem which did not exist previously : the extrusion difference seems not to work exactly the same way ; I want to make a hole in my object and I only see the outlines but no empty hole (whereas the union extrusion shows a solid).

In the enclosed file, the g012-extrude group shows my the problem. Maybe I did something wrong when creating the object but then why was it good before ?

Thank you in advance
Mon Apr 18 2016, 16:08:06, download attachment support4bis.slvs
(no subject) (by whitequark)
@JujuSL, I've created an issue over at and I will look into it. It's clearly a bug.
Tue Apr 19 2016, 10:25:32
Extrusion OK in April 8 release (by JujuSL)
Just to let you know, the problem seems relatively new as it appeared only since the Apr 16 release.
Wed Apr 20 2016, 12:55:56
Nightly 2016-04-23 (by whitequark)

Features implemented:
* Constraint labels can now be snapped to grid using the "." keybinding.
* When exporting DXF, piecewise linear curves are reassembled into polylines instead of remaining fragmented.

Bugs fixed:
* Before this commit, a zero-length edge would result in "points not all coplanar" message rather than "zero-length edge".
* Edit control width is now correctly calculated on GTK3.
* Editing values in the text window is now unbroken on OS X.
* A few minor cosmetic adjustments.
Sat Apr 23 2016, 15:49:37
Nightly 2016-05-04 (by whitequark)

Features implemented:
* The "About" dialog now displays the git hash from which SolveSpace was built.

Bugs fixed:
* Mesh is now generated correctly for certain solids. (Bug reported by @JujuSL)
Wed May 4 2016, 01:31:12
Nightly 2016-05-07; DXF import (by whitequark)

Features implemented:
* DXF import.
* When an extrusion is completely unconstrained, switching it between union and difference will now flip the normal.
* Three.js exported sketch controls are now improved to match SolveSpace's more closely.
* Three.js exported sketch now has all controls working on mobile devices with touchscreens.
Sat May 7 2016, 00:42:31
Nightly 2016-05-11 (by whitequark)

Features implemented:
* DWG import.
* When an extrusion is unconstrained, switching it between union and difference will now flip normal.
* The old sketch import feature is now called "Link / Assemble" to elaborate that it will pick up changes in the linked file and reduce confusion with the new DXF/DWG import feature.

Bugs fixed:
* Multiple GTK problems related to positioning of text window on GNOME, KDE, Unity and fwvm.
* When exiting SolveSpace while a file is unsaved, it will now prompt you to save the file.
* Regeneration of sketches where redundant constraints were allowed is now faster.
Wed May 11 2016, 04:12:27
Broken surface (by JujuSL)

Using the lastNightly (linux 64), I created a small sketch.

My problem is one surface is broken, you can see hollow triangles in the g005_extrude group of the attached file.

I discovered that just after having exported the mesh to 3D print my object.

Did I do something wrong or is it a bug ?

Fri May 13 2016, 02:50:45, download attachment picam5.slvs
(no subject) (by whitequark)
@JujuSL, it is a bug, sort of. NURBS booleans are known to be fragile in cases where you have coincident features, such as the extruded cylinders touching the boundary of the rectangle. The workaround is to force triangle mesh in the group properties.

This is, unfortunately, hard to fix.
Sat May 14 2016, 13:24:12
(no subject) (by Jonathan Westhues)
@JujuSL, like @whitequark said. You can also keep NURBS representation if you move the cylinders so they're not exactly tangent (either slightly inside or slightly outside) to the rectangle edges.
Sat May 14 2016, 13:39:50
(no subject) (by JujuSL)
Thank you for your explanations and tricks.
@Jonathan : this is eventually what I did yesterday, moving the cylinders sligthly inside the rectangle did the job.
Sat May 14 2016, 17:06:42
Version 2.1, release candidate 1 (by whitequark)

Bugs fixed:
* RGB color exported in DXF now more strictly adheres to the DXF versioning, which makes it readable in certain DXF readers.

Features implemented:
* DXF "actual measurement" field is now exported and imported.
* Angle constraints exported to DXF are now correctly positioned when a supplementary angle is selected.
* When opening missing imported files, now, first the relative path is tried and the absolute path only after that. This helps avoid confusion when copying trees of files with linked sketches in them, as previously that would result in the old sketch being linked.
Wed May 18 2016, 03:41:36
(no subject) (by Bep van Malde)

Could you please explain which of the .deb files ( use to install Solvespace in Ubuntu 16.04

Bep van Malde
Mon May 23 2016, 08:03:42
(no subject) (by whitequark)
@Bep van Malde,
Tue May 24 2016, 01:15:53
(no subject) (by User1)
Sat Jun 4 2016, 20:06:33
Version 2.1 (by whitequark)
I expect this will be the last 2.x release.


Features implemented:
* Comments can now be copied and pasted.
* DXF/DWG import can now be undone.

Bugs fixed:
* Workplane name now no longer overlaps workplane border.
* OS X: fixed a massive memory leak making SolveSpace unusable.
* OS X: alers can be dismissed with the Esc key.
* GTK: Tab key now works properly.
* GTK: editors too large for the window no longer break rendering.
* Glyph for U+0454 is corrected.
* Autoconstrainter is now actually disabled by pressing Ctrl.
* Linking files in the same directory as the current no longer results in an empty group.
* Three.js: browser zoom is now handled correctly.
Sat Jun 11 2016, 19:54:10
(no subject) (by User1)
Any news?
Mon Jul 11 2016, 04:36:29
(no subject) (by whitequark)
No. Don't expect any user-visible changes any time soon.
Mon Jul 11 2016, 04:45:33
(no subject) (by User1)
PLEASE, build bug fix release (SolveSpace v2.2.rc1 or so), because there are many bugs solved in source code since v2.1 release.
Most of us need binary with fresh codebase.

Tue Sep 27 2016, 06:06:06
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.