| SolveSpace | |
|---|---|
A mechanical simulation in SolveSpace | |
| Developer | Jonathan Westhues |
| Initial release | 2008; 18 years ago (2008) |
| Stable release | |
| Written in | C++ |
| Operating system | Microsoft Windows,Linux,Mac OS |
| Platform | PC |
| Type | CAD |
| License | GPL-3.0-or-later |
| Website | solvespace |
| Repository | |

SolveSpace is afree and open-source 2D/3Dconstraint-basedparametriccomputer-aided design (CAD) software that supports basic2D and 3Dconstructive solid geometrymodeling.
It is a constraint-based parametric modeler with simple mechanical simulation capabilities. Version 2.1 and onward runs on Windows, Linux and macOS. The Linux version is shipped as asnap and native packages. It supports STEP and DFX for import and export. By default, SolveSpace utilizes its own CAD file format called.slvs for model storage. It is possible to export models as a whole or in part to various formats such asPDF,SVG, orEncapsulated PostScript (EPS).
It was initially created by Jonathan Westhues and as of 2022 is maintained by a community of volunteers.
Development of SolveSpace started in 2008 ascommercialproprietary software forMicrosoft Windows.[2] A previous software package called SketchFlat, also developed by Westhues, was replaced by SolveSpace.[3]
In 2012 version 1.9 released as unrestrictedfreeware proprietary software.[4] In 2013 version 2.0 released asfree and open-source software.[5][6] In 2016 version 2.1 brings support forLinux andMacOS.[7]
According to an interview given in 2020 by a major maintainer SolveSpace aims to bebackwards compatible as much as possible. The codebase at the time was about 30,000lines of code and it took Whitequark[clarification needed] almost 2 years to familiarize herself with it.[8][9] On September 22, 2020, Whitequark stepped down as a maintainer.[10]
SolveSpace is free and open source software distributed under theGPL-3.0-or-later license.[11]
SolveSpace is shipped with the following basic features:[12][13]
| SolveSpace | |
|---|---|
| Filename extension | .slvs |
| Internet media type | text/plain |
| Developed by | Jonathan Westhues, Whitequark, et al. |
| Type of format | text/plain |
SolveSpace can open and import its own textual*.slvs file formats for both editing and assembly. TheDXF/DWG file formatAutoCAD (version 2007) is supported for opening and editing.[13]
SolveSpace v3.0 is able to export 2D sketches and surfaces intoDXF/DWG (AutoCAD version 2007),PDF,SVG, EPS, andHPGL file formats. Wireframes can be exported asDXF andSTEP files.Polygon meshes can be exported asSTL andWavefront OBJ; NURBS asSTEP. SolveSpace is able to export models inSTEP,STL, andG-code for reuse in third-party CAM software.[13]
SolveSpace can link its own*.slvs,STL andIDF files as external parts into complex assembly.[14]
SolveSpace workflow starts either with opening an existing file or creating a new one and usually involves sketching. The basic shapes of a new physical part is sketched out and constrained to specificdimensions and locations. When the model is complete, it is either exported to one of the supported CAD formats or into a document for further processing.[citation needed]
Modeling in SolveSpace is done by way of sketching in a workplane.[15] A workplane is plane with an origin for the new sketch where the SolveSpace draws entities. Users can make it active and draw basic primitives such as lines, circles, arcs, dots, and other points of references on the workplane, and constrain them to specific dimensions and relations.[15]
SolveSpace can split intersecting entities via a separate tool. Users can snap points to a grid.[15] There are no software limitations for the number of workplanes user can create.[15]
Constraints include dimension limitation, angle, paralleling with another line, tangency, point, symmetry and alignment of a line with origin axes (to make them "vertical" or "horizontal").[15] The radius of a circle, for instance, can be constrained to a specific value, or can be influenced by some other entity dimension.[citation needed]
When sketching is complete, a 3D part can be extruded into a volumetric model for further modeling. An extruded model creates a group along a specifiednormal. Every group in SolveSpace encapsulates an action applied to the specified sketch created for every 3D operation, such as an extrusion, rotation, or translation. Created 3D models can also be further constrained with the basic tools mentioned above or combined with another one by Boolean operations.[citation needed]
It is also possible to draw a workplane on a specific "surface" of another 3D model; the surface is usually indicated by two line segments joined by a point.[citation needed]
In order to verify a newly modeled concept in SolveSpace, users can "link" all the components and constrain them at specific positions to check whether the virtual end-product meets the original concept's design and constraints.[15]
SolveSpace depends uponANGLE,OpenGL Utility Library,zlib,libpng, libdxfrw,cairo,mimalloc,libsigc++ and some otherC++ libraries, as well asfreetype2,harfbuzz, andPango for text rendering. On Linux Solvespace usesgtk-3.
As of v2.1., SolveSpace reference lists a disclaimer on limited support forNURB-surface Boolean operations which may occasionally fail.[15]
As of v3.0 SolveSpace didn't provide functionality forchamfers/fillets on top of 3D solid body.[16][17] However there is a way to make it manually.[18][19] As for 2D sketch there is a way to create fillets as a tangent arc at corner point.[20]
SolveSpace may fit well for simplerCAM models, but not for sophisticated ones.[a]
There is no extrude along the path.[22]
A 2013 article and interview with the main developer published in Libre Graphics World has praised SolveSpace for its small executable file size, advanced constraints solver, and output formats.[23] However, it was also criticized for some drawbacks it had at the time, such as limited support forNURBs (i.e. Boolean operations) and a lack of native Linux support, the latter of which has since been rectified.[23] On the other hand NURBs operations are parallel, instead of single-threaded.[24]