一條可重複、使用者把關的作業閉環;
以及一根「名字寫 30、其實是 24」的柱,
如何證明「簽章比對」非做不可。
族群清整最容易出錯的地方,是「只看到一半」。這個 domain 強制你同時看兩個軸:
| 軸 | 看的是什麼 | 工具 |
|---|---|---|
| 載入軸 | Project Browser 裡看得到的所有類型(不管有沒有被放進模型) | 逐族群跑 list_family_symbols |
| 放置軸 | 模型裡真的有實例的類型 | query_elements |
載入 − 放置 = 未使用類型(purge 對象)
| 階段 | 工具 | 目的 |
|---|---|---|
| Phase 0 | get_active_view | re-anchor 當前視圖(活躍狀態重新錨定) |
| Phase 1 | query_elements_with_filter + list_family_symbols | 雙軸盤點:放置 vs 載入 |
| Phase 2 | get_element_info | 讀「簽章」(實際參數值) |
| 執行 | change_element_type / delete_element / modify_element_parameter | merge / purge / rename |
list_family_symbols 一次有 100 筆截斷上限。直接全抓會漏。盤點時用逐族群過濾,才不會被截斷吃掉尾巴。
看到「Command timed out」是最常見的誤判點。它代表 Revit 當下不在閒置狀態(有對話框、有未結束的命令、滑鼠正在拖曳)。不要重啟服務、不要去戳 ribbon——按 Esc、關對話框,把畫面放空後再下一次指令就會通。
每個破壞性動作前都要過這份清單。它們不是建議,是擋掉「靜默誤刪」的護欄。
list_family_symbols 的 100 筆截斷。get_element_info 讀簽章,禁用名稱捷徑。全專案共 121 根柱,分 4 個族群:
| 族群 | 根數 |
|---|---|
| Rectangular Column (Off Center) | 111 |
| Corinthian Column Schematic (with Pedestal) | 4 |
| Round Column | 2 |
| Pergola Post | 4 |
主力型名為 30"D x 30"W(93 根),但 get_element_info 讀出的實際 Depth/Width = 24" × 24"——名字完全反指。純名稱比對會把這 93 根判成 30×30。
30"D x 30"W(實 24×24)與另一個 24"D x 24"W 2(實 24×24)幾何簽章完全相同 = 真重複,其中一個(主力那個)名字是錯的。
24"D x 24"W 2 的 1 根用 change_element_type 併入。modify_element_parameter(Name 特例)把主力型改名為正確的 24"D x 24"W。10"D x 12"W、10"D x 16"W、15"D x 25"W、17.5"D x 25"W、Round Column 的 12" Diameter。結果:Rectangular 13 → 8 型,全部名實相符;總柱數 121 → 121,零實例誤刪。
在動柱之前先拿門練手:10 型 → 3 型——刪一個疑誤建的 50" x 60"(連帶 1 實例)、purge 5 個未使用、merge 一個 36" x 84" 2 重複。
get_category_fields 捷徑——後者在異質類別會抽錯樣本(柱實測抽到 Corinthian,根本沒回 Depth/Width)。這次依「24×24 為真、30×30 是名字打錯」執行。但簽章只能揭露「名≠參數」,不能決定設計本意。若本意其實是 30×30,那這 93 根是斷面不足的結構錯誤,改名只是把問題藏起來——需結構技師確認,超出 MCP 能判範圍。
change_element_type)modify_element_parameter 的 Name 特例,在 Transaction 內、可 Ctrl+Z)OST_StructuralColumns)——query_elements 的 6 個硬編碼類別不含它