#cadquery
I built mesh2cad, an open source tool that turns STL meshes of simple mechanical parts back into editable CAD. New: a box with every edge rounded comes out as a CadQuery/OpenSCAD/FreeCAD script with one radius you can change, plus holes and bosses.
github.com/emirmrkaljev...
November 9, 2026 at 6:44 PM
Graveyard #terrain I modeled. All the pieces were created using #cadquery and python (no ai).
FDM printed and painted by me. The mausoleum has a modeled interior with removable roof and the door opens.
The miniatures are from Super Dungeon Explore

#minipainting #halloween #wargaming
October 31, 2026 at 1:20 PM
Asking for feedback. I'm making a mausoleum for a Halloween themed set. I'm doing digital color tests for what I want to paint the model.

Included some different variants I'm playing with.
Thoughts?

#halloween #cadquery #wip #indiedev #minipainting
October 25, 2026 at 1:28 PM
Turning a 3D printer part's chamfers back into parameters you can edit
mesh2cad takes an STL and gives back CAD: a STEP file with real planes, cylinders and cones, and, when the part is simple enough, a CadQuery or OpenSCAD script with named parameters. The point of the script is that you can open it and change `hole_1_d` instead of fighting triangles. I test on six real Original Prusa i3 MK3S printer parts. Yesterday's post got five of them to exact STEP. 0.12.0 does two things: it sews the last one, and it makes the belt idler editable as a script. ## The last STEP: a bore that meets everything On y-rod-holder every surface was already fitted in 0.11.0, but the solid didn't close. The R=4.00 mm rod bore is one cylinder band whose boundary loop touches several planes and the coaxial 45 degree chamfer circles at both ends. The sewing code only handled a band that meets one or two simple caps, so it gave up and the output was the raw mesh: valid, but 3043 triangles and nothing to edit. 0.12.0 trims a cylinder or cone band against all the planes and coaxial circles in its loop. Two smaller fixes were needed on the same part: a hole end that is a full chamfer circle can now meet a cap that is split across coplanar pads, and a short chamfer that region growing had glued onto a plane is split back off when its vertices leave that plane. Result: 158 planes, 8 cylinders, 11 cones, Hausdorff 0.2178 mm, volume error 0.391%, 12.4 s. The cylinders and cones fit to under 0.005 mm. The remaining 0.22 mm is three shallow patches kept as single planes, with vertices 0.16 to 0.24 mm off the plane and no internal edge sharper than about 10 degrees. I'd rather report that than hide it. So all six real parts are now exact STEP solids. ## The editable part: chamfers, blind holes and pockets STEP is good for measuring and for other CAD tools, but you can't say "make this hole 2 mm bigger" to a STEP file. For that, mesh2cad writes a small script: intersected extrusions along X, Y and Z, cuts, and holes. Until now it refused any part with a chamfer on a hole, which ruled out most printed parts. 0.12.0 adds to that vocabulary: * a 45 degree axis-aligned chamfer on a hole, as `hole_N_chamfer` (the axial length) * a blind hole, as `hole_N_depth` * a blind pocket, and a shallow floor such as a hex nut pocket or an embossed logo y-belt-idler now exports both scripts. The solid is the X and Y silhouettes intersected, plus the belt grooves, hex pockets, logo floors, an Ø3.2 hole along X with an Ø5.6 counterbore, a 0.5 mm blind hole along Y with a 45 degree taper, and two Ø3.3 holes along Z with a 0.4 mm mouth chamfer. Every script is rebuilt and compared to the mesh before it is written. The gate is the same as before: max deviation at most max(4 x tolerance, 0.1 mm) and volume error at most 1%. For the idler the limit is 0.192 mm: script | max deviation | volume error ---|---|--- CadQuery | 0.1534 mm | 0.144% OpenSCAD | 0.1639 mm | 0.145% There is a test where a chamfer on an X hole through a slanted extrusion is edited from 0.8 mm to 1.2 mm, and the volume changes by exactly the analytic ring. That is the behaviour I want: change a number, get the geometry you'd expect. ## Still refused Three of six parts are parametric now (plug-aligner, endstop-block, y-belt-idler). The other three are refused, and the message says why instead of writing a wrong script: * **y-motor-holder:** "combined extrusion deviates by 7.924 mm (limit 0.266), volume error 30.07%". Its Ø5.6 / Ø3.2 screw holes run from z=0.4 to z=8 on a part that is 19 mm tall. They are stepped holes that don't go through, which the vocabulary doesn't have yet. * **y-rod-holder:** "combined extrusion deviates by 1.503 mm (limit 0.138)". The Ø3.3 hole along Y isn't one radius for its whole length, so a single cylinder sits about 1.5 mm off the mesh where the opening widens. * **y-belt-holder:** "combined extrusion deviates by 2.517 mm (limit 0.154), volume error 1.97%". Better than 24 mm in 0.11.0, but the outline still has a gap. These are the next three things to build, in that order. ## Try it pip install mesh2cad mesh2cad convert part.stl -o part.step mesh2cad convert part.stl --openscad part.scad It also runs as an MCP server (`mesh2cad mcp`), so an assistant can convert a part and then edit a parameter for you. If you have an STL of a simple mechanical part that fails, an issue with the file attached is the most useful thing you can send: github.com/emirmrkaljevic/mesh2cad.
dev.to
October 23, 2026 at 6:20 PM
I blamed fillets for my STL-to-CAD failures. The original STEP files said otherwise
mesh2cad turns an STL back into CAD: a STEP file with real planes, cylinders and cones, plus a CadQuery or OpenSCAD script when the part is simple enough. I test it on six real Original Prusa i3 MK3S printer parts, because synthetic test shapes lied to me before. After 0.10.0, two of the six came back as exact STEP solids. The other four fell back to a faceted solid (valid, but just triangles glued into faces). The tool reported a small "unfitted" area on each, and I wrote in the README that these were probably edge rounds: torus fillets and sphere corners that the fitter didn't know yet. That was wrong, and finding out how it was wrong is what made 0.11.0 work. ## Check the diagnosis against ground truth These Prusa parts are open source, and the STEP files the STLs were exported from are in the same repository at the same commit. So instead of writing a torus fitter, I first listed the surface types in those STEP files. There were no tori and no spheres at all. The surfaces were planes, cylinders, 45 degree cones (chamfers), and a few small B-spline patches for the belt tooth profile, about 0.1 to 0.2% of the area. So the "unfitted" regions were not a missing surface type. They were segmentation mistakes: * **Faces glued across a real edge.** A region grown across a 45 or 90 degree edge contains two planes, so no single surface fits it, and the whole patch was marked unfitted. * **Short chamfers rejected.** A 45 degree chamfer 0.6 mm tall has so few vertices that the cone test threw it out. * **Cylinders left behind after a chamfer was carved out of them.** The hole was fine, but its band was split into pieces that each looked too small. * **Flat polygons whose corners lie on a circle.** On the belt idler, eight bands with radius 11.1 mm looked like a cylinder. Every vertex is exactly on that circle, but the face centres are about 7 mm off it and the angle between neighbours goes up to 90 degrees. They are planes. A fitter that only checks vertices will call a polygonal boss a cylinder or even a sphere. ## What changed in 0.11.0 All of these only run when the mesh is a clean CAD tessellation, never on a noisy scan: * A region that crosses an edge sharper than about 35 degrees is split and each piece is refit. * A cylinder or sphere candidate must also match its face centres, not just its vertices, so polygons stay planes. * A short 45 degree chamfer is kept when its vertices lie on the cone to roundoff. * A ring of single-facet planes whose centres lie on one full cylinder is merged back into that cylinder. * A hole circle that ends on several coplanar pads that don't touch is sewn as arcs of one circle. * A plane corner whose three-plane intersection is unstable uses the mesh vertex, if that vertex lies on all three planes. A fillet between two planes is deliberately left alone. ## Numbers From `python benchmarks/real_parts.py` (H is Hausdorff distance from the mesh, in mm): part | 0.10.0 | 0.11.0 ---|---|--- y-belt-idler | faceted-hybrid, H 0.28, 12.3 s | exact: 197 planes, 6 cylinders, 3 cones, H 0.0082, 5.1 s y-belt-holder | faceted, 890 faces, 21.0 s | exact: 210 planes, 4 cylinders, H 0.16, 6.0 s y-motor-holder | faceted-hybrid, H 0.27, 13.4 s | exact: 396 planes, 6 cylinders, 2 cones, H 0.10, 12.2 s y-rod-holder | faceted, 38.6 s | still faceted, 34.2 s So five of six real parts are now exact STEP. The cylinders are the real screw and bearing holes (R 2.80, 1.65, 1.60, 1.50 mm) and the cones are the real chamfers. The 0.16 mm and 0.10 mm Hausdorff on the holder and motor holder come from the belt profile and a partial R=11.25 mm round that meets a chamfer, which stay as planes. ## What still doesn't work * **y-rod-holder doesn't sew.** Every region is now fitted (144 planes, 8 cylinders, 11 cones), but the R=4 mm rod bore is one loop that meets several chamfers, and the solid doesn't close. It falls back to the raw mesh: valid, Hausdorff 0, but not editable. * **Parametric scripts are still only 2 of 6.** plug-aligner and endstop-block get OpenSCAD and CadQuery scripts with real parameters. The idler, motor holder and rod holder are refused with "a countersink, chamfer or draft on a combined extrusion is not supported yet". The belt holder is refused because the combined extrusion would deviate by 24 mm. The tool says this instead of writing a wrong script. * **B-spline belt profiles stay planes.** That is fine for printing and measuring, less nice for editing. ## The lesson When a geometry tool fails on real data, the tempting move is to add the next surface type. Here the missing surface type didn't exist. If you have the original CAD for some of your test inputs, compare against it before writing new fitting code. It saved me writing a torus fitter nobody needed. Try it: pip install mesh2cad mesh2cad convert part.stl -o part.step mesh2cad convert part.stl --openscad part.scad It also runs as an MCP server (`mesh2cad mcp`) so an AI assistant can convert and edit parts for you. Next up are chamfers on combined extrusions, which would make the idler and motor holder parametric, and sewing the rod holder bore. Bug reports with STL files that fail are the most useful thing you can send: github.com/emirmrkaljevic/mesh2cad.
dev.to
October 22, 2026 at 6:18 PM
If you're interested in the kind of work I do and my workflow check out this post.
www.patreon.com/miniforall/p...

Available to free tier members of my patreon. Includes code and development log write up.
Everything is written using #cadquery and #python.

#indiedev #wip #cad #pythondevelopment
October 19, 2026 at 11:19 AM
cadquery、なかなか動かせないなあ…。ツラい
October 17, 2026 at 11:32 AM
October 13, 2026 at 12:38 PM
cqindustry 3.1.4 - Barricades
Free open source software

Read more about the release here:
www.patreon.com/miniforall/p...

#cadquery #opensource #cad #pythondevelopment #proceduralgeneration #indiedev
October 8, 2026 at 11:36 AM
New arXiv paper CADForge proposes an agentic framework that turns single-view images into editable parametric CAD models via CadQuery code, using component decomposition and explicit geometric…

#GenerativeAI #AIResearch #PromptEngineering #ComputerAidedDesign
https://arxiv.org/abs/2610.04262
October 8, 2026 at 2:01 AM
Apparently I already had CADQuery starred but had completely forgotten it existed.
October 6, 2026 at 7:23 PM
Barricade color test using ArmorPaint.
www.patreon.com/miniforall/p...

In the article I detail the export process for getting cadquery assemblies into ArmorPaint.

Let me know your favorite.
#wip #armorpaint #indiedev #3d #terrain #cadquery #concept
October 5, 2026 at 6:06 PM
CADForge is an agentic framework proposed to reconstruct editable parametric CAD models from a single-view image by converting images into CadQuery programs.

Source: arXiv
CADForge: Agentic Single-View CAD Reconstruction with Explicit Geometry Reasoning
Abstract page for arXiv paper 2610.04262: CADForge: Agentic Single-View CAD Reconstruction with Explicit Geometry Reasoning
arxiv.org
October 6, 2026 at 10:16 AM
I'm thinking of swapping all of my opensource projects over to a license that prohibits ai training; doesn't mean it will be abided by but it would signal intent.

www.patreon.com/miniforall/p...

#opensource #cadquery #antiai #noai #pythondevelopment
Open Source License Discussion | MiniForAll
I had an idea I wanted to float. I was reading a children's book to my kiddos and it had a clause that it couldn't be used to train ai model
www.patreon.com
October 2, 2026 at 10:23 PM
Working on additional barricade pieces with ruin patterns. New open source cqindustry release will be coming out soon-ish.

#wip #cadquery #procgen #3d
September 30, 2026 at 10:57 AM
Open book on doing CAD with code, written by David Straub. Includes #CadQuery. #OpenSource #OpenHardware #CodeCAD

opus4.kobv.de/opus4-hm/fro...
Making sure you're not a bot!
opus4.kobv.de
September 28, 2026 at 10:46 AM
cqterrain 3.8.9 Release Ruin Development
Free open source software

Read more about the release here:
www.patreon.com/miniforall/p...

#cadquery #opensource #cad #pythondevelopment #proceduralgeneration #indiedev
September 27, 2026 at 6:16 PM
wip - Barricade Ruin Development
www.patreon.com/miniforall/p...
Post available on the free tier of my patreon

#procgen #cad #wip #3d #indiedev #cadquery
September 23, 2026 at 11:45 AM
Wrote Procedural Barricade code.

You can read more on my patreon with a free account:
www.patreon.com/miniforall/p...

#cadquery #indiedev #wip #proceduralgeneration #cad #3d
September 13, 2026 at 1:24 PM
7. YuE2 Music Generation with Symbolic Planning and Agentic Editing LINK
8. Claude Opus 5 Agents Successfully Generate Printable CAD via OpenSCAD and CadQuery LINK
September 13, 2026 at 1:00 PM
Benchmark: CadQuery vs. OpenSCAD for agentic CAD work
https://modelrift.com/blog/cadquery-vs-openscad/
September 12, 2026 at 10:35 PM
Benchmark: CadQuery vs. OpenSCAD for agentic CAD work

#HackerNews

<a href="https://modelrift.com/blog/cadquery-vs-openscad/" class="hover:underline text-blue-600 dark:text-sky-400 no-card-link" target="_blank" rel="noopener" data-link="bsky">https://modelrift.com/blog/cadquery-vs-openscad/
September 12, 2026 at 10:13 PM
Benchmark: CadQuery vs. OpenSCAD for agentic CAD work

https://modelrift.com/blog/cadquery-vs-openscad/
September 12, 2026 at 8:30 PM