I am on standby to enable it though, just need a price to drop a bit more!
> Instead of expecting it to understand my requests, I almost always build tooling first to give us a shared language to discuss the project.
This is probably the key. I’ve found this to be true in general. Building simple tools that the model can use help frame the problem in a very useful way.
I find it amazing how people's opinions differ here. This is the first stuff I'd trust to Claude and co. because it is very much in-distribution for training data. Now if I had sensitive backend code or a framework/language/library that is pretty new or updated frequently, I'd be much more cautious about trusting LLMs or at least I would want to understand every bit of the code.
If you setup your skeleton in a way it is familiar to you, reviewing new features afterwards is easier.
If you let the LLM start with the skeleton, they may use different patterns and in the long run it's harder to keep track of it.
"Bad" is the word you're looking for, not "different".
Engineers are an opinionated bunch, safe to say at least a small chunk of us will disagree with what goes into the training pile.
For me, it's preferring Deno-style pinned imports vs traditional require() or even non-versioned ecmascript import syntax.
Claude understood the problem and produced elegant Python code that worked perfectly the first time.
So I continued and described the other features of the tower to Claude, who coded them.
It's sometimes difficult to properly describe what you want in English, and Claude does a lot of thinking, and sometimes goes deep into a wrong direction of which it won't come out easily; but in the end the result is almost perfect.
If the loft appears twisted it only means you need to change the order in which you created the geometry. FC in addition to matching vertex to vertex will also match them in the order they were created. This allows you to purposely create twisted shapes, but sometimes can happen inadvertently also.
https://img.over-blog-kiwi.com/1/40/25/08/20170227/ob_76f390...
You can see that the square base is connected to the octagonal tower using alternating trapezoids and triangles; FreeCAD doesn't seem capable of doing that using the GUI (but I'm no expert and would love to be proved wrong).
Chesterfield's Crooked Spire in Chesterfield | Atlas Obscura https://share.google/ABVhVgtzQ8KxnO27L
I've messed around with freecad a bit (I'm still a beginner) and was just saying today I'd like to play around with trying to use llm's for 3d modelling.
EDIT: I found this mcp[0] after searching, was it that? The docs mention Claude desktop, but I assume it works fine with Claude code too, right?
Eventually I moved to JSCAD for the application mentioned in my blog post because I realized I wanted a more complex UI (which meant a web app) than what FreeCAD provided natively. If you're looking for something simple with some var statements though, FreeCAD might be enough.
In my experience, the MCP isn't really needed. Claude at least already can write the code pretty well. The problems are more with getting it to understand the output, which the blog post covers.
The Revit API is a challenge to build against. The documentation isn't great and often API calls will fail for mysterious reasons.
The old school, non-AI workflow for developing an add-in for me was: read the docs, write some code, run Revit which loads your add-in, do some actions within Revit to test your code, figure out what failed and repeat until you get the desired result. There was a lot trial and error involved and the loop was slow. Revit takes long time to start even on high-spec machines and the user actions required to test take some time.
I'm trying to use LLMs to speed up this development process by allowing it to run this loop. Things that are required to enable the loop without human intervention:
- a cli tool that allows Revit to be started, running a single addin. There's a couple of ways to do this: using a master add-in that dynamically loads child add-ins or manipulating the .addin files.
- a way to capture logs from within the running Revit addin and feed this back to the LLM. This is just logs in a standard location.
- a way to capture screenshots from within the running Revit addin. Revit has a image export functionality that can be triggered from within the code.
The loop is still slow but once setup it allows you to prompt, set it to run and come back later with some hope that it has achieved your goals.
Modelling is part of what I'm doing but it's also trying to get figure out how to work with extrusions, dimensions, views, etc, etc.
Hope that helps.
The VLM is invoked as a nested operation within a tool call, not as part of the same user-level context. This provides the ability to analyze a very large number of images without blowing token budgets.
I've observed that GPT5.4 can iteratively position the perspective camera and stop once it reaches subjectively interesting arrangements. I don't know how to quantify this, but it does seem to have some sense of world space.
I think much of it comes down to conditioning the vision model to "see" correctly, and willingness to iterate many times.
all i wanted was some opinions on if my bad idea would work, but it instead wrote me files for making my own sony earphones in 3ish parts.
and when i sewed it together, it worked!
that said, it did have full access to a mini CAD app, but i think it wrote all its own calculations inline
Produces a bunch of crap and it’s really hard to convince it that something needs to be changed. “Yep, I looked at the screenshot, it curves, so it’s okay.”
After asking it to review a single file in a simple platformer game, it goes:
> Coyote jump fires in the wrong direction (falling UP with inverted gravity)
var fallVelocity: float = body.velocity.y * body.up_direction.y
I'm like ok, suggest a fix> I owe you a correction: after re-analyzing the math more carefully, lines 217–223 are actually correct — my original review point was wrong. Let me walk through why.
Oh boy. It's had several other gaffes like this, and the UI/UX is still crap (fonts don't get applied, it doesn't catch up with the updated working state after editing files etc.) Codex helped me save time but Claude is just wasting my time. Can I get a refund?
I am currently using Claude as I find it to be better than the others at the free tier.
Claude often gets API and logic wrong and tries way too hard to "impress": When asked to generate Godot proof-of-concept scenes (or other stuff) it adds a lot of extra textures, colors, UI etc whereas Codex is more exact, does literally what asked, no more no less. Claude tends to flops in general non-coding questions too.
Gemini is the worst; it often refuses to search or interop with Google's own services like Flights etc. When I asked to do a reverse image search, it told me to go to TinEye
ChatGPT/Sora seems to be better at image generation than Gemini/Banana too.
Sometimes I ask them a quirky question or a random phrase and only Grok and ChatGPT seem to know what's up. Gemini would if it used Google's own search but nope.