Remix.run Logo
▲ ash_091 2 hours ago

Neat! Perhaps I'll finally get around to doing something with the 51515 Lego set I have laying around collecting dust.

> I did this in order to get agentic LLMs capable of designing buildable, physical things!

I've been experimenting with FreeCAD + freecad-mcp + Claude recently and have been similarly surprised how well this works. I've produced three useful parts from Claude's designs: a 3d printed case for an OLED display + some inputs + an ESP32, and a milled aluminium hotend mount adapter for a 3d printer, and a printed pen + pressure sensor mount to use the printer as a plotter. I just provided part/model numbers plus a couple of caliper measurements Claude wasn't able to find online and went through two or three cad revisions before making the parts. All three worked on the first hardware revision.

The biggest thing I've found it seems to struggle with is understanding how the parts will be assembled. The pen mount in particular was tricky to put together, having a part which needed to fit through a slightly too small space to get to its spot. Although it's hard to blame the AI for that when I didn't notice it either I suppose.

▲nico an hour ago | parent | next [-]

> I've been experimenting with FreeCAD + freecad-mcp + Claude recently and have been similarly surprised how well this works

Yup. I’ve been getting some pretty decent 3d models directly on stl format + the slicer file with all the right configs for my printer

It’s cool to create a simulation, run some visualizations on web directly from Claude desktop, and then choosing a model to print and build

I also added some genetic algorithms to make it fun iterating on different shapes/mechanisms

I really enjoy how much creativity these tools are unlocking by enabling bridging so many elements together

▲antelocnova an hour ago | parent | prev | next [-]

Thanks!

I've been experimenting with FreeCAD and freecad-mcp too, even managed for Claude to create a new LDraw benchmark for it.

However, given the amount of parts some LDraw models have, FreeCAD performance would not be enough, something to do with its solver trying to work out too many constraints at once.

The thing about how to assemble the parts, yes, that drove me crazy for quite a while.

A way I found that helps is to provide the agents information about contacts, e.g. what parts of a brick are actually connectors.

With that in place, it can create tools to automatically check if two parts are connected "the right way" ;-)

I got LEGO connectors info from here: https://www.melkert.net/LDCad/tech/shadowLib

▲ash_091 an hour ago | parent [-]

I just added another comment under my original as you were replying- I'll try not to spam you with too many questions, this is just so cool though!

Do you find the models generally manage to avoid making errors when placing parts (e.g. placing parts which intersect, don't connect properly, etc) or do they rely on validation and correction cycles?

▲antelocnova an hour ago | parent [-]

A mix of both, I think.

When giving them enough examples, like e.g. houses, they tend to do well in that category, but not perfect.

My guess is that what happens is, given that most LEGO parts have a very limited, discrete set of legal positions and rotations, expressed as integer numbers, the agent finds patterns between different models, like e.g. a brick close to the center of a model usually has very similar (integer) coordinates and rotation components to another central brick from another model.

However, it still messes up very often, with things like e.g. +/- signs that flip parts due to rotations becoming -90deg when they should be +90deg; then, validation and correction cycles, running tools that verify the presence/absence of collisions, really helps in finishing the job.

▲ash_091 an hour ago | parent | prev [-]

> the 51515 Lego set

On that note- have you considered adding constraints for part availability? It would be useful to be able to create designs using only parts which are on hand.

I recall seeing a project a while ago which could take a photo of a pile of lego as input and produce models that could be made with those parts. Although I think in that case the models were sorta just random arrangements.