[HN Gopher] SolveSpace - parametric 2d/3D CAD
       ___________________________________________________________________
        
       SolveSpace - parametric 2d/3D CAD
        
       Author : cab404
       Score  : 150 points
       Date   : 2022-05-22 13:34 UTC (9 hours ago)
        
 (HTM) web link (solvespace.com)
 (TXT) w3m dump (solvespace.com)
        
       | gamegod wrote:
       | This software is low key the best open source CAD software.
       | Although it looks ancient, it's under active development and has
       | a much lower learning curve than FreeCAD IMHO. It's a really good
       | fit for the skill level of someone who has a 3D printer. I've
       | designed dozens of parts for my printer and random crap around
       | the house with Solvespace. It's a very useful tool.
        
       | psyc wrote:
       | As someone with simple 2D drafting needs, who wanted a reason to
       | throw QCAD out a 10th story window, thank you OP.
        
       | grawp wrote:
       | I have a big conceptual problem with these interactive editors:
       | I'm a programmer and am very used to splitting things into
       | functions and objects which can be then called with / have
       | different parameters and be composed into another functions and
       | objects.
       | 
       | So far my experience with both SolveSpace and FreeCAD have been:
       | Even if you can reuse a part of your design multiple times (and
       | even this is a nontrivial problem), you surely can't do that with
       | different parameters!
       | 
       | My brain hurts from how it goes against all programming
       | principles about DNRY, modularity, and composability.
        
         | samwillis wrote:
         | > My brain hurts from how it goes against all programming
         | principles about DNRY, modularity, and composability.
         | 
         | This is really interesting point, and I understand how you feel
         | like that, however I completely disagree.
         | 
         | I have both a software/programming and industrial/product
         | design background with extensive experience of professional CAD
         | tools such as SolidWorks and Creo(Pro/E).
         | 
         | Parametric CAD, in my view, is a perfect example of "visual
         | programming", you have variables, iteration/patterning reducing
         | repetition, composability of objects/sketches again reducing
         | repetition, modularity of design though a hierarchy of
         | assemblies. The alignment between programming principles and
         | CAD modelling principles, while not immediately obvious, are
         | very much there. An elegantly designed CAD model is just as
         | beautiful (in its construction) as elegantly written code.
         | 
         | Also just as in software where there are "methodologies" and
         | techniques such as TDD, with cad there are methodologies to
         | constructing a model, such as "top down", "bottom up" and
         | "skeleton modelling". All about ensuring your design intent is
         | captured, the models are maintainable and will update
         | successfully with parametric changes.
         | 
         | When modelling with parametric CAD you are not only designing
         | the object, you are designing a cad model that represents the
         | design intent in an elegant and maintainable way.
         | 
         | > So far my experience with both SolveSpace and FreeCAD have
         | been: Even if you can reuse a part of your design multiple
         | times (and even this is a nontrivial problem), you surely can't
         | do that with different parameters!
         | 
         | True SolveSpace and FreeCAD can't do this, however all
         | professional CAD packages can and it's an important feature of
         | them. In SolidWorks they are called "configurations" and can be
         | driven by an excel spreadsheet, you can literally create
         | thousands of variations from a single model.
        
         | injidup wrote:
         | Look at OnShape. Freemium option available! You can make models
         | that are parameter driven and then import those models
         | elsewhere and use different parameters. It is fully DRY if you
         | learn how to use it properly. There is even a JavaScript like
         | language called feature script that allows you to design your
         | own feature tree nodes parameterized and validated as you like
         | with custom UI and custom geometry driven by the parameters.
         | Amazing system. For kicks I wrote a surfboard design tool that
         | generates a skeleton frame for hollow wood veneer surfboards.
         | It was just an excercise in "can I do it" but it turned out
         | well.
        
         | khimaros wrote:
         | I find using spreadsheet functionality and referencing those
         | values works pretty well. you might use something like
         | assembly4 plugin as well.
        
           | grawp wrote:
           | It's not about reusing values. It's about reusing whole
           | complex designs. I know that there is some very very new
           | feature called _Variant_ link but I haven 't managed to
           | comprehend it yet.
        
         | abadaba wrote:
         | Would be interesting if something like OpenSCAD had an
         | interactive editor that allowed for exporting to an openscad
         | code module.
         | 
         | OpenSCAD is great, but sometimes I just want to fidget around
         | with an object like in this SolveSpace demo video.
        
         | dcminter wrote:
         | Have you played around with OpenSCAD? That comes from the
         | programmatic direction.
         | 
         | As a novice it does seem to me that there's room for an open
         | source CAD tool that offers a bridge between the two
         | approaches. For what it's worth my opinions on a few tools:
         | 
         | * SolveSpace - solid, but a bit limited in its capabilities
         | (e.g. no fillets or chamfers)
         | 
         | * FreeCAD - very powerful but almost unusably buggy (others
         | seem to have had better experiences)
         | 
         | * OpenSCAD - very powerful but requires coding for everything
         | 
         | Then there are various non-3D cad tools and a few online ones
         | (of which I've got the most use out of TinkerCAD which is easy
         | to use _because_ it is very limited in its capabilities)
        
           | blt wrote:
           | OpenSCAD lacks a constraint solver so cannot, IMO, be called
           | "very powerful".
           | 
           | It is great if your design consists of boolean operations of
           | several independent components. But many designs require
           | complex interdependent relationships between the component
           | geometries. Your OpenSCAD file will begin to contain a lot of
           | trigonometry, projections, linear solves, etc. Eventually you
           | will need a nonlinear solver...
           | 
           | I really enjoyed writing OpenSCAD code when it was suitable,
           | though. Now I want to learn if there are any code-based
           | constraint-based CAD packages.
        
           | grawp wrote:
           | OpenSCAD is just a generator.
           | 
           | You cannot query generated or imported geometry in any way.
           | Not even calculate bounding box which can come handy if you
           | want to place something on top of your model etc..
           | 
           | Equally big problem is schizma between modules and functions.
           | Functions can't draw anything but can return values. Modules
           | can draw but can't return anything. So you cannot even
           | calculate the bounding box (or anything similar) yourself
           | even without STL import.
           | 
           | CadQuery on the other can do queries.. give me bounding box.
           | give me a second face parallel with XY from this point in
           | direction of +Z.
           | 
           | Btw. FreeCAD bugginess realy varies. I have had a much better
           | experience with a package built from master on Gentoo and Nix
           | than with the stable appimage.
        
           | samstave wrote:
           | How does blender not meet these needs?
        
         | dr_kiszonka wrote:
         | I would also suggest having a look at CadQuery, SolidPython,
         | and PyMesh:
         | 
         | https://github.com/CadQuery/cadquery
         | 
         | https://github.com/SolidCode/SolidPython
         | 
         | https://github.com/PyMesh/PyMesh
        
           | grawp wrote:
           | CadQuery is very nice except for its DevOps side. Its whole
           | build system for producing Conda packages (some may consider
           | Conda problem in itself) is super-dependent on Azure
           | pipelines. Even bigger problem is that it's riddled with
           | hardcoded paths, redundant copies of files, disregarding
           | recommended usage notes of its 3rd party libraries..
           | basically it contains every DevOps related anti-pattern you
           | can think of.
           | 
           | There seems to be just one maintainer dealing with build
           | related things and he is of a very different opinion what is
           | anti-pattern or just don't want absolutely anybody to touch
           | his code into which he poured his hours.
           | 
           | https://github.com/CadQuery/OCP/pull/61
           | https://github.com/CadQuery/pywrap/pull/38
           | 
           | Yeah. I'm salty about it.
        
             | ur-whale wrote:
             | > Yeah. I'm salty about it.
             | 
             | You're not the only one. CadQuery will never catch on until
             | they sever conda with a chainsaw.
        
           | ur-whale wrote:
           | CadQuery is damn near impossible to install without ruining
           | your system (drags in the whole ffing conda ecosystem).
           | 
           | Just not an option for most folks.
        
         | phkahler wrote:
         | >> Even if you can reuse a part of your design multiple times
         | (and even this is a nontrivial problem), you surely can't do
         | that with different parameters!
         | 
         | This is on the radar for Solvespace but it's going to be fairly
         | major rework to get it right. I'm still learning how all the
         | pieces of the code fit together. The group structure in
         | Solvespace is kinda crap - groups are "solver groups" meaning
         | each group is costraint-solved independently with parameters in
         | other groups held constant. Named parameters will help and
         | there is a branch, but we need to work out scoping rules and
         | some other stuff.
         | 
         | What I'd really like is the ability to make assemblies with
         | multiple parts linked in the same group. And ultimately to have
         | free parameters in those linked parts, but that's really
         | challenging. Expert coders welcome to have a look.
        
       | silencedogood3 wrote:
       | So why would I choose his over openscad? What's better/worse?
        
         | ur-whale wrote:
         | These are just different.
         | 
         | My biggest gripe with SolveSpace won't let you write code,
         | everything is done in the UI which is very limiting and a big
         | turn-off, especially given what the underlying geometry engine
         | is capable of.
         | 
         | On the other hand, OpenSCAD doesn't have a constraint solver
         | (you can't easily say something like "compute the intersection
         | of these two circles and project the resulting point on this
         | surface and extrude a cylinder from that point along the normal
         | of that surface"), whereas SolveSpace does, and it's a very
         | powerful way to model things.
         | 
         | OpenSCAD is also very annoying in the sense that it doesn't
         | allow you to "probe" your model to construct it further: it has
         | exactly zero self-introspection features. To give a simple
         | example, it's almost impossible to compute the bounding box of
         | a model or its barycenter, which is _very_ limiting.
        
         | cab404 wrote:
         | Actually, I chose it over Openscad for one reason -- it doesn't
         | crash that often)
         | 
         | Otherwise it's a bit less flexible -- e.g. it's harder to do
         | value constraints (e.g get dimensions from a spreadsheet); and
         | it isn't compatible with scripting yet; you can't just point-
         | click-chamfer your parts; you need to do metric holes and
         | indents for bolt heads manually; etc, etc
         | 
         | But what is available works almost without any problems (except
         | for 3D constraints and occasional problems with difference
         | operations on curved surfaces) -- and is soo fun to use.
        
       | wiradikusuma wrote:
       | Slightly OOT: What software (can be paid) for designing a house?
       | I'm a software engineer with no background in civil engineering /
       | related fields. AutoCAD is too complex, Photoshop too abstract.
       | I'm thinking the Sims :) But I need "real" measurements.
       | 
       | The resulting design is not for commercial use but to be passed
       | to the professionals (architect/builder). Simple enough for my
       | mom to understand yet detailed enough for the professionals to
       | know what I want precisely.
        
         | staindk wrote:
         | My dad essentially "designed" 2 houses using nothing but Excel
         | with square cells. He's an Excel fan and an engineer... seemed
         | to work quite well.
         | 
         | Of course then you' have to source measurements etc. yourself
         | and there's no helper features, so some of these other
         | suggestions look quite good.
        
           | will_walker wrote:
           | Please post screenshots of this!
        
         | codetrotter wrote:
         | > I'm thinking the Sims :) But I need "real" measurements.
         | 
         | Perhaps one of these?
         | 
         | https://floorplanner.com/
         | 
         | https://planner5d.com/
         | 
         | https://www.smart3dplanner.de/
        
         | gerdesj wrote:
         | Sweet Home 3D - http://www.sweethome3d.com/
        
         | nvrspyx wrote:
         | SketchUp is probably a good option for your use case, although
         | I've never used it (or any other CAD).
        
         | lann wrote:
         | I looked at a bunch a while back and found this to be a nice
         | middle ground with a usable mobile interface:
         | https://floorplancreator.net/
         | 
         | Paid version can export to DXF (AutoCAD)
        
         | phkahler wrote:
         | It's a stretch, but Solvespace has been used:
         | 
         | https://github.com/solvespace/solvespace/issues/430#issuecom...
        
         | will_walker wrote:
         | Rhinoceros is $800 and used for product design, shipbuilding
         | and architecture. We're currently getting permits and
         | structural done on our family home with drawings created with
         | it. It also comes with a parametric solver system, grasshopper.
        
         | scoopr wrote:
         | Sketchup is really in a nice spot for this kind of stuff.
         | 
         | I'm still stuck at the last free version 2017 make. The new
         | free web thing is kind of okay, but really suffers in even a
         | slightly bigger models.
         | 
         | Haven't tried the newer paid versions. It's a real shame most
         | of these cad-like stuff are going subscription only. As a
         | hobbyist, my needs are really sporadic :/
        
           | sgtnoodle wrote:
           | There's a web version at my.sketchup.com. It lacks some of
           | the features of the desktop software, but works well enough.
           | I drew up the interior of my home to aid in renovations.
           | 
           | I also use it for modeling 3D prints when I don't need the
           | part to be parameterized.
        
         | doph wrote:
         | SketchUp. Pretty easy for an amateur/hobbyist to learn,
         | powerful enough that your architect might use it, too. You can
         | try the web based version for free.
        
         | ur-whale wrote:
         | Sketchup
         | 
         | Also: Blender.
        
       | boppo1 wrote:
       | What does this do that I can't do in Blender?
        
       | deadsy wrote:
       | I wrote this (in golang) to satisfy my need to generate STLs for
       | 3d printing.
       | 
       | https://github.com/deadsy/sdfx
       | 
       | In general I like to write code to define objects, but there are
       | some situations where a graphical editing UI would be nice. ie-
       | Curve and polygon design.
       | 
       | You can sort of imagine a hybrid approach where you could crack
       | open a mini editor to design a curve and then use it to generate
       | code (table of numbers) which you could then extrude/sweep/loft
       | or whatever.
        
         | timestretch wrote:
         | A hybrid approach where you could "sketch" with SolveSpace, but
         | then generate OpenSCAD style code that you could later edit
         | would be amazing.
         | 
         | The main advantage of OpenSCAD is that it doesn't "blow up"
         | when you change a variable to be out of some range where things
         | work. In OpenSCAD, you can put it back if it does cause a
         | problem.
         | 
         | Changing a dimension in SolveSpace sometimes throws off the
         | whole design. SolveSpace's precision, constraints, and great
         | keyboard user interface make it a fun program to design parts
         | in. It is among the best open source tools out there.
        
       | app4soft wrote:
       | JFYI, Here are my SolveSpace _showcases_ (models  & videos).[0]
       | 
       | [0] https://git.io/DailySolveSpace
        
       | fimdomeio wrote:
       | A while ago I found CAD Sketcher https://www.cadsketcher.com/
       | which integrates SolveSpace constrain solver in Blender which
       | while might still not be a fully useful working tool is pretty
       | interesting to play with.
       | 
       | While sketchup make 2017 is still my go to for anything
       | architectural or furniture and Freecad for anything 3d print,
       | Blender is always the app I whish I was using all the time, even
       | knowing fully well is not the right tool for anything cad.
        
       | pengaru wrote:
       | This is by far my favorite CAD program for quick engineering-
       | oriented designs.
       | 
       | But it's not without its bugs, and frankly the performance seemed
       | to steadily deteriorate as more of the code was "cleaned up" to
       | use more modern C++/STL stuff over the years.
       | 
       | I use a local fork from an older release that instead diverges
       | even further away from using C++ crap in a very performance-
       | sensitive area (the IdList indexing is done ad-hoc) and it's been
       | _far_ more usable for the large-ish models I tend to work on
       | (designing sheds /roofs and cabin structures). The same models I
       | work efficiently on are basically impossible to work with in
       | current upstream releases (when I last tried them, admittedly
       | pre-pandemic so years ago), almost every operation becomes a
       | many-second stall.
       | 
       | Edit:
       | 
       | My local fork is based on Alexey Egorov's changes @
       | 
       | https://github.com/Evil-Spirit/solvespace-master/tree/id-lis...
        
         | gamegod wrote:
         | You should really give Solvespace 3.x a shot... it's come a
         | long way and a lot of performance issues have been solved.
        
           | pengaru wrote:
           | It does look like they finally improved the IdList in 2021
           | according to [0]. When I have time I'll give it a spin on
           | some of the models I was last working on.
           | 
           | The last time I went down this path, IIRC the interactivity
           | had improved substantially even on large assemblies, but a
           | bunch of new bugs had been introduced. So I just stayed on
           | the old branch with the indexing fix, it's been relatively
           | bug-free for the stuff I do. From what I recall even just
           | picking lines/points/faces with mouse clicks had become
           | unreliable and inconsistent in the last new release I tried,
           | it was very broken.
           | 
           | [0] https://github.com/solvespace/solvespace/commit/7674be791
           | e84...
        
       | phkahler wrote:
       | Hi, lead maintainer here. Just saw we made the front page. AMA.
       | 
       | BTW I'm about to drop version 3.1 final any day.
        
       | samwillis wrote:
       | SolveSpace is by far the most interesting thing happening in open
       | source 3D parametric CAD, specifically because they have built
       | their own advanced parametric CAD kernel and constraint solver.
       | The only other "advanced" open source kernel is Open Cascade
       | which is a little difficult to work with, and nowhere near the
       | commercial Parasolid in its functionality and accessibility. I
       | would love to see some significant sponsorship of SolveSpace,
       | there is enormous potential for a modern and useable Parametric
       | Kernel.
        
       | [deleted]
        
       | dapids wrote:
       | I was hoping this was a modelling software with solvers for
       | electro/thermo/aero dynamics, etc. What is this solving?
        
       | ur-whale wrote:
       | This is a nice piece of software, but I wish they had a clean,
       | documented Python API to be able to drive it purely
       | programatically (a la OpenSCAD / CADQuery).
        
         | Syzygies wrote:
         | Yes. I couldn't even figure out from the reference manual how
         | to generate an input file programmatically. Presumably the
         | saved file format is human readable, and could be reverse-
         | engineered, but documentation would help.
        
         | Piezoid wrote:
         | The is a python API for it's constraints solver:
         | https://pyslvs-ui.readthedocs.io/en/stable/python-solvespace...
         | However the solid geometry engine is tightly coupled with the
         | application and not exposed by a public API.
        
       | crispisulcans wrote:
       | Love this piece of software! I tried a few other free CAD
       | programs before and this is one my favorite.
        
       | chromatin wrote:
       | Although apparently(?) less engineering-oriented, check out
       | OpenScad, which has a much wider install base and I think is more
       | mature with a large ecosystem:
       | 
       | https://openscad.org/
        
         | forgotpwd16 wrote:
         | Their approach seems different. SolveSpace is interactive-
         | oriented (similar to most CAD programs) whereas OSCAD is code-
         | oriented. Depending on what someone is doing guess they're
         | complementary?
        
           | ur-whale wrote:
           | SolveSpace, if it added a python API to its geometry engine
           | and constraint solver would be the best of both worlds and an
           | absolute killer app.
        
       | hello_marmalade wrote:
       | One issue is that they won't add fillets and chamfers.
        
       | tastemykungfu wrote:
       | This feels like a terminal based 3d application, and I love it!
       | 
       | I tried out "plasticity" (trying to get off of FreeCad) but
       | prefer this as it's very simple to use.
        
         | zokier wrote:
         | > This feels like a terminal based 3d application
         | 
         | I'm curious, what makes you think that?
        
         | dcminter wrote:
         | Now you mention it it does remind me vaguely of Tektronix and
         | VT320 interactions with applications on a Vax in my university
         | days!
        
       | genericone wrote:
       | I have to give this upvotes every few years this resurfaces on
       | HN. This is the best option for visualizing linkages and the
       | outputs from such mechanisms.
       | 
       | It was lacking in one type of constraint, but it was open source
       | so I was able to extend the code and contribute a feature after 8
       | years of weekly use.
        
       ___________________________________________________________________
       (page generated 2022-05-22 23:00 UTC)