# 想印手機架，不用學 3D 繪圖？實測 text-to-cad 寫程式出列印檔

- 網址：https://blog.valenvan.uk/posts/earthtojake-text-to-cad.html
- 發布日期：2026-10-12
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：earthtojake/text-to-cad（https://github.com/earthtojake/text-to-cad），MIT 授權
- 測試版本：text-to-cad 的 cadgen 0.7.21（MIT），2026-10-12 實測
- 實測影片：https://www.youtube.com/shorts/vLSXX4_6SBA

## 重點摘要

- cadgen 一次從同一段 Python 程式產出 STL 與 STEP 兩種檔案；錄影中刪除舊檔後重建手機架範例耗時 0.16 秒。
- 專案附的 dfam_tool 檢查手機架：外框 80×70×87.6 mm、模型封閉、最薄牆 6 mm，傾斜 65 度時低於 45 度的下側面積為 0%。
- 把傾斜角從 65 度改成 30 度後，21.6% 的下側面積低於 45 度，代表列印需要加支撐。
- 在 2 mm 厚的板子上倒 5 mm 圓角會直接報錯，並建議改小半徑或用 max_fillet()；本次未測 AI 自動生成模型程式。
- **結論：** 它不會替你憑空做模型，但能把改尺寸、出檔、檢查能不能列印縮短到幾秒內，而且結果是數字。
- **適合：** 會一點 Python、要用參數控制零件尺寸並在列印前確認支撐需求的人。
- **不適合：** 不想碰程式、想用滑鼠拖拉畫圖的人。

| 實測項目 | 結果 |
|---|---|
| 測試設備 | Mac mini M4 Pro（12 核、64GB） |
| 重建 STEP＋STL（錄影） | 0.16 秒 |
| 外框尺寸 | 80 × 70 × 87.6 mm |
| 模型封閉（watertight） | 是 |
| 最薄牆厚 | 6 mm |
| 傾斜 65°：低於 45° 的下側面積 | 0% |
| 傾斜 30°：低於 45° 的下側面積 | 21.6% |
| 過大圓角（2 mm 板倒 5 mm） | 報錯並建議 max_fillet() |
| AI 自動寫模型程式 | 未測 |
| 使用統計回傳 | 預設開啟，可用 cadgen telemetry off 關閉 |

想印個手機架，卻不會用 3D 繪圖軟體。網路上找到的模型尺寸又總是差一點：手機太厚放不進去、角度太斜看不清楚。text-to-cad 這個專案主打「把零件寫成一段程式，跑一次就出圖檔」，改尺寸只要改數字。這次我把它的 CAD 引擎 cadgen 實際跑了一遍，看看改數字到底方不方便、出來的檔案能不能直接拿去印。

測試設備是 Mac mini M4 Pro（12 核、64GB），受測版本為 cadgen 0.7.21，專案授權 MIT。

## 一段程式產出兩種檔案

我照官方範例的寫法，寫了一個手機架的小程式 `phone_stand.py`：底座、背板加一個擋邊，背板傾斜角用 `ANGLE` 這個變數控制。刪掉舊的輸出後重新產生：

```bash
rm -rf STEP STL && time python src/phone_stand.py
```

它一次寫出 `STL/phone_stand.stl`（給切片軟體、3D 列印用）和 `STEP/phone_stand.step`（給其他 CAD 軟體接著改）。錄影中這次重建的時間是 0.16 秒；程式沒改的情況下再跑，它會判斷不必重建，直接結束。

![cadgen 產出的手機架預覽圖](https://blog.valenvan.uk/img/earthtojake-text-to-cad-article_1.png)

專案附的預覽工具可以直接把模型畫成圖，不用另外開 3D 軟體確認長相。

## 列印前的檢查：一個指令就知道要不要加支撐

專案裡有一個 3D 列印檢查工具 `dfam_tool.py`，可以量外框尺寸、模型是不是封閉、最薄的牆多厚，以及懸空面積：

```bash
python skills/dfam-check/scripts/dfam_tool.py measure STL/phone_stand.stl --angle-limit 45
```

![檢查工具輸出](https://blog.valenvan.uk/img/earthtojake-text-to-cad-article_2.png)

傾斜角 65 度時的結果：

| 項目 | 結果 |
|---|---|
| 外框尺寸 | 80 × 70 × 87.6 mm |
| 模型封閉 | 是（沒有破洞） |
| 最薄的牆 | 6 mm |
| 低於 45 度的下側面積 | 0% |

接著把 `ANGLE` 從 65 改成 30 再跑一次，同一個檢查變成 **21.6% 的下側面積低於 45 度**。也就是說，背板躺得比較平之後，下面懸空的部分變多，列印時要加支撐，不然容易塌。這種事以前要切片時才發現，現在改完數字幾秒內就知道。

## 故意亂設參數會怎樣

我另外寫了一個錯誤示範：在 2 毫米厚的板子上倒 5 毫米的圓角。它沒有默默做出怪模型，而是直接報錯，並建議把半徑改小，或用 `max_fillet()` 找出能用的最大圓角。

## 我的看法

要先講清楚，這次測的是引擎和檢查工具。模型程式是我照範例寫的，**沒有測專案標題說的「AI 自動寫程式」**。它不會憑空變出模型，你寫的程式才是模型本身。

但如果你已經有一個零件、常常需要改尺寸或角度，它把「改數字 → 出檔 → 確認能不能印」縮短成幾秒的事，而且檢查結果是數字，不是用眼睛猜。另外要注意，它預設會回傳匿名使用統計，可以用 `cadgen telemetry off` 關掉。

**適合**：會一點 Python、想用參數控制零件尺寸、常要確認能不能列印的人。
**不適合**：完全不想碰程式、想用滑鼠拖拉畫圖的人，用一般 3D 繪圖軟體比較直覺。

專案連結：https://github.com/earthtojake/text-to-cad（MIT 授權）
