TL;DR

text-to-cad (earthtojake/text-to-cad) là một harness mã nguồn mở để coding agent như OpenAI CodexClaude Code sinh và sửa mô hình 3D bằng ngôn ngữ tự nhiên. Source là file Python dùng build123d, xuất được STEP, STL, GLB, DXF, URDF, đi kèm viewer local (React + Vite). MIT, chạy fully offline, không cần backend cloud.

What's new

Thay vì gọi một text-to-CAD service hosted (kiểu Zoo/KittyCAD) và trả credit, text-to-cad đóng gói lại quy trình thành một harness cho agent bạn đã dùng hằng ngày. Agent không trả về blob geometry — nó viết/sửa file Python trong thư mục models/, rồi harness re-generate các export target một cách xác định. Toàn bộ model là source code: bạn commit, bạn diff, bạn review pull request như mọi project khác.

Điểm hay nhất: mỗi mặt, mỗi cạnh trong model có thể tham chiếu bằng token @cad[...]. Bạn copy token đó paste lại vào prompt tiếp theo, agent biết chính xác phải sửa vào đâu thay vì đoán. Đó là sự khác biệt giữa "LLM sinh SCAD" và "LLM chỉnh sửa BREP có chủ đích" — giống như diff giữa sed mù và LSP-aware refactor.

Quy trình vòng lặp 5 bước được tác giả mô tả: (1) mô tả yêu cầu cho agent, (2) agent sửa file nguồn trong models/, (3) harness chạy re-generate các export target, (4) bạn kiểm tra trong CAD Explorer viewer, (5) copy geometry reference để tiếp tục edit. Commit source + artifact song song để history có thể tái tạo.

Why it matters

CAD bằng LLM đến giờ vẫn bị kẹt ở hai cực: hoặc mesh-gen kiểu "ảo giác 3D" không dùng được cho sản xuất, hoặc service đóng kín chạy trên cloud. text-to-cad chọn đường thứ ba — dùng parametric BREP trên nhân Open Cascade, source tồn tại dưới dạng code review được, diff được, commit được. Với maker làm in 3D, robot, hay đồ gá CNC, đó là khác biệt giữa "demo vui" và "thực sự đưa vào workflow".

BREP (Boundary Representation) quan trọng ở chỗ: nó lưu geometry bằng face, edge, vertex với quan hệ topology rõ ràng — nên có thể xuất STEP chuẩn ISO, đưa vào SolidWorks hay FreeCAD mà vẫn editable. Mesh-based output (STL thuần) mất hết thông tin tham số, không sửa được. Kết hợp BREP + LLM agent có state tham chiếu chính là thứ trước đây chỉ có trong commercial CAD.

Technical facts

  • Stack: Python 3.11+, build123d, OpenCascade (OCP), React 18 + Vite 7 (viewer cổng 4178).
  • Ngôn ngữ repo: Python 65.5%, JavaScript 33.7%.
  • Export formats: STEP, STL, DXF, GLB + topology, URDF.
  • Bundled skills: CAD Skill (geometry / exports / refs) và URDF Skill (robot descriptions + validation).
  • Geometry references: token @cad[...] trỏ tới face/edge cụ thể cho edit kế tiếp.
  • License: MIT.

Comparison

Tiêu chítext-to-cadZoo / hosted text-to-CADbuild123d thuần
Chạy localKhông
Open sourceMITMostly closedApache-2.0
Agent-driven promptCodex / Claude CodeNative APIKhông
Xuất STEP/URDFSTEP có, URDF tùyCó (thủ công)
Viewer đi kèmCAD ExplorerWeb UIKhông
Source có thể diff / commitCó (.py)Không

Ngắn gọn: nếu đã sống trong terminal với Codex hoặc Claude Code, text-to-cad là cách ít ma sát nhất để add kỹ năng CAD mà không đổi tool chain.

Use cases

  • Robotics: prompt một gripper 2 ngón, export URDF + GLB đưa sang simulator.
  • 3D printing: enclosure parametric cho PCB — sửa wall thickness trong Python, re-export STL một dòng lệnh.
  • Mechanical parts: brackets/mounts có diff history — review như code thường.
  • Học BREP: dùng agent sinh reference code để đọc và bắt chước.

Limitations & pricing

  • Giá: miễn phí (MIT). Không có tier hosted — bạn tự chạy agent của mình.
  • Phụ thuộc Python 3.11+, Node.js, và OpenCascade — build OCP trên vài nền tảng có thể hơi nặng.
  • README hiện chưa có example prompts chi tiết hoặc roadmap công khai.
  • Chất lượng output bị giới hạn bởi coding agent bạn dùng — đây là harness, không phải model.

What's next

Chưa có public roadmap. Với chuẩn build123d tăng trưởng (v0.10, Nov 2025, ~2.1k sao) và Codex/Claude Code đang trở thành mặc định trong workflow dev, một harness như text-to-cad có thể sẽ là mẫu chung cho "coding agent as CAD engineer". Thú vị nhất là thấy skill-system (CAD Skill + URDF Skill) được tách riêng — giống như plugin, để cộng đồng có thể thêm domain mới (sheet-metal, PCB-enclosure, aerospace surfaces) mà không phải fork harness.

Nếu bạn đang thí nghiệm LLM cho hardware — từ bracket in 3D đến URDF cho arm robot — đây là repo đáng clone ngay hôm nay. Clone về, mở Codex hoặc Claude Code, prompt "make me a 60mm GoPro mount with an M5 threaded insert" rồi xem source Python được viết ra. Khoảnh khắc bạn thấy file .step sạch trên viewer là khoảnh khắc CAD workflow của bạn thay đổi.

Nguồn: github.com/earthtojake/text-to-cad, github.com/gumyr/build123d, @RoundtableSpace.