從 CAD/DWG 圖層的幾何,批次建出 Revit 結構柱/建築柱:掃描圖層 → 預覽健檢 → 批次建模。Wave 1 完成基礎批次建模;Wave 2 收編 Roy-y111 的「柱號對應」,加入三模式、自動單位偵測與 DXF/DWG 優雅降級。斷點放編排層,不一口氣建模。
同一個能力,兩波貢獻;工具沒變多,智能變強。
基礎批次建模:掃描圖層 → 預覽 → 建模。幾何辨識涵蓋封閉聚合線(含 13 點導角)、四線環、CAD block。實測 FL1 圖層 E-S-COLM 30 根 → 30 建,100% 成功。
柱號對應(textLayerName):同樣三工具 + 新智能——自動單位偵測、三模式路由、DWG 經 ODA 優雅降級。live 實測 mm 與 $INSUNITS=0 cm 檔 matchDebug 皆 dist=0,6 根滿配 C1~C5。domain/skill 標來源 fork、commit 帶 Co-Authored-By。
三個 MCP 工具串成一條;preview 是第一個驗證點。
| 步驟 | 工具 | 做什麼 / 回什麼 |
|---|---|---|
| ① 掃描 | get_dwg_column_layers | 列出目前平面視圖所有 CAD 圖層,推薦含「柱/column/col」關鍵字者 |
| ② 預覽 | preview_dwg_columns(layerName) | 解析矩形幾何,回根數、尺寸、尺寸分群 + preflight 單位/放樣健檢 |
| ③ 建模 | create_columns_from_dwg(layerName, columnType, familyName?, textLayerName?) | 批次建出 Revit 柱實例,回 created / failed / typesUsed / unmatchedLabels |
幾何演算法:最長邊定向 → 反旋轉 → bounding box → 5mm 量化;每邊範圍 100–3000mm(超出剔除),50mm 內視為重複去除。
同一個 create_columns_from_dwg,由 skill/domain 依情境路由;選模式是使用者裁決,不自動選。
沒指定族群,依幾何自動建「寬x深(cm)」型別。layerName
給 familyName,依尺寸沿用既有型別名(C1/C2…),缺尺寸才補建。
再給 textLayerName,讀 CAD 柱號標籤,對到同名型別;對不上的列入 unmatchedLabels、不亂建。
柱號比對優先序:型別名完全相符 → 前綴相符(C3a_/C3a-/C3a)→ 前綴+尺寸雙重比對。2000mm 半徑內找最近標籤。
preview 回 preflight:unitSanity=ok|check。若 check → 停,先在 Revit 連結對話框修單位再建。定位放樣/尺寸/單位是參考 DWG/DXF 建模的第一要務。
列出可用族群與既有型別名,請使用者確認 A/B/C;缺類型走「先建尺寸型別 → 改名到位 → 模式 C 重跑」逐步協作,避免幻覺誤建。
柱號讀取經 ezdxf_worker.py,試 mm/cm/m/inch/ft 五種比例,取讓「標籤↔最近柱」總距離最小者。matchDebug 的 dist≈0 即偵測成功。
DXF 直讀(需 Python + ezdxf);DWG 經 ODA File Converter。未裝 ODA → labelReadStatus=no_oda 優雅降級,柱照建、只是不對應柱號。worker 由 install-addon.ps1 自動部署到 %APPDATA%\RevitMCP。
modify_element_parameter 的值是 Revit 內部 feet,不是 mm。600mm 要傳 600/304.8 = 1.9685;改名用 parameterName="Name"(接受 名稱/類型名稱/-1002001)。
幾何(A/B/C)兩者皆可;柱號對應(C)只認 Link CAD——Import 無檔案路徑,讀不到文字標籤。視圖內若以「匯入」加入,請改「插入 → 連結 CAD」。