[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)