[HN Gopher] Parametric CAD in Rust
       ___________________________________________________________________
        
       Parametric CAD in Rust
        
       Author : ecto
       Score  : 88 points
       Date   : 2026-01-27 20:36 UTC (2 hours ago)
        
 (HTM) web link (campedersen.com)
 (TXT) w3m dump (campedersen.com)
        
       | nynx wrote:
       | Unfortunately, using a geometry kernel [1] that operates on
       | triangle meshes means this is a no-go for serious CAD usage.
       | 
       | [1]: https://github.com/elalish/manifold
        
         | bigfishrunning wrote:
         | My whole CAD experience is with OpenSCAD, which apparently uses
         | the same kernel; Honest question -- what is the alternative? I
         | would assume the vast majority of 3D model processing relies on
         | triangle meshes...
        
           | autumn-antlers wrote:
           | libfive
        
           | nynx wrote:
           | Breps. Nearly all commercial cad packages operate on boundary
           | representations of objects.
        
             | bob1029 wrote:
             | I would start with CSG if you are new to these ideas:
             | 
             | https://en.wikipedia.org/wiki/Constructive_solid_geometry
        
           | nicr_22 wrote:
           | OpenCASCADE?
           | 
           | https://dev.opencascade.org/
        
             | zokier wrote:
             | Notably wrapped by build123d into cad as a code package
        
         | xixixao wrote:
         | I've built something very similar (also based on triangle
         | meshes, but in TS), and while it wouldn't work for say 3D
         | printing, my target is game object modeling. I guess people
         | have specific use cases in mind when referring to "CAD".
        
           | nynx wrote:
           | In my mind, cad that you're not going to manufacture is
           | "modeling". Not sure if that's a common verbal distinction.
        
             | ezst wrote:
             | Not sure either but sharing the sentiment.
        
             | bigiain wrote:
             | An example of common terms that disagrees with that
             | somewhat, is "CAD/CAM" where the design component is
             | clearly distinct from the manufacturing component.
             | 
             | I do agree that historically, software aimed at building 3d
             | models for games/animations and other digital use was
             | usually called modeling and not cad. I'm thinking of
             | software like 3D Studio Max back in the 90s here.
             | 
             | https://en.wikipedia.org/wiki/CAD/CAM
             | 
             | I notice though that the Wikipedia article for CAD says:
             | "This software is used to increase the productivity of the
             | designer, improve the quality of design, improve
             | communications through documentation, and to create a
             | database for manufacturing."
             | 
             | https://en.wikipedia.org/wiki/Computer-aided_design
        
       | maartenh wrote:
       | Curious to how well LLM's work in this context! (mentioned as one
       | of the reasons to embed CAD in Rust)
       | 
       | I only know of another text -> STL AI model, I'm quite a bit more
       | excited about this idea.
       | 
       | Does someone have experience with this?
        
         | storystarling wrote:
         | I've found LLMs perform surprisingly well here if you target
         | CSG or OpenSCAD. It seems to frame the 3D modeling challenge as
         | a logic and syntax problem rather than a spatial one, which
         | plays to the model's strengths. You avoid the spatial
         | hallucinations common in image generation because it's
         | effectively just writing code.
        
       | d_silin wrote:
       | Interesting, because I am trying to learn OpenSCAD for some
       | simple modeling.
        
         | the__alchemist wrote:
         | Note: This is probably a dead-end; it is not on the same level
         | as SolidWorks, Fusion etc.
        
           | ecto wrote:
           | How could I make it better?
        
             | the__alchemist wrote:
             | Sorry about the confusion - I'm referring to OpenSCAD; not
             | your project.
        
           | avmich wrote:
           | You're probably right, OpenSCAD seems to be limited both in
           | speed and in exactness of the surfaces.
           | 
           | However purely programmatic interface allows doing surprising
           | things which might be hard to achieve with a mouse.
        
           | whilenot-dev wrote:
           | I wouldn't call a FOSS project that you compare to some 2,620
           | USD/year software a dead-end. It's good enough for simple
           | modeling, especially when it comes to scripting, and has been
           | for 10 years already.
        
         | 8note wrote:
         | definitely learn solidworks or something in that vein first
         | 
         | that, and as a prior skill, learn to draw by hand on paper
         | orthogonal and isometric views of 3d objects.
         | 
         | cad is another theory building excercise, but instead of being
         | about processes, its about objects. you want to start from a
         | strong manual/first principles base
        
         | nomel wrote:
         | If you're more interested int the result than the process,
         | Onshape or Fusion are _great_ , free (with use restrictions)
         | parametric CAD. And both support scripting, to some extent.
         | 
         | Both have really great documentation/examples.
        
       | hambes wrote:
       | I've been doing a similar thing using GhostSCAD[1], which is a
       | relatively thin wrapper around OpenSCAD in Go. Not as typesafe,
       | but my language of choice.
       | 
       | [1]: https://github.com/ljanyst/ghostscad
        
       | oussama-gmd wrote:
       | Amazing work! This is what I was looking for, I thought of this
       | few months ago and didn't have the time to create it myself.
       | Thanks will explore it and give my feedback!
        
       | kibwen wrote:
       | Note that there's an existing CAD-in-Rust project, Fornjot, which
       | has been quietly developing since 2020: https://www.fornjot.app/
        
         | mountainriver wrote:
         | Also Truck https://github.com/ricosjp/truck
        
       | davidmedin wrote:
       | This sounds a lot like Fidget (https://github.com/mkeeter/fidget)
       | and libfive (https://github.com/libfive/libfive) by the amazing
       | Matt Keeter!
        
         | ecto wrote:
         | Hadn't ran into these, thanks!
        
         | rnhmjoj wrote:
         | I had a lot of fun playing around with antimony (also from
         | Keeter) a few years ago, but unfortunately it has been mostly
         | abandoned. I heard libfive is supposed to be the next
         | generation, but I haven't experimented with it yet.
         | 
         | Do you know how it compares?
        
       | FpUser wrote:
       | I am constantly designing parts myself. I just wish that instead
       | of having many unfinished, unpolished products we had something
       | with the level of Solidworks / Onshape / whatever.
       | 
       | FreeCad is getting somewhere but it is still way behind. The last
       | thing I care about is what language was it implemented with.
        
       | kivarada wrote:
       | Great work! Please consider adding a RSS/Atom Feed to your site.
       | I would like to include it in my Tech Content Platform:
       | https://insidestack.it
        
         | ecto wrote:
         | Done, thanks for the kind words!
        
           | kivarada wrote:
           | Great, I already added you!
        
       | etskinner wrote:
       | The opening paragraph is very telling; the author doesn't seem to
       | understand typical pro-level parametric CAD programs available on
       | the market:
       | 
       | > I keep designing physical parts for our robots. Motor mounts,
       | sensor brackets, wheel hubs. Every time, the workflow is the
       | same: open a GUI CAD program, click around for an hour, export an
       | STL, realize the bolt pattern is 2mm off, repeat.
       | 
       | This doesn't make sense. When you realize the bolt pattern is 2mm
       | off, you just edit that dimension and let the CAD program
       | recalculate. You don't need to click around for an hour again.
       | That's the beauty of contstraint-based parametric modeling as
       | opposed to, say, modeling in Blender.
       | 
       | The author's program is akin to writing vim to replace Publisher.
       | They're solving entirely different problems. Not to mention, this
       | code-as-model paradigm already exists: OpenSCAD
        
         | ecto wrote:
         | You're correct, I'm completely uneducated! Pull requests
         | welcome :)
        
           | IshKebab wrote:
           | The pull request is to delete the project and open SOLIDWORKS
           | or FreeCAD.
           | 
           | But don't actually delete it. It looks like a nice
           | alternative to OpenSCAD. But like OpenSCAD it's really a
           | niche thing for designs that are _highly_ parametric like
           | fasteners, gears, 3D printed boxes, etc.
           | 
           | Like OpenSCAD using it for normal "irregular" CAD is going to
           | be extremely frustrating. Like editing an SVG in notepad
           | instead of Inkscape.
           | 
           | I still feel like there's a unexplored space where you
           | combine the benefits of both somehow though. Like a code-
           | based CAD but it also has a GUI editor that stays in sync and
           | avoids the need to type in coordinates by hand. That would be
           | extremely difficult though.
        
         | gwbas1c wrote:
         | Read a bit before critisizing:
         | 
         | > One thing I care about that most CAD tools don't: vcad is
         | designed to be used by AI coding agents.
        
           | ilogik wrote:
           | For that there's openscad
        
             | hnuser123456 wrote:
             | I've even already asked an LLM to generate designs in
             | openscad, and there's plenty of examples out there.
             | Obviously there's a complexity limit, but there's also a
             | cheat sheet that makes it pretty easy to discover how to do
             | almost anything that's possible within.
        
         | bangaladore wrote:
         | > That's the beauty of constraint-based parametric modeling as
         | opposed to, say, modeling in Blender.
         | 
         | I was thinking the same thing. This looks more like an API that
         | makes 3d modeling look closer to CAD, but without realizing
         | that CAD is about constraints, parametrizing, and far more.
        
       | asdfaslkj353 wrote:
       | Absolutely atrocious and piss-poor contrast. Can barely read a
       | thing.
        
         | ecto wrote:
         | Are you feeling alright?
        
           | asdfaslkj353 wrote:
           | Yes, I am alright, the website attempts to support dark-mode
           | but does such a poor job of it that renders it completely
           | useless.
           | 
           | https://i.ibb.co/VppSx4mc/pisspoor.png
        
             | golem14 wrote:
             | I agree the UI on the screenshot is not very accessible.
             | I'm also think that language and tone choice matter a lot
             | when delivering (even constructive) criticism.
        
             | ecto wrote:
             | Thank for the feedback. Have a nice day.
        
           | tuetuopay wrote:
           | GP perhaps did not say it in a polite manner, but their
           | criticism is valid.
           | 
           | Please have a check on a different monitor and browser than
           | you are currently using, as most of the article is
           | unreadable. Code blocks are nigh unreadable, and the
           | screenshots are washed out as if they were HDR with improper
           | tone mapping (I tested both with Firefox on Linux and Safari
           | on iOS).
           | 
           | It's a shame, because it made me gloss over the article.
           | 
           | Oh, and the screenshots have the same issue both on the blog
           | post and on the main vcad.io website. Funnily enough, code
           | snippets on vcad.io have proper readable colors as opposed to
           | your blog (they're still too dim to be comfortable though,
           | but they're readable).
        
       | gwbas1c wrote:
       | What's nice about this is that it allows for programmatic CAD,
       | enabling things like web applications that can download an .stl
       | file based on user input. I hope I can find a weekend or two to
       | play with it.
       | 
       | BTW: I spent a few weekends playing with Microcad
       | (https://microcad.xyz/). It was cool, and had a similar rust
       | feel. I just, for the life of me, couldn't figure out how to do
       | 3d ellipses.
        
       | ge96 wrote:
       | SketchUp was my go to for a while but I'm done with parametric
       | personally, trying to fix meshes for 3D printing... time I grow
       | up and use something like Fusion360 seems like or onshape. Still
       | it was good/simple enough for non-round shapes in SketchUp except
       | they have some kind of memory leak/bug at least for the 2017
       | version. But I guess quit being cheap and buy a modern copy on my
       | part.
       | 
       | Edit: oh I guess sketchup is a surface modeler weird thought it
       | was parametric this whole time, lol someone else said it's a
       | polygon modeler
       | 
       | Yeah I don't know what parametric modeling is apparently, I use a
       | mouse/calipers to model stuff not parameters
       | 
       | There is a solid validator plugin you use before you export an
       | STL to make sure the mesh is closed/a manifold
        
         | IshKebab wrote:
         | SketchUp uses direct modelling, not parametric modelling. I
         | think they even got some patents on direct modelling.
        
         | Animats wrote:
         | It's using a constructive solid geometry system. You can add
         | and subtract volumes. Making a hole is subtracting a volume.
         | This has classically been numeric roundoff hell, where points
         | that should coincide and surfaces which should touch don't get
         | handled properly due to numerical error. _The geometry engine
         | is Manifold, which guarantees watertight meshes from boolean
         | operations._
         | 
         | Ah. That's what's doing the constructive solid geometry. Here's
         | the 2009 PhD thesis behind the object merge and difference
         | algorithms inside Manifold. Nice. At last, soundness. This is a
         | long-standing problem. And now there's an open source
         | implementation. Manifold itself is in C++, not Rust, though.
         | 
         | None of this is parametric. That's a different problem. That's
         | where you put in constraints such as A is perpendicular to B, B
         | is 100mm from C, etc., and the constraint solver tries to
         | satisfy all the constraints. Change a dimension and everything
         | adjusts to preserve the constraints. Parametric CAD is all
         | about constraint solving and expressing conflicts to the user.
         | Autodesk Inventor, Fusion, etc. have good constraint solvers.
         | 
         | [1]
         | https://github.com/elalish/manifold/blob/master/docs/RobustB...
        
       | hahahahhaah wrote:
       | Why not use OpenSCAD?
        
         | amelius wrote:
         | Because it is not written in Rust, I suppose.
         | 
         | Anyway, I think using only code for designing 3D objects is a
         | bad choice. You really need something that is between pure code
         | and pure GUI.
        
       | jas8425 wrote:
       | Is anyone else put off by the AI-sounding text? Two things that
       | give it away for me are the excessive use of punctuation-
       | emphasized sentence fragments ex:
       | 
       | > No clicking. No undo. Just recompile.
       | 
       | > That's our mascot. Entirely CSG.
       | 
       | > No garbage collection pauses. No floating point surprises from
       | a scripting layer.
       | 
       | And worst of all, the dreaded "and/but honestly":
       | 
       | > But honestly, the main reason is the toolchain.
       | 
       | Am I misreading things?
        
         | ecto wrote:
         | Thanks for the feedback
        
       | librasteve wrote:
       | I get the sense that this author is looking for a DSL (domain
       | specific language) and landed quite close.
        
       | vhantz wrote:
       | Yet another rewrite-it-in-rust-just-because project. I'll stick
       | with OpenSCAD
        
       | amelius wrote:
       | Based on a geometry engine written in C++ ...
       | 
       | https://github.com/elalish/manifold
        
       ___________________________________________________________________
       (page generated 2026-01-27 23:00 UTC)