[HN Gopher] Open source CAD in the browser (Solvespace)
___________________________________________________________________
Open source CAD in the browser (Solvespace)
Author : phkahler
Score : 268 points
Date : 2026-03-31 12:50 UTC (10 hours ago)
(HTM) web link (solvespace.com)
(TXT) w3m dump (solvespace.com)
| masonhensley wrote:
| I've been using FreeCad more and more, but solvespace has been a
| great, lightweight tool to design parts for laser cutting by
| SendCutSend/Oshcut.
|
| Neat that they got it working in the browser.
| bhouston wrote:
| FreeCAD is amazing these days. It has completely replaced my
| use of Autodesk Fusion 360 for woodworking projects. It is
| capable and the UI is understandable. Its feature depth is
| incredible.
|
| FreeCAD is becoming like Blender and Inkspace - incredibly
| robust and capable and equivalent in most cases to the
| commercial alternatives.
|
| I find the rendering side of things under developed though.
| ur-whale wrote:
| > FreeCAD is amazing these days.
|
| FreeCAD has become much better, no denying it.
|
| "Amazing" is however not the word I would use though, the UI
| is still very convoluted and very hard to learn.
|
| The worst part in FreeCAD, and which remains true to this day
| is the load of minutia you need to know to handle/avoid weird
| corner cases that you inevitable run into when you start
| building complex models and where FreeCAD stubbornly refuses
| to let you carry on with your work.
|
| When you paint yourself into one of these corners, the
| software is hugely unhelpful when it comes to understanding
| what you did wrong and how to correct it.
|
| In short, the word "Amazing" only works if you compare it to
| the absolute abomination the UI was a few years back.
|
| But compare FreeCAD today to, for example, how slick Fusion
| is, there is still a very, very wide gap.
|
| Finally, the geometry engine, is a somewhat old and creaky
| thing that sometimes downright fails to compute fillets or
| surface/surface intersections correctly, so yeah, YMMV.
|
| FreeCAD is however, free software, and not controlled by one
| of the worst corp. in the world of software: Autodesk. So
| huge thumbs up there.
| jstanley wrote:
| The word "amazing" fits perfectly if you compare FreeCAD to
| viable alternatives, of which there are none.
| trey-jones wrote:
| This is really accurate to my experience learning FreeCAD
| earlier this year. I am a former professional CAD user (of
| a lesser software than AutoCAD) and I don't think I would
| have gotten far without being able to ask ChatGPT for help
| understanding some of the quirks of FreeCAD.
|
| For free and open it's truly impressive though. Actually I
| think my time building iOS UIs in Storyboard was at least
| as useful as previous CAD experience, since constraints are
| the foundation of (at least one approach to) designing
| parts.
| blacklion wrote:
| I nominate Adobe to the worst corp. in the world of
| software.
|
| Fusion360 at least works on Linux
|
| Photoshop/Lightroom don't.
| ruevs wrote:
| The last Autodesk software I've used was AutoCAD 2000
| (released in 1999). And I've not followed them since.
|
| Perhaps they have indeed become "one of the worst corp. in
| the world of software", but in the early years they were
| very interesting. The founder of Autodesk, John Walker (he
| died in 2024) wrote/edited and interesting book on the
| early years: "The Autodesk File"
| https://fourmilab.ch/autofile/
| lopsotronic wrote:
| Yeah anything involving 2d art I confess I just send to
| Blender, even technical illustration, with the exception of
| O&D style sheets.
|
| The fact anyone got a CAD kernel working in the browser is
| insane. Parsing the vagaries, vendor cruft, and gaping holes
| in STEP files has occupied a non-trivial amount of my career.
|
| You want to talk about poisoned specs . . .
| 3yr-i-frew-up wrote:
| Yep, love FreeCAD.
|
| I did a major project with it in 2019 and it was great back
| then.
|
| The issues it has are pretty minor. Admittedly I ended up
| using a fork for Assembly3(IIRC)
| hrmtst93837 wrote:
| FreeCAD strains on larger assemblies and tighter parametric
| constraints, and feature depth doesn't hide slow updates or
| sketch import glitches.
| olavgg wrote:
| I just started with FreeCAD this weekend, and in 3 hours I
| managed to create a simple pci bracket that I could 3dprint. I
| just followed some YouTube tutorials. When I learned 3D Studio
| Max 25 years ago, I struggled a lot more.
| MrDOS wrote:
| SolveSpace is a wonderfully different take on parametric CAD, but
| development has really slowed, and it seems fundamentally
| incapable of some pretty rudimentary features (like chamfers[0]).
| Dune 3D[1] seems like a pretty effective spiritual successor.
|
| 0: https://github.com/solvespace/solvespace/issues/149
|
| 1: https://dune3d.org/
| julbaxter wrote:
| Dune3D uses SolveSpace behind the scene.
| phkahler wrote:
| Only for the constraint solver. Dune uses OCCT for the solid
| model.
| amelius wrote:
| I'm curious why you didn't go with OCCT for Solvespace.
| phkahler wrote:
| >> I'm curious why you didn't go with OCCT for
| Solvespace.
|
| I didn't start Solvespace, but Jonathan was apparently in
| a DIY mode after developing his take on constraint-based
| sketching. It's also very easy to go from NURBS curves to
| NURBS surfaces, the challenge begins at boolean
| operations which continue to be a source of bugs for us.
| This is really the only option _other than_ OCCT and the
| code is small and approachable so I try to make it
| better.
| amelius wrote:
| Would it be worthwhile to consider switching to OCCT (or
| make it optional)? It would make certain things such as
| fillets/chamfers much easier, I suppose, and it would
| make those boolean operation bugs go away. And exporting
| to various formats would be easy.
| phkahler wrote:
| >> Would it be worthwhile to consider switching to OCCT
|
| It would, and it has been considered. The sketch elements
| in solvespace are significantly decoupled from the solid
| model. That means we could substitute (via wrapper maybe)
| an OCCT object instead of our SShell class. Then you'd
| have to change a set of solvespace curves to OCCT curves
| to make extrusions from them and such. But that would be
| most of the work.
|
| We do tag all triangles in the mesh with a sketch entity
| handle for flat surfaces so you can constrain points to a
| face. I'm not sure how that would be handled. We will
| also be tagging edges of the solid with sketch entity
| handles in the future so we can do chamfers and fillets -
| say by selecting a line entity and applying a modifier to
| it which gets applied to the NURBS shell. I'm not sure
| how that would go with OCCT.
|
| But yes I've given a bit of thought to it ;-)
| amelius wrote:
| Perhaps you could create both the shell and the OCCT
| object. Then when an edge is chamfered, you could look it
| up in the OCCT object (simply find all segments which are
| sufficiently close to the chamfered edge). And then call
| the OCCT chamfer function. Or something along those
| lines.
| jwesthues wrote:
| Yeah. To quantify, OCCT is >1M lines of code, and
| SolveSpace's NURBS kernel is <10k. This general smallness
| is what subsequently made stuff like the browser target
| feasible, though it obviously comes with downsides too.
|
| We'd welcome contributions, and it's much easier to
| contribute to the smaller codebase. I think there's
| potential for coding agents to accelerate this work since
| robust point-in-shell and shell-is-watertight tests are
| mostly sufficient to judge correctness, allowing the
| agent to iterate; loosely you could define your geometric
| operation as a function of whether a point should lie
| within the output region, then ask the agent to convert
| that to b-rep. I wouldn't currently expect useful
| progress without deep human effort and understanding
| though.
| phkahler wrote:
| Oh, and the Blender CAD Sketcher add-on also uses our
| constraint solver.
| IshKebab wrote:
| FreeCAD doesn't have the limitations of SolveSpace, and the UX
| is actually decent now. I moved to that.
| l-albertovich wrote:
| I just tested it out of curiosity and found that viewport
| manipulation behaves in a very similar way to onshape which
| feels very natural to me.
|
| I've been thinking about trying to implement this in freecad
| but I'm still exploring the idea.
| Karliss wrote:
| There are more than dozen different viewport navigation
| manipulation modes, latest version added two more
| (Solidworks and Siemens NX). You can pick whichever behaves
| closest to the program you are most used to.
| jabl wrote:
| Some years ago I tried to learn CAD by doing some FreeCAD
| tutorials, and failed. But I hear 1.0 was a big step forward,
| and the recently released 1.1 is also a big step, and it
| should be somewhat decent nowadays. Maybe I need to try again
| one day.
| IshKebab wrote:
| Yeah it's vastly better in 1.0 than it used to be. I still
| think you might be a bit lost if you aren't familiar with
| parametric CAD, but it's no harder than Blender for
| example.
| jonpurdy wrote:
| I'm looking for a recommendation to get beyond TinkerCAD (for
| 3d printing). I learned it in 2019 and came back in 2025 when
| I got my own printer. It is comfortable and fine for my
| purposes but lacks basic things like chamfer and fillets.
|
| Anytime I try to jump into Fusion or FreeCAD I immediately
| hit a wall (like trying pirated Maya when I was a kid).
| IshKebab wrote:
| I would recommend pirating SOLIDWORKS and learning with
| that. It has the easiest UX of the parametric CAD
| modellers, and once you know the general sketch-extrude
| methodology you will find the others a lot easier.
|
| Actually I think they have a hobbyist subscription which
| isn't totally extortionate now if you want to stay legal.
| Maybe get it for a year.
| phkahler wrote:
| Chamfers and Fillets are my next major undertaking. Don't
| expect them any time soon, but they've moved to the top of my
| list. They are extremely difficult to do in the general case -
| so we will not cover all cases. Several years ago I tried an
| experiment:
|
| https://github.com/solvespace/solvespace/issues/453#issuecom...
|
| That could only do the top or bottom of a straight extrusion.
| This time will be a more general than that. Not looking forward
| to doing corners where 3 fillets meet ;-)
| MrDOS wrote:
| Oh, sorry, I didn't recognize that this had been posted by a
| SolveSpace maintainer! Rad. I am glad to hear the project is
| still moving.
|
| I also appreciate the difficulty of generalizing
| chamfers/fillets. There's a reason that basically all FOSS
| CAD packages have struggled with it.
| echelon wrote:
| > difficulty of generalizing chamfers/fillets. There's a
| reason that basically all FOSS CAD packages have struggled
| with it.
|
| Could you decompile CAD, run it through an LLM, and call it
| a day?
| yonatan8070 wrote:
| Aren't there licesing issues with porting a proprietary
| implementation into an open-source one that could open up
| the project to legal issues with the proprietary vendor?
| mordae wrote:
| Hi! Thanks for your hard work! I just want you to know it's
| definitely worth it!
|
| I am using SolveSpace for my 3D prints because I just don't
| have time to learn anything else. With SolveSpace I've been
| productive in like 2 hours after launching it the first time.
|
| So far you've saved me like $500 in things I've printed
| instead of bought. Just last week I've printed nasal manifold
| for my DIY sleep monitoring setup. Replacement specs legs a
| month ago.
|
| If you really make fillets and chamfers a reality, please
| don't forget to open donations.
| faangguyindia wrote:
| All we need is a genius, with unlimited claude and codex credit
| and he will replace Fusion 360 atleast in 3d printing and
| machining space
|
| It's so sad most guys aren't comming together to build some
| great CAD engine which open source really needs!
|
| Gimp is shame, photoshop is increasingly being lockdown and
| people who have smarts to fix that are doing nothing.
| ezst wrote:
| That people on this forum convinced themselves that it's a
| reasonable take to vibe code a useful geometric kernel is
| profoundly depressing.
| faangguyindia wrote:
| Just wait for sometime, there will be one.
|
| There are many geniuses on HN for tacking up challenge
| fainpul wrote:
| So you think AI can do this - why exactly is a genius
| needed?
| stackedinserter wrote:
| Correct me if I'm wrong, kernel is already there, and it's
| decent enough. What's lacking is a good user interface to
| it.
| progbits wrote:
| FreeCAD is perfectly good user interface for opencascade.
| The problem is that as your geometry gets more
| complicated you start running into the kernel
| limitations.
| progbits wrote:
| Indeed. I would love for it to be true, but aside from
| opencascade^1 all the professional kernels are proprietary
| and not in the training set, so LLMs can't just regurgitate
| them.
|
| ^1: Which I really appreciate, but let's be real, it is far
| behind eg. parasolid.
| brcmthrowaway wrote:
| How does Dune3D compare to FreeCAD?
| phkahler wrote:
| >> How does Dune3D compare to FreeCAD?
|
| Dune3D is more like Solvespace with a few improvements and
| bug fixes vs being anywhere near FreeCAD in terms of
| capability. Improvements include using STEP files in
| assemblies and having some ability to make Fillets or
| Chamfers. Bugs fixes would be due to using OCCT for NURBS
| surfaces - solvespace frequently fails with NURBS boolean
| operations.
|
| As for overall capability, FreeCAD does everything these
| others do but also supports lofting and other modeling
| options, BIM for architecture, I think it does pre- and post-
| processing for FEA, and maybe some other "big tool" things.
| mordae wrote:
| It takes 10x as long to sketch in it compared to SolveSpace.
| At least for me.
| TheJoeMan wrote:
| I scrolled with the mouse wheel and the origin drifts off screen.
|
| Is there an open-source "cleanroom" re-implementation of the
| Parasolid kernel? I just like the way Solidworks does things vs.
| Autodesk.
| gcr wrote:
| The mouse wheel zooms. The bounds of the axis stay fixed on the
| screen however. It will become more intuitive if you draw a
| circle to the screen first.
|
| To pan around the space, use the right mouse button. To zoom,
| use the scroll wheel. To rotate, use Shift+Right mouse button.
|
| Why not play with it a little bit before dismissing it so
| suddenly? I don't need to mention to a Solidworks/Autodesk user
| that CAD tools take some patience to understand properly :-)
| phkahler wrote:
| >> To rotate, use Shift+Right mouse button.
|
| Or middle mouse button / click the scroll wheel.
| phcreery wrote:
| This is expected behavior. The zoom action is into the cursor
| center. This is the same behavior of many other 2d/3d editors,
| such as Autodesk Autocad, Inventor, etc. Even MS Paint does
| this. If you place your cursor perfectly at the origin, it will
| not appear to drift.
| ruevs wrote:
| If you get lost press `f` to "fit" the current drawing to the
| screen.
|
| By the way working in SolveSpace is extremely fast if you use
| keyboard shortcuts - almost everything can be dome with a
| shortcut key. No need to search for them - you can learn them
| by looking in the menus.
|
| A very short "crash course" on the navigation is in the "Quick
| start:" section at the bottom of the download page.
| https://solvespace.com/download.pl The "demo video" on the home
| page is also a great starting point.
|
| After that the "Tutorials" and "Reference" go in as much detail
| as one may want :-)
| ponyous wrote:
| Does this use its own backend/engine? I've been working on LLM to
| CAD tool[0] and have realised there are so many backends and
| options to choose from. Since the realisation I'm trying to find
| the best representation for an LLM. I think OpenSCAD is currently
| the best and most feature complete choice, but I definitely need
| to dig a bit deeper. If anyone has any pointers I welcome them!
|
| [0]: https://GrandpaCAD.com
| yangcheng wrote:
| I have tried OpenSCAD, it seems very slow to compile to display
| on web. are you using the official wasm or some other ways?
| mikeayles wrote:
| you may find this useful: https://phaestus.app/blog/blog0031
|
| Edit: Forgot I also got doom running in openscad:
| https://www.mikeayles.com/blog/openscad-doom/
|
| and doom running in openscad in the browser at
| https://doom.mikeayles.com/
| ponyous wrote:
| I export it as .3mf file and display it with threejs on the
| web. Compilation seemed fast enough - few seconds tops.
| ur-whale wrote:
| > I think OpenSCAD is currently the best and most feature
| complete choice
|
| As much as I love OpenSCAD, I would _strongly_ disagree with
| your conclusion.
|
| All the OpenSCAD language can do is boolean operations and
| moreover, the engine can only implement those on polygonal
| (triangle actually) meshes.
|
| That's a very far cry from what a modern commercial CAD engine
| can do.
|
| For example, the following things are very, very hard to do, or
| even specify using OpenScad: - Smooth
| surfaces, especially spline-based - Fillets /
| Chamfers between two arbitrary surfaces - Trimming
| surfaces - Querying partly built models and using
| the outcome in the subsequent construction (e.g. find the
| shortest segment between two smooth surfaces, building a
| cylinder around it and filleting it with the two surfaces, this
| is an effing nightmare to do within the confines of OpenSCAD)
| - Last but not least: there is no native constraint solver in
| OpenSCAD, neither in the language nor in the engine (unlike -
| say - SolveSpace)
|
| I might have misunderstood what you're looking to do, but,
| yeah, digging deeper feels very much like the right thing to
| do.
| FeepingCreature wrote:
| (my) fncad doesn't have the querying, but it does have smooth
| csg! https://fncad.github.io/
| Zekio wrote:
| using BOSL2 alleviates most issues I've run into with
| OpenScad for chamfers and the like, but it is an extra set of
| functions you need to remember sadly
|
| https://github.com/BelfrySCAD/BOSL2
| ur-whale wrote:
| > BOSL2 ... but it is an extra set of functions you need to
| remember sadly
|
| It's also _extremely_ slow: it implements chamfers and
| fillets using morpho, and if you have a large number of
| fillets, the morpho algorithms (minkowski / hull) are very
| much non linear in time on polygonal meshes, which leads to
| compute time explosion if you want a visually smooth
| result.
| Zekio wrote:
| you can get around this somewhat by having less visually
| smooth previews when editing and higher quality when you
| want an stl $fn = $preview ? 32 : 256;
| IshKebab wrote:
| Yeah it does. In fact I believe it was written to demonstrate
| improved sketch constraint solving (there's a 2D version too).
|
| Unfortunately aside from the better sketching the engine is not
| as capable as OpenCascade.
| markcheno wrote:
| I just ran into this today: https://github.com/gumyr/build123d
| - seems like an LLM should have no problem writing python
| code...
| steveharing1 wrote:
| Currently I'm comfortable using FreeCAD but i'll try this one for
| sure.
| JoshTriplett wrote:
| Impressive work!
|
| Minor nit: why does the rendered in-window text use a really
| awful pixelated font? It looks like what happens when a font gets
| rendered onto a pixel grid without any hinting or snapping.
| dfox wrote:
| It uses exactly the same font in the desktop version, and is
| probably entirely intentional.
| JoshTriplett wrote:
| I assumed it likely looked like the desktop version, and that
| was exactly what was motivating my question.
| ruevs wrote:
| Intentional indeed. It is GNU Unifont - a 973KiB file that
| covers practically all of Unicode. In a bitmap font, platform
| independent, self contained, small. Practically all that
| SolveSpace strives to be.
|
| https://www.unifoundry.com/unifont/index.html
|
| Perhaps I've been using computers for too long but I actually
| like the non anti-aliased "sharp" and "pixely" look :-)
| JoshTriplett wrote:
| Pixelated can sometimes look okay on screens it was
| designed for. But I think the pixelated look _improves_
| with hinting that helps snap it to stroke widths, rather
| than randomly jumping between 1 and 2 pixels depending on
| how it happened to line up with the pixel grid.
|
| This is what it looks like on my screen:
| https://imgur.com/a/YeAdiXC
|
| A good pixel font would be a _vast improvement_ over this,
| though I 'd still prefer something that scales well (and
| respects the DPI of my screen, and isn't too small compared
| to the menu font...).
| ruevs wrote:
| Oh! This is very bad! It should not look like this.
|
| I've tried Firefox, Chrome and Edge on Windows; Firefox
| and Chrome an Android phone and tablet and it renders
| correctly - like the desktop version.
|
| What browser are you using? On what OS? Perhaps the web
| page is zoomed in/out in the browser? Scaling options in
| the browser? HiDPI screen with scaling?
|
| Would you be willing to open an issue on GitHub with the
| details? Or just post them here.
| phkahler wrote:
| Even the desktop version sometimes. If I open on one
| monitor and move to another with different scale factor.
| It seems Windows lies about window resolution.
| phkahler wrote:
| It uses GNU unifont, which is a bitmap font. There could be a
| bug causing the text to get stretched a little - we had that on
| Windows prior to this release.
| mandarwagh wrote:
| Crazy
| mclau153 wrote:
| onShape does this already
| ruevs wrote:
| But does it run etirely locally in the browser after
| downloading a total of 2993991 bytes (less than 3 megabytes) of
| code? ;-)
| phkahler wrote:
| Local storage too. We don't want your data.
|
| That 3MB also includes gnu unifont, the builtin vector font,
| and the 3js viewer for when you export models to html (viewer
| gets bundled in the file)
| contingencies wrote:
| Ahh, but can it do a clean self-reversing diamond thread
| including the reversing portion?
|
| See https://news.ycombinator.com/item?id=47580583
| ruevs wrote:
| Had to Google this one :-)
|
| Since SolveSpace has a helix tool that can "extrude" any sketch
| along a helix it should be doable.
| contingencies wrote:
| Perhaps if the author makes a demo it would be a good
| showcase for how much better it is than the other open source
| tools!
| ecto wrote:
| Here's my take on CAD in the browser! https://vcad.io
|
| I implemented a full kernel in rust and compile it to wasm
| https://github.com/ecto/vcad
| latand6 wrote:
| So I can ask an LLM to write rust code to generate CAD
| designs???
| phkahler wrote:
| Does that handle NURBS? It says STEP import, but not export?
| marshray wrote:
| > Could not locate file: "https://huggingface.co/campedersen/ca
| d0-mini/resolve/main/on..."
| GorbachevyChase wrote:
| I've wondered how feasible it would be to start building browser-
| based CAD/design products to replace our expensive and poorly
| supported paid plugins and niche products. Seems promising!
| henrebotha wrote:
| So stoked to see the movement on this project. Once lofts are
| possible, it'll be so over for FreeCAD
| jLaForest wrote:
| Chambers aren't available so I wouldn't hold you breath waiting
| for lofts
| 4gotunameagain wrote:
| Just curious, why are you so excited for the demise of FreeCAD
| ?
|
| Has worked quite okay for me thus far for semi professional &
| hobby projects
| Jaco07 wrote:
| I've been relying on FreeCAD more frequently, though SolveSpace
| has remained an excellent lightweight option for designing parts
| for laser cutting through services like SendCutSend and OSHCut.
| It is impressive to see that they have now made it work directly
| in the browser.
| somat wrote:
| I love solvespace, it is hard to describe but despite it's
| limitations and problems (and there are many) it feels joyous to
| use if that makes sense. Something about it's simple and
| straightforward interface just makes it fun. To the point that my
| biggest gripe is the modal dialogs that pop when a constraint is
| deleted or it's conditions cannot be met. It is quite awkward
| compared to the rest of the workflow.
|
| Anyhow, salutes to the author of this web port, very slick.
___________________________________________________________________
(page generated 2026-03-31 23:00 UTC)