Live data from Hacker News

Show HN: Browser CAD for stock-tube structures with generated 3D-printed joints

app.trusslab.ai

1–4 of 4 posts

Show HN: Browser CAD for stock-tube structures with generated 3D-printed joints

#1
(Submitting as TrussLab's UI designer - my husband Jan built the editor and wrote the text below; he's answering questions in the thread as janherich.)

The linked demo opens TrussLab with a deliberately simple triangle frame and walks through its construction in real time, with narration. You can sit back and watch, orbit around the model without interrupting autoplay, pause or resume the build, or take over at any point and edit it yourself.

TrussLab grew out of my earlier work on SpaceDelta3D large-format delta printers and ultralight SpaceDrone quadcopter frames. At that time, the tooling was just a collection of Clojure scripts that I interacted with from a REPL to generate OpenSCAD models. The underlying idea is simple: use straight-cut tubes or rods made from metal, composites, or even wood for the long members carrying tension and compression, and 3D-print only the geometrically complex joints. Keeping the printed parts small reduces print time, failure risk, warping, and the cost of advanced materials. It worked surprisingly well in two very different domains, so I decided to generalize the approach into something more people could use: "print the complexity, buy the length."

The main difference from general-purpose CAD is that space-frame construction is TrussLab's native design model rather than a workflow layered on top. You work with the logical frame, the nodes and the links between them, while TrussLab tracks which links represent physical members and which are virtual construction geometry. It offsets straight-cut tubes to prevent interference and keeps the generated joints compact. Each printable joint is composed of reusable parametric building blocks called link attachments. Attachments bind to physical or virtual links and adapt to properties such as position, orientation, and tube radius. The attachment palette is not fixed: you can create your own in the built-in constructive solid geometry (CSG) editor and reuse them across frame designs.

Today, TrussLab exports printed parts as STL or 3MF, optionally including the physical members, plus a CSV bill of materials with a tube cut list. It does not yet export STEP; that is planned. The roadmap also includes structural integrity checks and importing read-only glTF geometry for fit checks and rendering.

I'd especially value feedback on what you would try to build with this approach and what missing capability, if any, would prevent you from doing so. I'm also happy to answer questions about the design model or implementation.

Show HN: Browser CAD for stock-tube structures with generated 3D-printed joints
app.trusslab.ai

Re: Show HN: Browser CAD for stock-tube structures with generated 3D-printed joints

#3
Nice idea, but the interface needs some polishing:

- In general, you are exposing too much of the internal object model to the user. E. g. nodes added by the user and nodes added during reconciliation might be same class internally, but the user don't care much about the latter.

- "Reconciliation" looks like a sure way to confuse everyone (e. g. made an equilateral triangle, why are my joints not exactly the same? Forgot to reconcile one).

- A button for automatically merging all attachments at a node into a joint would be nice (but that might require keeping a track on what got reconciled where).

- Would be nice to automatically adjust length ratio and reconciled offset for shallow connection angles.

- You have to tweak visibility settings to be able to select nodes, virtual links and attachments, that's a bit ugly. Would be nice e. g. to be able to select a virtual link behind currently selected physical link, or a node out of a list of nodes on the current link. Especially when adding a connection in the middle of a link - you have to select the link, then hide physical links. Perhaps only allow selecting valid/semantically meaningful elements in this modes, and highlight them so that they aren't occluded?

- Any way to exploit symmetry? That's a bit advanced, but if we are making a regular tetrahedron it's quite a chore to repeat every operation four times every time you have to readjust it. That's particularly desirable because when you one physically manufacturing the design, one'd like to know which parts are interchangeable.

- Make automatically assigned names shorter (i. e. J1 instead of "Joint 1") so that you could put them as labels on prints.

Re: Show HN: Browser CAD for stock-tube structures with generated 3D-printed joints

#4

Nice idea, but the interface needs some polishing: - In general, you are exposing too much of the internal object model to the user. E. g. nodes added by the user and nodes added during reconciliation might be same class internally, but the user don't care much about the latter. - "Reconciliation" looks like a sure way to confuse everyone (e. g. made an equilateral triangle, why are my joints not exactly the same? Fo…

Thank you very much for the perfect kind of feedback !

And Indeed, UI is messy/complicated stuff, the whole thing was very "easy" while more or less the same functionality lived just inside code scripts :)

1. Regarding nodes which are "automatically" created during reconciliation, they are just "regular" vlink relative nodes, and you can place them (and attach physical links to them) just by manual actions, without any reconciliation needed. But you are right that the naming is confusing it it would be probably better to just hide them by default

2. Yes, that functionality (automatically merging neighboring attachments into connection) is planned and can work on simple geometric distance + some link based heuristic. Even if not ideal, it would solve 90% of the case and spare a lot of manual editing, you can always repair/tweak cases where it got it "wrong"

3. Also a very good idea, basically reconciliation is now explicit "one-shot" action, while we could expose "auto-reconcilation" flag which would automatically reconcile joints after every edit (using reconcilation spec like order, pairwise preference, that's already exposed for each eligible joint and working very well). The only problem are cycles, eq there are situations where this would result in infinite reconcilation loop in some cases, but we could easily detect that and just flag such cases

4. For the visibility, the way I usually work with it is to use global visibility toggles for each entity type (nodes/vlinks/plinks/plink-attachment/vlink-attachment/attachment-connection), so even model in advanced stage (already full of physical links/attachments) I simple hide all physical links with single click when I add to plan some new link relative nodes. Other option is to select the entity and then pick the attached one (like node on a link) from the right hand html menu -> but you are right it's only exposing terminal nodes. Selected link higlights are related nodes with outline pass, but you can't select them directly when attachments are in place, since they capture the click and you select the attachment instead...

5. Best way to make sure repeated things stays in sync is with built-in reactive properties, one reactive property (simple literal or expression) can drive parameters of eny entity in the system (like physical link radius, or some attachment param, attachments are open, you can design and import your own in built-in CSG modeller). But I think your question is different, it's more about whether it's possible to exploit geometric symmetry and just repeat the same joint configuration N times -> that's a good question, it would probably require some scripting capability/DSL, not a bad idea

6. Finally some 5min fix, thanks for the recommendation !