視埠排列與管理
在圖紙上放置、排列、移動 DraftingView 視埠。
Available Tools
| 工具 | 用途 |
|---|---|
get_sheet_viewport_details |
取得圖紙上所有視埠的位置、邊界框、寬高(mm) |
arrange_viewports_on_sheet |
放置 + 排列視埠(自動將未在圖紙上的 view 放上去) |
get_all_views |
列出專案中所有視圖(可篩選 DraftingView) |
get_viewport_map |
查詢 viewport 目前在哪張圖紙上 |
get_all_sheets |
列出所有圖紙(查找目標圖紙 ID) |
get_selected_elements |
取得使用者在 Revit 中選取的元素 |
delete_element |
刪除 viewport(從圖紙移除,view 本身不會刪除) |
get_active_view |
確認當前視圖是否為圖紙 |
Workflow 1:放置 + 排列(主要流程)
使用者提供 drafting view 名稱清單,工具自動放到圖紙上並排列。 view 若不在圖紙上,會自動建立 viewport(auto-place)。
查詢可用的 drafting view
get_all_views(viewType: "DraftingView") → 列出所有 drafting view 名稱使用者提供名稱和排列順序
一鍵放置 + 排列
arrange_viewports_on_sheet( viewNames: ["建照_A01", "變更後_A01", "建照_A02", ...], direction: "horizontal", gapMm: 0, alignY: "top", sheetId: 目標圖紙ID(選填,不指定則用當前圖紙) )- 已在圖紙上的 → 直接排列
- 不在圖紙上的 → 自動建立 viewport 再排列
- 回傳
PlacedCount(新放置數)和ArrangedCount(排列總數)
檢查 Warnings
- 若 view 已在其他圖紙上 → 無法放置,需先用 Workflow 2 移動
- 若 view 名稱找不到 → warning 回報
Workflow 2:跨圖紙移動 viewport
view 已經在其他圖紙上,需要先移除再放到目標圖紙。
查找 viewport 在哪張圖紙
get_viewport_map → 找到 ViewportId 和所在的 SheetId從舊圖紙移除 viewport
delete_element(elementId: viewportId) // 刪除 viewport,view 本身保留放到目標圖紙並排列
arrange_viewports_on_sheet( viewNames: ["view名稱"], sheetId: 目標圖紙ID )
Workflow 3:移動選取的 viewport 到其他圖紙
使用者在 Revit 中選取 viewport,要移到另一張圖紙。
取得選取的 viewport
get_selected_elements → 記下所有 viewport ID查找目標圖紙
get_all_sheets → 找到目標圖紙的 SheetId用 viewport map 對應 view 名稱
get_viewport_map → 將 ViewportId 對應到 ViewName從原圖紙移除
delete_element(elementId: vpId) // 對每個選取的 viewport放到目標圖紙並排列
arrange_viewports_on_sheet( viewNames: [對應的 view 名稱清單], sheetId: 目標圖紙ID )
Workflow 4:緊密排列(負間距)
viewport bounding box 包含邊距,gapMm: 0 時表格線之間仍有空隙。
使用負間距讓表格邊框線重疊。
arrange_viewports_on_sheet(
viewNames: [...],
gapMm: -5, // 負值,讓邊框重疊
direction: "horizontal",
alignY: "top"
)
- 建議先用
gapMm: -3到-5測試 - 實際值取決於 viewport type 的邊距設定
Parameters
arrange_viewports_on_sheet
| 參數 | 說明 | 預設 |
|---|---|---|
viewNames |
view 名稱陣列(與 viewportIds 二擇一) | - |
viewportIds |
視埠 ID 陣列(與 viewNames 二擇一) | - |
direction |
"horizontal" 或 "vertical" |
"horizontal" |
gapMm |
視埠間距(mm),負值可重疊 | 0 |
alignY |
垂直對齊:"top" / "center" / "bottom" |
"center" |
sheetId |
圖紙 ID(選填,預設用當前圖紙) | 當前圖紙 |
Notes
- 第一個視埠的左邊緣(水平)或上邊緣(垂直)作為錨點
- 只處理 DraftingView 類型,其他類型自動跳過
delete_element刪除的是 viewport(圖紙上的參照),view 內容不受影響- 所有排列操作為單一 Transaction,可用 Revit Undo 還原
- 若當前視圖不是圖紙,可用
sheetId參數直接指定目標圖紙
Reference
詳見 domain/sheet-viewport-management.md。