自動標註尺寸
Lessons Reference
- L-002:標註必須匹配正確的視圖 ID,嚴禁在 3D 視圖建立平面標註。位置線用 BoundingBox 中心
(max+min)/2。詳見domain/lessons.md。
Method Selection
| 場景 | 方法 | 工具 |
|---|---|---|
| 一般矩形房間 | Ray-Casting | create_dimension_by_ray |
| L 形或不規則房間 | BoundingBox | create_dimension_by_bounding_box |
| MEP 設備淨空檢查 | Ray-Casting | create_dimension_by_ray |
| 批次牆段標註(無 Room、剛蓋完牆) | Wall-Batch | auto_dimension_walls |
Wall-Batch Workflow(剛蓋完一批牆要標尺寸)
auto_dimension_walls 不依賴 Room,三模式擇一:
| mode | 用途 | 輸出條數 |
|---|---|---|
overall_bbox(預設) |
外圍兩條總長串:top 邊沿 X、right 邊沿 Y | 2 |
chained |
同列/同排共線牆串成 string dimension(每列一條) | N(依 row/col 數) |
per_wall |
每道牆獨立一個長度標註 | 每牆一條 |
參數
viewId(必填):必須是ViewPlanwallIds(選填):未提供則自動抓 view 範圍內所有牆mode(預設overall_bbox)offsetMm(預設 1500)
適用情境
- sketch-to-revit 蓋完牆後自動補總尺寸(
overall_bbox) - 給審核版圖紙的詳細串接尺寸(
chained) - debug 個別牆長度(
per_wall)
行為
- 標註直接綁牆面 reference(exterior side face / end-cap face),牆移動時 dimension 會跟著走,牆刪掉 dimension 自動消失
- per_wall:抓兩端 end-cap face;chained / overall_bbox:與軸平行的牆抓 end-cap、垂直於軸的牆抓 side face
- 牆面有開洞時取距 endpoint 最近的 PlanarFace(FirstOrDefault 行為)
限制
- 只支援直線牆(曲線牆會被 skip)
- 視圖必須是
ViewPlan(非 3D / Drafting / Section) - 拿不到 face reference 的牆(geometry 異常)會被跳過,不會中止整批
Ray-Casting Workflow
- 取得房間中心:
get_room_info→ 提取Location座標 - 沿 X+/X- 方向發射射線 → 偵測牆面 → 建立 X 軸標註
- 沿 Y+/Y- 方向發射射線 → 偵測牆面 → 建立 Y 軸標註
關鍵參數
viewId:目標平面視圖(必須是平面視圖,嚴禁 3D 視圖)origin:房間中心點(從get_room_info取得)direction/counterDirection:射線向量
BoundingBox Workflow (Fallback)
- 透過
create_dimension_by_bounding_box取得房間包圍框 - 指定軸向(
X或Y)和偏移量(預設 500mm) - 系統在最小/最大邊界建立 DetailCurves 並標註
Key Rules
- 嚴禁在 3D 視圖中建立 2D 標註 — 必須先確認
ActiveView類型 - 標註線位置 =
(BoundingBox.Max + BoundingBox.Min) / 2中心軌跡 - 如果柱子擋住射線,標註到柱子(這對 MEP 淨空檢查是正確的)
- 支援批次套用至整個樓層
Reference
詳見 domain/auto-dimension-workflow.md。