TOOLS INDEX 192 個

Tools · 執行層
模型上真正被動到的那一下

Tool 是執行。它不決定方法,也不決定順序——方法在 Domain,順序在 Skill。這一頁把 192 個工具攤開,讓你看得到「有什麼」以及「哪些會動到模型」。

先看懂三個標記

每張卡右上角的標記來自工具自己宣告的 annotations,不是這一頁另外標的——閘門 9-1 會驗證它們與程式碼一致。

「唯讀」是工具作者的宣告,不是執行時的沙箱。它告訴你這支工具設計上不寫入,不是保證它不可能寫入。

八類分工

名稱數量涵蓋
A基礎與查詢26讀模型、找元素、問參數,也含少數寫入前置(載入共用參數)。
B建模與構件47產生或修改實體構件:牆、柱、樑、帷幕、地形、IFC 同步。
C房間與空間18房間邊界、編號、面積、走廊、施工架周長。
DMEP 與碰撞17風管系統、空間代表點、套管開孔、CSA 干涉。
E法規檢核13排煙、偵煙、樓梯——有法源、有判準的檢查。
F視圖與圖紙26建視圖、裁剪、圖紙配置、視埠定位、跨專案複製。
G標註與詳圖25尺寸、詳圖元件、填充區域、圖例、明細表、文字。
H視覺化20上色、覆寫、隱藏顯示,也含材質與 Type 建構。

分類是 40 個來源模組的一個分割——每個模組恰好屬於一類,八類加總等於 192。這一頁由 registerRevitTools() 產生,不是手寫的。

192 個工具 · 依用途分組

A · 基礎與查詢(26 個)

讀模型、找元素、問參數,多數工作的第一步;也包含少數寫入型前置工具(如載入共用參數檔 load_shared_parameters)。

adjust_section_datums
會寫入
base-tools
自動調整剖面視圖的網格線 (Grids) 與樓層線 (Levels) 2D 範圍與氣泡顯示。
analyze_floor_slopes
唯讀
base-tools
分析樓板頂面排水坡度:以 Solid→PlanarFace 法向量與 Z 軸夾角計算每片朝上頂面的坡度百分比,回傳每片樓板的 Min/Max 坡度,並可回寫至指定參數(預設 Comments)。未指定 elementIds 時自動收集 Function=Exterior 的樓板。
create_level
會寫入
base-tools
在 Revit 中建立一個新的樓層 (Level)。指定標高(公釐)與可選名稱;若名稱已存在 Revit 會自動附加尾號。
delete_element
破壞性
base-tools
依 Element ID 刪除 Revit 元素。
flip_element
會寫入
base-tools
翻轉指定的 Revit 建築元素(例如門或窗)。可以選擇翻轉面向(facing)或開向(hand)。
get_active_schema
唯讀
base-tools
[Phase 1: Exploration] Get all categories and their element counts in the active view. ALWAYS run this first to confirm if the target category exists.
get_active_view
唯讀
base-tools
取得目前開啟的視圖資訊,包含視圖名稱、類型、樓層等。
get_all_levels
唯讀
base-tools
取得專案中所有樓層的清單,包括樓層名稱和標高。
get_all_views
唯讀
base-tools
取得專案中所有視圖的清單,包含平面圖、天花圖、3D視圖、剖面圖等。
get_category_fields
唯讀
base-tools
[Phase 2: Alignment] Get all parameter names for a specific category. MANDATORY: Run this before 'query_elements_with_filter' to identify exact localized parameter names.
get_element_info
唯讀
base-tools
取得指定元素的詳細資訊,包括參數、幾何資訊等。
get_field_values
唯讀
base-tools
[Optional Phase 2.5] Get the distribution of existing values for a specific parameter.
get_project_info
唯讀
base-tools
取得目前開啟的 Revit 專案基本資訊,包括專案名稱、建築物名稱、業主等。
get_selected_elements
唯讀
base-tools
取得使用者目前在 Revit 中選取的所有元素的基本資訊(ID、名稱、品類)。若是視圖或剖面標記,會一併回傳 Origin (X,Y,Z) 供空間排序使用。
list_categories
唯讀
base-tools
列舉專案中所有品類 (Category) 及其 CategoryType (Model / Annotation / Internal / AnalyticalModel / Invalid)。回傳每個品類的 Name、CategoryType、Id、子品類數量,並附各 CategoryType 的統計。唯讀查詢。
load_shared_parameters
會寫入
base-tools
載入共享參數檔 (Shared Parameter File) 並將參數綁定至指定品類的 Type 或 Instance 層級。用於在寫入自訂參數前,先確保專案已載入參數定義。例如載入 GreenMaterial_SharedParams.txt 的綠建材參數(Mat1~Mat6 六槽位)至 Walls/Floors/Ceilings,之後用 set_green_material_type_parameters 寫值。
measure_distance
唯讀
base-tools
測量兩個點之間的距離。回傳距離(公釐)。
modify_element_parameter
會寫入
base-tools
修改 Revit 元素的參數值。
move_element
會寫入
base-tools
移動指定的 Revit 元素(依 dx, dy, dz 指定位移量)。
query_elements
唯讀
base-tools
查詢 Revit 專案中的元素。可依類別、族群、類型、樓層等條件篩選。
query_elements_with_filter
唯讀
base-tools
[Phase 3: Retrieval] Query elements with multi-filter support. NOTE: The 'field' name MUST match names from 'get_category_fields'.
rename_view
會寫入
base-tools
重新命名指定的 Revit 視圖(包含剖面圖、平面圖等),此工具不受軟體語系本地化影響。
select_element
會寫入
base-tools
在 Revit 中選取指定的元素,讓使用者可以視覺化確認目標元素。
set_active_view
會寫入
base-tools
切換至指定的視圖。
set_project_units
會寫入
base-tools
一次把整個專案的顯示單位切換到指定系統/模式(全案性動作,單一 Transaction 可 Ctrl+Z 還原)。mode='taiwan' = 公制底 + Air Flow m³/h(建築技術規則 §102 通風量單位)+ Length 補單位符號;mode='taiwan-plumbing' = taiwan 再加給排水管路側六格(管徑 mm、流量 L/min、流速 m/s、壓力 mH2O、摩擦 mmH2O/m、坡度 1:ratio),對齊建築設備編 §43/§46 與給水排水設備設計技術規範;'metric' / 'imperial' 為純公制/英制預設。每個 spec 都會連同「精度」與「單位符號」一起設定——只設單位會讓 Length 顯示成裸數字(673 而非 673 mm),且流速精度 0.1 位會讓 2.98 與 3.05 看起來相同而產生假綠燈。可再用 length/area/volume/airFlow/pipeSize/flow/velocity/pressure/friction/slope 個別覆寫。⚠️ 台灣法規的壓力單位 kgf/cm² 在 Revit 2026 不存在(305 個 UnitTypeId 逐一反射確認),故以 mH2O 代用:1 kgf/cm² = 10.0 mH2O。回傳的 Result 是套用後從 Document 回讀的實際單位/符號/精度,不是參數回聲。
zoom_to_element
唯讀
base-tools
將視圖縮放至指定元素,讓使用者可以快速定位。
B · 建模與構件(47 個)

產生或修改實體構件:牆、柱、樑、帷幕、地形、IFC 同步。

analyze_beam_penetration
唯讀
structure-tools
分析特定結構梁上的套管穿孔。回傳精確的幾何數據,如距離柱心長度、梁深度、開孔直徑等。
apply_panel_pattern
會寫入
curtain-wall-tools
將面板排列模式套用到帷幕牆。需要類型映射表和排列矩陣。
change_element_type
會寫入
wall-tools
變更 Revit 元素的類型(例如將牆從 Type A 改為 Type B)。
create_beams_from_dwg
會寫入
dwg-beam-tools
從 CAD 指定圖層建立 Revit 結構樑(必須搭配文字標注圖層)。 重要:建議按類型分批執行(先大樑、再次樑、再地樑), 每批只處理一個線條圖層與對應的文字圖層。 使用 beamRole 參數標示目前處理的批次。
create_column
會寫入
wall-tools
在指定位置建立柱子。
create_columns_from_dwg
會寫入
dwg-column-tools
從 CAD 指定圖層自動建立 Revit 結構柱或建築柱。會自動:辨識矩形輪廓、建立對應尺寸的族群類型、設定底頂樓層、套用旋轉角度。若指定 familyName,會從該族群的現有類型中依尺寸比對,直接使用原有柱名稱(如 C1、C2);未指定時自動挑選最適族群並按尺寸建立新類型。執行前建議先呼叫 preview_dwg_columns 確認識別結果。此操作會修改 Revit 模型,無法自動復原,請謹慎使用。
create_corridor_dimension
會寫入
wall-tools
走廊寬度標註 — 自動偵測房間邊界的平行牆對,建立精確的牆到牆尺寸標註。回傳每個區段的實測寬度與合規判定。
create_curtain_panel_type
會寫入
curtain-wall-tools
建立新的帷幕牆面板類型,可指定顏色(HEX)和透明度。
create_curtain_wall_elevations
會寫入
curtain-wall-tools
批次建立每一道帷幕牆的永久外立面視圖,建立/套用名為「帷幕立面」的視圖樣板,保留 crop box 與 far clip depth 可由各視圖自行控制,並回傳方向與 crop 診斷欄位。這個工具建立的是持久成果,不需要 cleanup;除非使用者明確要求清理,AI client 不得呼叫 delete_element 刪除這些 generated views。未指定 wallIds/maxWalls 時處理專案內全部帷幕牆;專案帷幕牆數量多時(例如數百道)建議用 maxWalls 分批處理,避免超過回應時限,可搭配回傳的 RemainingWallIds 續跑下一批。
create_dimension
會寫入
wall-tools
在指定視圖中建立尺寸標註。
create_door
會寫入
wall-tools
在指定的牆上建立門。可指定 sourceElementId 來複製現有門的類型、instance 參數與 facing/hand 朝向。
create_facade_from_analysis
會寫入
curtain-wall-tools
根據分析結果批次建立整面立面。在牆面前方批次建立多片 DirectShape 面板,支援多種面板類型和排列模式。
create_facade_panel
會寫入
curtain-wall-tools
建立單片立面面板(DirectShape)。支援 5 種幾何:curved_panel、beveled_opening、angled_panel、rounded_opening、flat_panel。
create_family_instances_from_dwg_blocks
會寫入
cad-block-placement-tools
以與 preview_family_instances_from_dwg_blocks 完全相同的參數重新掃描來源後建立 FamilyInstance——不信任任何先前呼叫的快取結果。主 Transaction + 逐筆 SubTransaction,單筆失敗不影響其他已成功項目。duplicate 項目預設會被阻擋,只有明確傳入 skipDuplicates=true 才會略過(不得由 AI 自行推定使用者已核准)。unsupported_family/untrustworthy_transform 一律不建立。回傳每筆結果(created/failed/skipped)與建立後獨立查詢驗證的 verifiedExists。此操作會修改 Revit 模型,無法自動復原,請先呼叫 preview 確認再執行。
create_floor
會寫入
wall-tools
在 Revit 中建立樓板。需要指定邊界點座標。
create_wall
會寫入
wall-tools
在 Revit 中建立一面牆。需要指定起點、終點座標和高度。
create_window
會寫入
wall-tools
在指定的牆上建立窗。可指定 sourceElementId 來複製現有窗的類型、instance 參數與 facing/hand 朝向。
diagnose_curtain_wall_elevation_dimensions
會寫入
curtain-wall-tools
非破壞診斷帷幕立面的尺寸標示;可比較 CurtainGridLine profiles,或以 level_offset 在實際立面測試 Level plane、Invisible DetailCurve 與完整 production path,所有 level_offset 元素強制 rollback。
diagnose_curtain_wall_elevation_direction
唯讀
curtain-wall-tools
非破壞診斷指定帷幕牆的立面方向判定流程;以 rollback transaction 建立暫時 ElevationMarker/ViewSection,回傳 wall.Orientation、預期 marker 位置、暫時 view 方向與 dot 檢查,不留下視圖或 marker。
diagnose_curtain_wall_elevation_directions
唯讀
curtain-wall-tools
Batch, non-destructive curtain wall elevation direction diagnostic. Compares wall.Orientation and -wall.Orientation candidate sides for selected or all curtain walls; temporary markers/views are created inside rollback transactions.
get_all_grids
唯讀
wall-tools
取得專案中所有網格線(Grid)的資訊。
get_column_types
唯讀
wall-tools
取得專案中所有可用的柱類型。
get_curtain_panel_types
唯讀
curtain-wall-tools
取得專案中所有可用的帷幕牆面板類型。
get_curtain_wall_info
唯讀
curtain-wall-tools
取得帷幕牆詳細資訊,包含 Grid 排列、面板尺寸、面板類型分佈等。
get_dwg_beam_layers
唯讀
dwg-beam-tools
掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱,回傳圖層清單並自動推薦可能包含樑、標註文字的圖層。使用前請確認 Revit 已開啟平面視圖且已匯入 CAD 檔案。
get_dwg_block_instances
唯讀
cad-block-placement-tools
掃描目前 Revit 平面視圖中已連結(Linked,非 Imported)的 CAD DWG,列出可辨識的 Block(INSERT)名稱、每種數量、插入點與旋轉角範例。唯讀操作,不建立任何 Revit 元素。使用前請確認 DWG 已用「連結」方式匯入。
get_dwg_column_layers
唯讀
dwg-column-tools
掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱,回傳圖層清單並自動推薦可能包含柱子的圖層。使用前請確認 Revit 已開啟平面視圖且已匯入 CAD 檔案。
get_furniture_types
唯讀
wall-tools
取得專案中已載入的家具類型清單。
get_line_styles
唯讀
wall-tools
取得目前專案中可用的線型 (GraphicsStyles),例如:虛線、細線等。
get_wall_info
唯讀
wall-tools
取得牆的詳細資訊,包含厚度、長度、高度、位置線座標等。
get_wall_types
唯讀
wall-tools
取得專案中所有可用的牆類型,包含名稱和 Element ID。
grade_toposolid_to_floors
會寫入
grading-tools
依指定樓板底面的水平投影範圍整平 Toposolid;本次僅支援 footprint_only 模式。
join_wall_tops
會寫入
wall-tools
將指定樓層的牆,其頂部與上方的樓板、天花板、結構樑做幾何接合 (JoinGeometry)。回傳成功接合/已接合跳過/失敗的統計與各樓層明細。常用於樓層牆體建模後的批次頂接合。
place_furniture
會寫入
wall-tools
在指定位置放置家具實例。
preview_dwg_beams
唯讀
dwg-beam-tools
解析 CAD 指定圖層中的雙線幾何,預覽識別到的樑中心線資訊(區分 X 向與 Y 向)。此工具不會建立任何 Revit 元素,僅回傳解析結果供確認數量。建議在執行 create_beams_from_dwg 前先呼叫此工具確認數量。
preview_dwg_columns
唯讀
dwg-column-tools
解析 CAD 指定圖層中的矩形幾何,預覽識別到的柱資訊(位置、寬度、深度、旋轉角)。此工具不會建立任何 Revit 元素,僅回傳解析結果供確認。建議在執行 create_columns_from_dwg 前先呼叫此工具確認數量與尺寸。
preview_family_instances_from_dwg_blocks
唯讀
cad-block-placement-tools
對指定 Block 的每個插入點做座標鏈健檢(Block insertion point → Block transform → ImportInstance TotalTransform),回傳每點狀態:ready / duplicate_existing / duplicate_in_batch / unsupported_family / untrustworthy_transform,並攤開完整座標鏈供核對。唯讀操作,不建立任何 Revit 元素。transform 不可信時只回傳警告,不做任何猜測性修正。familySymbolId 與 levelId 必須明確指定,本工具不自動選擇。
query_walls_by_location
唯讀
wall-tools
查詢指定座標附近的牆體,回傳牆厚度、位置線與牆面座標。
rejoin_wall_joins
會寫入
wall-tools
恢復先前由 unjoin_wall_joins / unjoin_column_joins / unjoin_element_joins 取消的接合關係(共用 pair 儲存,限同一 Revit session)。
scan_penetrated_beams_in_view
唯讀
structure-tools
掃描目前視圖中所有被套管(Sleeves)穿過的結構梁。回傳包含梁 ID、連結模型 ID 及穿過該梁的套管數量的清單。
sync_ifc_structural_to_native
會寫入
ifc-structural-sync-tools
Convert structural framing (beams) and columns from a linked IFC model into native Revit structural framing/column instances, matching detected section sizes to family types. Supports dry-run preview, batched creation, section-based column base-type selection (steel / SHS / RC), and optional alignment of column tops to the floor bottom above.
trace_stair_geometry
唯讀
wall-tools
自動分析視圖中的樓梯幾何,偵測被牆、版等物件遮擋的邊緣線段,回傳座標以供後續繪製虛線。
unjoin_column_joins
會寫入
wall-tools
以柱子為中心解除其與鄰近元素的幾何接合,涵蓋牆、樓板、結構樑。未指定 columnIds 時預設整個專案所有柱(或 viewId 內的柱)。可用 rejoin_wall_joins 還原(限同一 Revit session)。
unjoin_element_joins
會寫入
wall-tools
通用版:以任一類別為中心解除其與指定 target 類別的幾何接合。預設 target 為 8 類(Walls、Floors、Columns、StructuralColumns、StructuralFraming、StructuralFoundation、Roofs、Ceilings)。共用 _unjoinedPairs,可用 rejoin_wall_joins 還原(限同一 Revit session)。
unjoin_wall_joins
會寫入
wall-tools
取消牆體與柱子等元素的幾何接合關係。常用於元素上色前的前置作業。
C · 房間與空間(18 個)

房間邊界、編號、面積、走廊、施工架周長。

analyze_corridor_width
唯讀
corridor-analysis-tools
分析走廊寬度。使用 Revit 端的房間邊界線段找出平行牆對,回傳實測寬度、最小寬度與各區段檢討結果。
analyze_tall_partition_rooms
唯讀
room-tools
Find rooms on target levels that share or contain TYPE partition walls taller than a threshold. Uses room boundary segment ElementIds so shared room-to-room walls are assigned to both rooms, and can add upward ray evidence from room bottom to floor underside.
batch_set_room_height
會寫入
room-tools
批次依房間名稱或用途分組,設定 Room 的 Upper Limit(ROOM_UPPER_LEVEL)與 Limit Offset(ROOM_UPPER_OFFSET)。不動樓層,只改 Room 參數。對 Model Group 內的 Room 會自動進入 EditGroup 模式(每個 GroupType 只編輯一次,變更同步到所有 instance),避免「modified outside group edit mode」警告。Transaction 內註冊 WarningSwallower 吞掉其他警告。單一 Transaction,可 Ctrl+Z 整批還原。
calculate_exterior_wall_scaffold_perimeter
唯讀
scaffold-tools
Reliable scaffold takeoff mode. Automatically detects exterior/perimeter walls from wall centerline geometry using ray exposure tests, excludes interior walls, sums the included wall lengths, optionally selects the result in Revit, and reports the classification evidence.
calculate_room_scaffold_perimeters
唯讀
scaffold-tools
Indoor scaffold takeoff mode. Reads placed Revit Rooms and classifies them into general scaffold, interior finish scaffold, or excluded rooms. General scaffold for non-stair/elevator rooms is measured by perimeter x height. Interior finish scaffold for stair/elevator rooms is measured by length x width x height.
calculate_selected_detail_line_perimeter
唯讀
scaffold-tools
Fast scaffold takeoff mode. Sum curve lengths from the current Revit selection, including detail lines, detail component family geometry, and filled region boundaries. Use this when the user manually traces the scaffold outline.
check_exterior_wall_openings
唯讀
room-tools
依據台灣建築技術規則第45條及第110條檢討外牆開口。自動讀取地界線計算距離,以顏色標示違規。
check_sanitary_fixture_requirements
唯讀
room-tools
Calculate sanitary fixture requirements by detecting the building type and applying the matching rule. This rule package currently supports C-1 factory/warehouse only; future building types should be added as separate rules. Output maps to the code table columns: building type, water closets, urinals, lavatories, and bathtubs/showers. Net area excludes stairs, elevators, air-raid shelter/refuge rooms, and parking spaces. This tool does not create or write Revit parameters.
create_finish_legend
會寫入
room-tools
在 Revit 中自動建立粉刷/油漆材料填滿圖例。同時偵測兩種資料來源:(1) 全專案房間的粉刷層(CompoundStructure Function=Finish)、(2) 被「油漆工具」塗在 Wall/Floor/Ceiling 的材料(依面法向量分類牆/地/天)。為每種材料建立 FilledRegionType 並在 Legend 視圖中繪製三張表(地坪/牆面/天花)。每張表三欄:編號 | 圖例 | 說明;粉刷類型使用 TypeMark/TypeName,油漆材料使用 Material.Mark/Description(空值顯示『(未填)』)。粉刷列在上、油漆列在下,中間以分隔列隔開。前提:專案必須已有任一 Legend 視圖(即使空白)作為複製模板,因 Revit API 不允許直接建立 Legend。版面固定(1:100 比例,欄寬 130/120/650 cm、列高 50 cm)。
get_room_daylight_info
唯讀
room-tools
取得房間的採光資訊,包含居室面積、外牆開口面積、採光比例。用於建築技術規則居室採光檢討。
get_room_door_counts
唯讀
room-tools
Count doors by room. Each door is counted once against its primary room; default primary room is ToRoom with FromRoom fallback. Compatible with Revit 2020.
get_room_info
唯讀
room-tools
取得房間詳細資訊,包含中心點座標和邊界範圍。
get_room_surface_areas
唯讀
room-tools
計算房間內部表面積(牆面、地板、天花板),支援門窗開口扣除。即使模型中無實體天花板或地板元素,仍會以房間平面面積估算。回傳含 EstimatedSurfaces 欄位標示哪些為估算值。用於材料估算、塗裝面積計算、聲學分析。啟用 includeFinishLayers 可偵測房間內非邊界粉刷層,自動寫入房間飾面參數、建立明細表、匯出 Excel。【兩次呼叫工作流程】當 includeFinishLayers=true 時,建議分兩次呼叫:第一次不帶 defaultXxxFinish 參數,取得分析結果後檢查哪些房間/表面缺少粉刷層(FloorFinishLayers / CeilingFinishLayers / Breakdown.FinishLayers 為 null),詢問使用者要統一填入什麼預設類型標記(地板/牆面/天花各一種,留空=不填),再以 defaultFloorFinish / defaultWallFinish / defaultCeilingFinish 參數第二次呼叫產出最終明細表與 Excel。
get_room_window_counts
唯讀
room-tools
Count windows by room. Each window is counted once against its primary room; default primary room is ToRoom with FromRoom fallback. Compatible with Revit 2020.
get_rooms_by_level
唯讀
room-tools
取得指定樓層的所有房間清單,包含名稱、編號、面積、用途等。可用於容積檢討。
remap_room_finish_codes
會寫入
room-tools
Batch-remap room finish code parameters in one Revit transaction. Designed for painting/finish schedules: split values by '+', replace exact code tokens such as F11 -> F10 without touching F1 inside F11, and let room schedules update from the changed room parameters. Defaults to dryRun=true.
renumber_rooms_by_level
會寫入
room-tools
Batch-renumber placed rooms on one level in a single Revit transaction. Sorts by room center from top to bottom, then left to right, using a configurable Y-row tolerance. Supports dry-run preview and starts from a seed such as B134.
sync_room_ceiling_finish_from_ceilings
會寫入
room-tools
依房間範圍偵測同樓層天花板,讀取天花板類型標記,預覽或寫回房間參數(預設:天花板塗層)以更新粉刷明細表。
D · MEP 與碰撞(17 個)

風管系統、空間代表點、套管開孔、CSA 干涉。

add_pipe_cap
會寫入
mep-tools
在管件的未連線端安裝管帽或法蘭。自動尋找開放的接頭並連接。
colorize_clashes
會寫入
clash-tools
將 detect_clashes 的結果視覺化上色到 CSA 元素。colorScheme 可選 by_csa_category(柱紅/樑橘/板黃/牆藍)、by_system(依 MEP 系統)、by_severity(依貫穿深度嚴重度)。
create_duct_system
會寫入
mep-tools
把一組風口與一台設備組成 Revit 風管系統(MechanicalSystem)。equipmentId 可省略,用於建立「已決定獨立成系統但設備尚未選定」的中間狀態(端點未歸屬任何系統代表還沒決定,已建系統但設備欄空白代表已決定獨立、設備待補)——省略時會把 baseConnector 傳 null 呼叫 Revit API;Revit API 文件明載 baseEquipmentConnector 為選填、允許傳 null("The base equipment is optional for the system, so this argument may be null."),但此路徑目前僅為文件契約推導,執行期尚未實測,若實測發現與文件不符,例外訊息會原樣往上拋,不做替代方案。equipmentId、equipmentConnectorIndex、equipmentConnectorId 顯式傳 null 等同省略該參數。terminalIds 每筆若解析失敗(找不到元素、非 FamilyInstance、非整數 ElementId、該風口沒有任何 Connector、與 equipmentId 重複、在 terminalIds 內重複、Connector 已隸屬其他系統、方向或 Domain 不符、該風口有多於一個 HVAC Connector(本工具假設風口只有單一風管接頭,不自動挑選))都只記入該筆 TerminalResults 的 Error,不中止其餘風口;但全部風口都失敗時不建立系統,直接整體報錯。TerminalResults 陣列每筆對齊輸入 terminalIds 的同一位置,附 Index(輸入陣列位置,從 0 起算)、ElementId(terminalIds 該筆解析出的整數值;只有當這筆輸入本身不是合法整數時才為 null,一旦成功解析出整數,即使後續驗證失敗——與 equipmentId 重複、terminalIds 內重複、找不到元素、非 FamilyInstance、Connector 已隸屬其他系統等——ElementId 仍會回填該值方便對應是哪一筆,不會因為失敗就抹成 null,也不會用 0 這種本身合法的 ElementId 當失敗標記)、Success、Error、ConnectorIndex(該風口採用的 HVAC connector 在排序後清單中的位置索引,只有 Success=true 時才有值,其餘為 null);另有 SystemNameAfter,只在該筆 Success=true 且整體 CommitStatus='Committed' 時才有值,其餘情況為 null;其值即頂層 SystemName 的逐筆複本。設備上常有多個 Connector(送風/回風/排風/水路/電源),選錯不會報錯、只會接成錯的系統類型:本工具依 systemType 篩選 Domain.DomainHvac 且 DuctSystemType 或 Direction 相符者,剛好 1 個才自動採用並在 EquipmentConnector 完整回報其 Index/ConnectorId/DuctSystemType/Direction/Shape/Origin(部分族群的非流體 Connector 讀取 Direction/Shape/Origin 會拋例外,已包 try/catch,讀不到回 "N/A");未帶 equipmentId 時 EquipmentConnector 為 null;找到 0 個或多於 1 個一律拋例外並在訊息列出全部候選,多於 1 個時請改用 equipmentConnectorIndex(清單位置索引,本工具已先依 Connector.Id 排序才建立索引,故同一族群在接頭數不變時穩定;但族群重載後若接頭增減,索引會位移且不會報錯,需跨次呼叫穩定指定同一接頭時請用 equipmentConnectorId)或 equipmentConnectorId(Connector.Id,穩定識別)明確指定,不會靜默取第一個;equipmentConnectorIndex/equipmentConnectorId 指定的 Connector 仍會驗證 DuctSystemType/Direction 是否與 systemType 相符,不符會拋例外(不會只驗 Domain 就放行)。設備或風口的 Connector 若已隸屬其他系統,Revit 不允許加入第二個系統,本工具會在對應的錯誤訊息中列出既有系統的 ElementId 與名稱。回傳的 SystemId 是新建立的 MechanicalSystem 的 ElementId,讀取時機在 trans.Commit() 之後——CommitStatus 非 'Committed'(交易未成功提交)或讀取本身失敗時為 null,此時沒有系統可供後續工具引用。SystemType 是實際採用的系統類型(即 systemType 參數解析後的值),恆有值、不受 CommitStatus 影響。EquipmentId 是實際採用的設備 ElementId,在設備 Connector 解析成功時(早於交易 Commit)就已決定;未帶 equipmentId 時為 null。SystemName 是實際生效的系統名稱,於 Commit 之後讀回;CommitStatus 非 Committed 或讀取失敗時為 null、不補值。SystemFlowReadBack 是建立後從系統本身讀回的總流量,不是呼叫端寫進去的,是 Revit 依系統成員實際計算的結果——但只有在回傳的 IsWellConnected=true 時才是有效計算值;IsWellConnected=false(例如風口已放置但風管尚未繪製,系統未良好連接)時 Revit 文件明載該計算參數無效,請勿用於驗算,回傳的 Note 會註明原因。IsWellConnected 讀 MechanicalSystem.IsWellConnected,CommitStatus 非 Committed 或讀取失敗時為 null。回傳同時附 SystemIsEmpty(讀 MEPSystem.IsEmpty),CommitStatus 非 Committed 或讀取失敗時同樣為 null、不補值。若有設備,一併讀回其 Air Flow 參數放進 EquipmentAirFlowReadBack(附 IsReadOnly 供核對是否唯讀;若該族群同名參數有多個,Ambiguous=true 且讀取的是 Revit GetParameters() 回傳的第一筆,比對結果依 Revit 文件為隨機且可能變動)。兩者都拆成 Found/DisplayValue(顯示值)/RawValue(內部值)/CalculationValid/IsReadOnly/Ambiguous/Note 欄位,互不補值。回傳另附 ActualMemberCount(系統實際成員數,讀不到為 null)與 ExpectedMemberCount(= SuccessCount;Revit API 文件明載 MEPSystem.Elements 不含 base equipment 或 panel,故預期成員數只算風口成功筆數、不含設備)供交叉比對,不一致時 MemberCountMismatch=true。設備是否已掛上系統由獨立欄位 BaseEquipmentAttached 回報(true/false;交易非 Committed 或讀取失敗時為 null,不補值),不混進成員數比對。整批在單一 Transaction 內完成;systemName 有給時嘗試命名,但 Revit 要求系統名稱在專案內唯一,撞名時系統仍會建立並保留 Revit 自動產生的名稱,命名失敗的原因放在 SystemNameError(不會整批 rollback),你要求的原始名稱回報在 SystemNameRequested。回傳的 CommitStatus 是 Transaction.Commit() 的實際回傳狀態,Success 欄位同時要求 CommitStatus='Committed' 且所有風口都成功;CommitStatus 非 Committed 時 CommitError 會說明、且不會讀回任何流量或系統成員資訊(避免對已回滾的元素讀值)。TerminalCount 是輸入 terminalIds 的總筆數(不論成敗);SuccessCount/FailureCount 分別是成功/失敗筆數,兩者相加等於 TerminalCount。FailureCount=0 不等於整體 Success=true——即使所有風口都解析成功,只要 CommitStatus 不是 'Committed',Success 仍為 false,請兩個欄位一起看。本工具的 MCP timeout 為 30 秒且逾時不會回滾——若逾時,Revit 端交易仍可能已提交,請務必用 query_elements_with_filter 或 get_element_info 核對模型實際狀態後再重試。直接重試會失敗——第一次已提交時,設備與風口的 Connector 已隸屬該系統,本工具會在設備端直接中止、或全部風口都記為失敗後因無可用成員而整體報錯(與 systemName 是否重複無關;名稱撞名本身不會讓呼叫失敗,只會填 SystemNameError)。作用視圖為明細表時,Revit 會在每次模型變更後重算整張表,依 domain/tool-capability-boundary.md L17 實測這會顯著提高逾時機率,回傳的 PerformanceWarning 會提醒(不擋執行),建議先用 set_active_view 切到一般平面圖再執行;回傳附 ElapsedMs 供核對耗時。
curate_mep_sizes
破壞性
mep-tools
增減 MEP 尺寸目錄(會修改模型設定)。規則:增無限制;減只能刪「模型中沒有任何元件在用」的尺寸,工具會自行跑用量盤點把在用的擋下並說明是誰在用。執行採四步:①列表(dryRun,預設 true)→②單一 Transaction 執行(可 Ctrl+Z)→③QC 重讀目錄逐筆比對→④偵測到誤刪自動以快照原樣加回。回傳一律附 RestorePayload(被移除尺寸的完整定義),供事後人工復原。新增管尺寸必須同時給 inner_mm 與 outer_mm(內外徑是水力計算依據,不由工具臆造);風管只需 nominal_mm。務必先用 get_mep_size_usage 確認用量。協定見 domain/mep-mechanical-settings.md。
detect_clashes
唯讀
clash-tools
執行 MEP 管線(連結模型)與 CSA 結構體(主模型)的碰撞偵測,使用 Curve-to-Solid 策略:MEP 抽中心線、CSA 保留實體、計算穿透線段。回傳每筆碰撞的入口/出口座標、貫穿長度、截面積、佔用體積,以及依系統/依 CSA 品類的統計摘要。
export_clash_report
唯讀
clash-tools
匯出 detect_clashes 結果為報表。format 可選 csv、json、both。預設輸出到桌面,檔名含時間戳。
export_families
唯讀
mep-tools
把專案中已載入的可編輯族群另存為 .rfa 檔到指定資料夾,建立可重用元件庫。預設匯出管配件(OST_PipeFitting)與管附件(OST_PipeAccessory)。自動依類別建立子資料夾;subFolderBySeries=true 時再依族群名稱系列(CIP/DWV/碳鋼.../)細分。略過系統族群、現地(in-place)與不可編輯族群。
get_connector_info
唯讀
mep-tools
取得 MEP 元素(管、風管、線管等)的接頭(Connector)資訊,包含座標、連接狀態、形狀等。
get_element_geometry
唯讀
clash-tools
抽取元素的幾何資訊,支援主模型或連結模型元素。geometryType 可選 centerline(中心線)、boundingbox(範圍盒)、solid(實體統計)、all(全部)。連結模型的座標會套用 Transform。
get_linked_models
唯讀
clash-tools
列出當前專案中所有連結模型(RevitLinkInstance),含 LinkInstanceId、檔名、路徑、載入狀態、Transform 原點。用於碰撞偵測第一步:找到 MEP 連結的 LinkInstanceId。
get_mep_segments_and_sizes
唯讀
mep-tools
一次盤點整個專案的 MEP Segment 與 Size 目錄(唯讀)。對應 Manage → MEP Settings 裡 Segments and Sizes 對話框的內容:每個管段(PipeSegment=材質 × Schedule,如 Copper - K、PVC - Sch 40)各一份尺寸表,含 nominal / inner / outer 直徑與 Used in Size Lists、Used in Sizing 兩個勾選狀態;可一併回傳風管(Round / Rectangular / Oval)尺寸表(風管只有 nominal,Revit 的 duct inner/outer 是佔位值故不輸出)。這些資訊 Schedule 與 System Browser 都撈不到。所有尺寸以 mm 回傳,供台灣 CNS 尺寸對帳使用。全量 dump 可達數百筆,先用 summaryOnly=true 看全貌,再用 segmentName 鑽單一管段。
get_mep_settings
唯讀
mep-tools
讀取 Manage → MEP Settings 裡「尺寸目錄以外」的所有設定頁(唯讀):Duct/Pipe 的 Angles(fitting 角度用法與各角度勾選狀態)、Pipe 的 Slopes(坡度清單)與 Fluids(流體類型,可選溫度/黏度/密度表)、兩邊的 Calculation(空氣密度與黏度、network-based 計算、接頭容差)、尺寸命名與註記字串、標高文字(Centerline / Set Up / Flat on Top …)、以及 Hidden Line。角度以度回傳、長度以 mm 回傳,物理量另附以專案顯示單位格式化的字串。管段與尺寸目錄不在這裡,請用 get_mep_segments_and_sizes。
get_mep_size_usage
唯讀
mep-tools
盤點模型裡「真的有元件在用」哪些 MEP 尺寸(唯讀)。這與 get_mep_segments_and_sizes 讀的「目錄裡列了哪些尺寸」是兩件事——目錄不知道自己有沒有被用,只看目錄就刪除等於盲刪。掃描來源包含直管/直風管的寬高與直徑,以及配件與附件的 Connector 尺寸(漏掃配件會把「只有變徑頭在用」的尺寸誤判成可刪)。管的用量以 Pipe.PipeSegment 精確歸戶到各 segment。回傳每個目錄尺寸的 usageCount 與 removable 旗標,另列 orphans(模型有用但目錄沒有的尺寸,屬「該增」的候選)。刪除任何尺寸前一定要先跑這支。方法見 domain/mep-mechanical-settings.md。
get_space_centroid
唯讀
mep-tools
回傳每個 Revit Space(OST_MEPSpaces)的代表點座標(mm)。這是本專案第一個支援 Space 品類的工具——get_room_info 等既有工具只吃 OST_Rooms,傳 Space 進去會 cast 失敗。供後續自動放置元件(如風口)使用。代表點依序嘗試 LocationPoint → BoundingBox 中心 → BoundingBox 內網格取樣,每一步都用 Space.IsPointInSpace 驗證是否真的落在空間內(凹形空間的 BoundingBox 中心可能落在空間外),全部失敗則回傳 null 並標示 PointSource='None',不做靜默 fallback。也回傳 BoundedHeight(= Volume / Area,可用來估算前期天花高度)。未放置或未封閉的 Space 仍會列出,但標示 IsPlaced=false 且幾何欄位為 null;IsPlaced=false 時可再看 HasLocation 與 IsEnclosed 區分「根本沒放置」與「已放置但未封閉(unenclosed)」這兩種處置方式完全不同的狀況。
place_family_instances
會寫入
mep-tools
批次把族群實例放置到指定世界座標點,可放置後設定實例參數。這是本專案第一個不綁死品類的泛用放置工具——place_furniture 寫死 OST_Furniture、create_door/create_window 需要 hosting 牆,都無法放風口(Air Terminal)等 MEP 族群。placements 每筆優先用 typeId(FamilySymbol 的 ElementId)直接取用,不做名稱比對;未給 typeId 才走 familyName/typeName 名稱比對(支援「FamilyName: TypeName」複合寫法)。名稱比對採兩段式:給了 familyName 就只在該族群底下比對 typeName,命中多個會直接報錯要求改用 typeId,不會悶聲選第一個;familyName 為空才允許 typeName 全域比對,同樣命中多個會報錯。x/y/z 皆為世界座標,單位 mm,get_space_centroid 回傳的座標可直接餵入(歷史註記:2026-08-14 曾實測 z 是「相對所在樓層標高的偏移」而非世界座標,直接餵 get_space_centroid 的 Z 會整批高出一個樓層標高且無錯誤訊息;2026-08-15 已將 C# 端 z 語意改為世界座標,換算改在工具內部用 Level.ProjectElevation 完成,見下方 z 欄位的部署時滯警告;此偏移語意僅在單一模型的特定設備族群上實測過,可能為族群/放置型式相依,Revit API 文件並未記載此語意)。levelName 省略時的自動選層邏輯是取「ProjectElevation 最接近 z 且不高於 z」的樓層,z 改為世界座標後這段邏輯才自洽(此分支同樣未經 Revit 實測,見下方 levelName 欄位說明)。回傳結果的 LevelName 是實際採用的樓層,請與你給的 levelName 核對是否一致;並務必用回傳的 PlacedPoint(與 PlacedBBoxCenter,見下方)核對實際落點。rotation 為繞放置點鉛直軸旋轉的角度(度),預設 0。tag 是呼叫端自訂識別字串,原樣回傳供比對。整批只開一個 Transaction,單筆失敗不影響其他筆;若實例已建立但後續步驟(旋轉/設參數)才失敗,該筆結果仍會附上 ElementId 並在 Error 註明「實例已建立但後續步驟失敗」,避免孤兒元件追蹤不到。放置後、讀取旋轉軸與最終落點之前,工具會補一次 Regenerate(2026-08-14 實測某些族群如 Exhauster with Cabinet,放置後未 Regenerate 直接讀 LocationPoint 會拿到 (0,0,0),即使 BoundingBox 證實位置正確;同批 AHU 沒有這個問題,屬族群相依);加上參數設定完後的既有一次性 Regenerate,每筆 placement 在這兩個時點各至多一次、上限共兩次;另外每個尚未啟用的族群類型(FamilySymbol)在批次中第一次用到時會多觸發一次 Activate 後的 Regenerate,但只發生在該 symbol 第一次出現時,不隨 placement 筆數累加。批次規模較大時請沿用 domain/space-centroid-placement.md 的分批估算,避免撞破 MCP-Server 的 30 秒 timeout。回傳結果每筆附 PlacedPointSource:'LocationPoint' 代表 PlacedPoint 是讀到的實際落點(可用來偵測 Revit 放置時是否對點做了吸附/調整);'RequestedFallback' 代表讀不到 LocationPoint、PlacedPoint 只是回聲你給的 x/y/z,此時不可用它判斷是否發生吸附。另附 PlacedBBoxCenter:取元件 BoundingBox 中心(mm),與 PlacedPoint 是兩個獨立訊號、互不補值——LocationPoint 因族群相依而失真時(如上述 Exhauster 案例),可用 PlacedBBoxCenter 交叉核對;BoundingBox 讀不到時為 null,不會用 PlacedPoint 頂替。PlacedBBoxCenter 是元件整體外接盒的中心,對非對稱族群本來就不等於插入點,且依 Revit API 文件該盒會納入 flip controls 等不明顯的幾何;交叉核對的用途是判斷量級是否合理(例如 PlacedPoint 回 (0,0,0) 而 BBox 中心落在預期位置附近),不是逐位比對相等。回傳逐筆 Success/Error 與整體成功/失敗計數。parameters 是放置後要設定的實例參數 {參數名: 值};每個參數設定後會讀回兩個獨立欄位:WrittenBackDisplay(Parameter.AsValueString(),Revit 依專案顯示單位格式化的值)與 WrittenBackRaw(依 StorageType 取的內部單位原始值,ElementId 類參數若讀到有效 ID 就回該 ID、讀到「已設定但無效」則回 -1、真正讀不出來才回 null),兩者互不補值、各自可能為 null,務必併看才能判斷是數字寫錯還是單位換算錯——modify_element_parameter 走 Revit 內部單位,Set() 成功不代表寫進去的是你要的量(domain/tool-capability-boundary.md 的 lesson L16,實測表在該檔「寫入值/讀回值/比值」表格,記錄過「寫入 89.2 讀回 9093」的落差),這裡不做任何單位換算或猜測,只誠實回報寫進去之後實際是什麼,請自行比對 Requested 與這兩個 WrittenBack 欄位判斷是否正確。⚠️ 部署時滯警告(2026-08-15):z 的世界座標語意是 C# 端的改動,需重新編譯部署 DLL 並重啟 Revit 才會生效;若你連到的 add-in 尚未更新,行為仍是舊版的「相對樓層偏移」語意,且不會有任何錯誤提示你版本不符。PlacedBBoxCenter 亦為本次新增欄位;若回傳結果中沒有這個欄位,即代表你連到的 add-in 尚未更新,z 仍為舊版的相對樓層偏移語意——這是唯一可用的版本判別訊號。首次使用本工具時請先只放 1 件,用回傳的 PlacedPoint 與 PlacedBBoxCenter 核對落點是否符合世界座標預期,確認無誤後再批次放置。
query_linked_elements
唯讀
clash-tools
查詢指定連結模型中的元素,支援品類篩選、參數過濾、自訂回傳欄位。座標會自動套用連結模型 Transform,確保與主模型對齊。
scan_opening_candidates
唯讀
clash-tools
唯讀掃描 MEP 管線穿越結構的開孔候選。沿用 detect_clashes 的 Curve-to-Solid 幾何核心,依明確的每側 clearanceMm 計算建議孔徑,並以 candidate / review_required 與 warningCodes 保守分流;不建立套管、開孔族群、標記或視圖圖形。
E · 法規檢核(13 個)

排煙、偵煙、樓梯——有法源、有判準的檢查。

analyze_smoke_detectors
唯讀
smoke-detector-tools
偵煙探測器設置分析:掃描當前視圖的探測器、空調出風口(FCU/冷風機)、房間,回傳各探測器的距出風口距離、距牆/樑距離、距天花板距離,以及各房間的探測器數量與樑區格數。供 JS 端進行五項法規判定。
check_floor_effective_openings
唯讀
smoke-exhaust-tools
無開口樓層判定:檢查樓層外牆有效開口面積是否 ≥ 樓地板面積 1/30。法源:消防§4 + §28③。
check_smoke_exhaust_windows
唯讀
smoke-exhaust-tools
排煙窗檢討:檢查天花板下 80cm 內可開啟窗面積是否 ≥ 區劃面積 2%。同時判定無窗居室。法源:建技規§101① + 消防§188。自動上色:綠=全開、黃=折減、紅=固定。
check_stair_headroom
唯讀
stair-compliance-tools
檢查樓梯淨高是否符合法規要求(190cm + 裝修厚度)
create_detail_lines
會寫入
smoke-exhaust-tools
在視圖上繪製詳圖線(天花板線、有效帶範圍線等),可指定顏色和標籤。
create_filled_region
會寫入
smoke-exhaust-tools
建立填充區域(如排煙有效帶色塊),可設定顏色和透明度。
create_section_view
會寫入
smoke-exhaust-tools
建立剖面視圖,面向指定牆面。可用於檢視窗戶與天花板的高度關係。
create_stair_section_view
會寫入
stair-compliance-tools
建立樓梯法規檢核剖面視圖(自動判斷長向走向以顯示踏板剖面)
create_stair_text_note_with_leader
會寫入
stair-compliance-tools
建立帶有引線的文字標註 (專用於樓梯檢核標示違規位置)
create_text_note
會寫入
smoke-exhaust-tools
在視圖上建立文字標註。
export_smoke_review_excel
唯讀
smoke-exhaust-tools
匯出排煙窗檢討 Excel 報告(.xlsx),含樓層總覽、房間明細、窗戶明細、改善建議、§101補充檢討(排風量提醒+中央管理室偵測)五個工作表。
get_stair_actual_width
唯讀
stair-compliance-tools
取得樓梯梯段的真實實測寬度(透過 StairsRun.ActualRunWidth 屬性)
visualize_detector_results
會寫入
smoke-detector-tools
依照法規判定結果對偵煙探測器上色:綠=PASS、紅=FAIL、橙=WARN(出風口資料缺失)。
F · 視圖與圖紙(26 個)

建視圖、裁剪、圖紙配置、視埠定位、跨專案複製。

align_titleblocks_on_sheets
會寫入
titleblock-align-tools
批次將多個 sheet 上的 titleblock 移動到同一個 anchor 座標。可用『referenceSheetNumber』指定要拷貝某張 sheet 上 titleblock 的位置,或用『referencePositionMm』直接給絕對座標。anchor 決定要對齊 titleblock bbox 的哪個角(top-left / top-right / bottom-left / bottom-right / center)。建議先 dryRun=true 預覽 delta,確認後再實際執行。觸發條件:使用者提到 titleblock 對齊、圖框對齊、把所有 sheet 圖框對齊到 X、change_element_type 後圖框沒跟著移動、align titleblock、move titleblock to match。
align_view_cropbox_to_element
會寫入
view-cropbox-tools
將指定視圖的 CropBox 對齊到目標元素(如 Detail Group 圖框)的 BoundingBox。保留原 Z 軸深度與 CropBox Transform。viewId 不指定時使用 active view。
arrange_viewports_on_sheet
會寫入
sheet-tools
依指定順序排列圖紙上的視埠(僅限 DraftingView)。支援水平或垂直排列,邊緣對齊(edge-to-edge)。第一個視埠的位置作為錨點。可用 viewNames(view 名稱陣列)或 viewportIds(視埠 ID 陣列)指定順序,二擇一。
auto_renumber_sheets
會寫入
sheet-tools
自動掃描專案中所有帶有 -1 後綴的圖紙(例如 ARB-D0417-1),並將其合併至主序列中(變成 ARB-D0418),後續編號會自動順延。
batch_apply_view_template
會寫入
view-creation-tools
批次將指定的 ViewTemplate 套用到多個 views。支援透過圖紙(sheets)、view ID、view 名稱或名稱子字串來選取目標 views。可搭配 viewTypeFilter 篩選特定視圖類型。dryRun 模式可預覽變更內容而不實際修改。觸發條件:使用者提到批次修改 view template、套用視圖樣版、sheet 中的 view 改 template。
batch_create_wall_sections
會寫入
parallel-section-tools
批次建立牆面套管剖面:以當前視圖的 BoundingBox 範圍過濾指定連結模型中的牆,再比對所有 MEP 連結模型的管附件(圓形套管)與風管附件(矩形開口),只對有開孔的牆建立剖面視圖。
calculate_grid_bounds
唯讀
dependent-view-tools
計算給定 X 與 Y 網格範圍的邊界 BoundingBox 座標。可指定外擴偏移量 (offset_mm)。
copy_sheets_from_file
會寫入
cross-document-tools
從來源 .rvt 檔案複製圖紙到目前開啟的專案。讀取來源的 sheet/viewport/view metadata,在目標專案中重建 sheets、匹配或建立 views、放置 viewports 並同步設定。View 依四級分類處理:Tier 1(FloorPlan/CeilingPlan)可自動建立;Tier 2(Section/3D/DraftingView)可部分建立;Tier 3(Legend/Schedule)只匹配不建立;Tier 4(Elevation/Callout/AreaPlan)回報 manual_action_required。衝突項目必須在 conflictResolution 中指定處理方式。
create_dependent_views
會寫入
dependent-view-tools
依據指定的母視圖 ID 與 BoundingBox 邊界,批次建立並裁切從屬視圖 (Dependent View)。
create_floor_plans_from_template
會寫入
view-creation-tools
以指定的 FloorPlan 視圖作為範本,在多個 Level 上批次建立新的樓層平面視圖。複製範本的 ViewFamilyType、View Template、Phase、Phase Filter。適用於補齊缺漏的正式建築圖系列(例:A- 前綴的樓層平面圖)。已存在同名 view 時會跳過並在回傳的 Skipped 清單中記錄原因。
create_parallel_section_view
會寫入
parallel-section-tools
依牆面開孔位置自動建立平行剖面視圖。自動偵測牆上的套管族群,以開孔群組為單位裁剪剖面範圍;支援長牆分割(相鄰開孔 > 3m 則各自建立獨立剖面)、房間方向自動判定。無開孔時建立整面牆的全寬剖面。
create_sheets
會寫入
sheet-tools
依據指定的清單批次建立空的圖紙。
debug_viewport_geometry
唯讀
viewport-position-tools
診斷工具:dump 一個 viewport 的所有座標資料(boxOutline、cropbox、view origin、scale 等)。用於反推 Revit 內部 cropbox vs viewport 的座標映射規則。指定 viewportId 或 viewId 其中之一。
duplicate_views_with_detailing
會寫入
view-duplicate-tools
Duplicate one or more views with detailing (ViewDuplicateOption.WithDetailing keeps view-specific detailing/annotation), optionally renaming them and copying the crop region from the source view. Typical use: create the '高於6m牆標示' tall-partition markup views from a base plan.
get_all_sheets
唯讀
sheet-tools
取得專案中所有的圖紙清單,包含 ID、編號與名稱。
get_sheet_viewport_details
唯讀
sheet-tools
取得指定圖紙上所有視埠的詳細資訊,包含中心點座標、邊界框(MinX/MinY/MaxX/MaxY)、寬度與高度(mm)。若不指定 sheetId,則使用當前作用視圖(必須是圖紙)。
get_titleblocks
唯讀
sheet-tools
取得專案中所有可用的圖框(Title Blocks)類型。
get_viewport_map
唯讀
sheet-tools
取得專案中所有視埠(Viewport)與圖紙(Sheet)的對應關係。可用於查詢特定視圖被放置在哪張圖紙上。
move_viewport_titles
會寫入
viewport-position-tools
批次移動 viewport 標題(label line + text)的位置。支援兩種模式:(1) below-view-center: 將標題置中放在 view 正下方(自動計算 cropbox 底邊中心 + gapMm 距離);(2) reset: LabelOffset 還原為 XYZ.Zero(Revit 預設位置,通常在 viewport 左下角)。識別目標 viewports 與 position_viewports_on_sheet 相同:viewportIds / viewIds / viewNames / viewNameContains,可加 sheetNumbers / viewTypeFilter 過濾。觸發條件:使用者提到 viewport 標題位置、視埠標題、view title 對齊、把標題挪到視圖下方、reset title position。建議搭配 dryRun=true 先預覽。
position_viewports_on_sheet
會寫入
viewport-position-tools
批次將 viewports 移動到 sheet 上的指定位置。位置是用「view 的某個錨點 + sheet 上某個參考點 + offset」三段組合定義。例:『所有平面圖的左上角』移到『title block 左上角 X+10mm Y+10mm』。識別目標 viewports 有多種方式(viewportIds / viewIds / viewNames / viewNameContains),可結合 sheetNumbers 和 viewTypeFilter 進一步過濾。建議搭配 dryRun=true 先預覽位移,再實際執行。觸發條件:使用者提到 viewport 位置、視埠定位、移動視埠到圖框、view 對齊圖框、批次定位、align viewport to titleblock、move viewport。
read_source_file_sheets
唯讀
cross-document-tools
開啟來源 .rvt 檔案並讀取所有圖紙 (sheets)、視埠 (viewports)、視圖 (views) 與 ScheduleSheetInstance 的 metadata。同時偵測與目標檔(目前開啟的專案)的衝突。回傳結構化 JSON 供 AI agent 預覽與規劃後續 copy_sheets_from_file 操作。不修改任何檔案。
scale_drafting_view_height
會寫入
sheet-tools
縮放圖紙上所有 DraftingView 中表格的行高(僅 Y 軸),寬度不變。以每個 view 的上邊緣為錨點,將所有 DetailCurve 和 TextNote 的 Y 座標按比例縮放。
scale_drafting_view_width
會寫入
sheet-tools
縮放圖紙上所有 DraftingView 中表格的寬度(僅 X 軸),高度不變。以每個 view 的左邊緣為錨點,將所有 DetailCurve 和 TextNote 的 X 座標按比例縮放。
set_scope_box_for_views
會寫入
scope-box-tools
批次將 ScopeBox 套用到一組 views(透過設定 view 的 VIEWER_VOLUME_OF_INTEREST_CROP 參數)。被套用後 view 的 CropBox 會自動跟隨 ScopeBox 的範圍,以後 ScopeBox 移動或調整大小時 view 會跟著更新。三選一指定目標 views,優先序:viewIds(最精確)> viewNames > viewNameContains。可選 viewTypeFilter 進一步篩選。View template、不支援 ScopeBox 的 view(Schedule, Legend 等)會自動跳過並記錄在 Skipped 中。觸發條件:使用者提到 scope box、範圍框、套用 scope box、批次設定 scope box、scopebox to views。
shift_view_cropbox
會寫入
view-cropbox-tools
在 CropBox 自身座標系中平移視圖的 CropBox。dx 正值往右、dy 正值往上(單位公釐)。viewId 不指定時使用 active view。
sync_sheet_parameters_from_source
會寫入
cross-document-tools
補丁工具:為 target 中已存在的 sheets 從 source 同號 sheet 補齊 custom parameters(例如修補先前 copy_sheets_from_file 沒帶到的 sheet folder/圖集 / Discipline / 繪圖人 等)。**不會重建 sheet、不會動 viewport**,只比對同 SheetNumber 並複製 custom parameters。同名 + 同 StorageType 的 writable parameter 才會被複製,ElementId 類型跳過。觸發條件:使用者提到 sheet folder 缺失、補圖集、修圖紙分組、sheet 沒歸入 folder、補 sheet metadata、sync sheet parameter、batch update sheet parameter。
G · 標註與詳圖(25 個)

尺寸、詳圖元件、填充區域、圖例、明細表、文字。

auto_convert_rotated_viewport_patterns
會寫入
fill-region-tools
Automatically fix fill patterns on rotated viewports so hatch orientation follows the rotation correctly. Takes no parameters.
auto_dimension_walls
會寫入
dimension-tools
批次自動標註牆段尺寸(不需要 Room)。三種模式:overall_bbox(外圍兩條總長串:top 邊沿 X、right 邊沿 Y,預設)/ chained(同列同排共線牆串成 string dimension)/ per_wall(每牆一條長度標註)。標註用 DetailCurve 當 reference,不抓牆面,但建模一次性場景剛好。常用於 sketch-to-revit 蓋完牆後自動補尺寸。
batch_create_rc_filled_region
會寫入
fill-region-tools
Batch-create RC filled-region stickers across multiple views, or across every placed viewport on the given sheets.
convert_drafting_to_model_pattern
會寫入
fill-region-tools
Convert drafting fill patterns to model fill patterns in the document so hatching stays fixed to the model rather than the sheet. Takes no parameters.
copy_detail_items_to_views
會寫入
detail-copy-tools
批次複製詳圖項目(DetailCurve、TextNote、FilledRegion、DetailComponent、Dimension)從來源視圖到一或多個目標視圖(同一專案內)。支援 DraftingView 與 model view。
create_detail_component_type
會寫入
detail-component-tools
指定詳圖項目族群,複製並設定新名稱(圖紙編號-圖紙名稱-詳圖名稱),同時自動填寫 詳圖圖號、圖說名稱、詳圖名稱、詳圖編號 等類型參數。
create_dimension_by_bounding_box
會寫入
dimension-tools
使用房間邊界框自動標註房間淨尺寸(保證100%覆蓋率)
create_dimension_by_ray
會寫入
dimension-tools
使用射線偵測 (Ray-Casting) 建立尺寸標註。從指定原點向正反方向發射射線,偵測牆面並建立標註。
create_legends
會寫入
legend-tools
⚠️ 若目的是把 Excel 內容繪製到 Revit view,**請改用 `import_excel_to_drafting_views`**(一站式、自動 viewport 還原)。本工具僅複製已存在的 seed legend,**不會繪製任何內容**,使用情境僅限:(1) 需要 Legend View 而非 Drafting View 以便在多張 sheet 重複放置同份內容;(2) 純複製空白 legend 模板。從 seed legend 批次複製出多個 legend 視圖。Revit API 不支援憑空建立 legend,必須先在樣板/專案中手動放置一個 seed legend(建議命名為 _SEED_BLANK)。
create_rc_filled_region
會寫入
fill-region-tools
Create RC (reinforced-concrete) filled-region stickers in the active view by detecting RC element outlines, drawn with an invisible line style so only the hatch shows.
create_room_filled_regions
會寫入
fill-region-tools
Create filled regions covering rooms in a view (e.g. to colour/mark rooms), optionally clearing previously created markers and setting colour and transparency.
create_view_schedule
會寫入
schedule-tools
在 Revit 中建立一個新的視圖明細表(Schedule/Quantities)。可以指定名稱、品類以及要包含的欄位。
dedup_detail_elements_in_view
破壞性
detail-component-tools
找出當前視圖(或指定視圖)中重複的 detail element(同 Type + 位置量化後相同),保留 Detail Group 內的副本,刪除 group 外的副本。涵蓋 DetailComponent / DetailCurve / FilledRegion / TextNote / Dimension。只認 Detail Group(OST_IOSDetailGroups),不認 Model Group。預設 dryRun=true 只列清單;確認後設 dryRun=false 才實際刪除。邊界情形(全部都在 group 中、或全部都不在 group 中)會回報但不動。
door-window-legend-tools
會寫入
door-window-legend-tools
門窗圖例工具。mode=list 列出專案中已使用的門/窗型;mode=create 以 seed Legend 複製生成 A+ managed 圖例(每個項目是一個 Detail Group,以 ExtensibleStorage 記錄 ownership,不再靠 TextNote 或位置猜測辨識成員);mode=update 更新既有門窗圖例;mode=migrate 預覽或套用 legacy 項目的 A+ ownership migration(apply 預設 false 僅預覽不修改模型,true 才套用;itemKeys 可選,限定套用範圍,ambiguous/overlap/unresolved 一律跳過)。create/update 會要求使用者明確選擇 layoutDirection、maxPerLine、dimensionTypeId,create 另需 seedLegendViewId,update 另需 legendViewId。
get_detail_components
唯讀
detail-component-tools
查詢專案中的詳圖元件(Detail Components)實例。可依族群名稱篩選,回傳每個實例的 ID、族群名稱、類型名稱、所屬視圖及參數。
import_excel_to_drafting_views
唯讀
legend-tools
原子化命令:讀 Excel → 對每張有列印範圍的 worksheet 建立 Drafting View → 畫框線(merge-aware)→ 寫文字。固定 viewScale=1:1、textSize=3mm、rowH=4.5mm、colW=30mm。Claude 端只送檔案路徑與 sheet 清單,所有座標計算、Revit Transaction 都在 C# 內完成,token 用量極低(25 sheet ≈ 1.5K)。已自動正規化 \r\n → \n。**Overwrite 時會在 doc.Delete 之前先擷取舊 view 在所有 sheet 上的 viewport 中心點,重建後自動 Viewport.Create 放回原位**,使用者不需再到 UI 手動補放。回應新增 ViewportsRestored 計數與 ViewportFailures 列表(個別失敗不會影響整批 Commit)。
list_dimension_types
唯讀
dimension-type-tools
列出目前 Revit 專案可用的 DimensionType。door-window-legend-tools create/update 需要先由使用者選擇 dimensionTypeName,再把對應 dimensionTypeId 傳回。
list_family_symbols
唯讀
detail-component-tools
列出專案中的 FamilySymbol(族群類型)。可依名稱篩選,回傳 ID、類型名稱、族群名稱、類別。用於查詢可用的詳圖項目族群。
list_legend_views
唯讀
legend-view-tools
列出目前 Revit 專案中的 Legend 視圖與其中的門窗 legend component 數量。door-window-legend-tools update 需要先由使用者選擇 viewName。
list_schedules
唯讀
schedule-tools
列出目前專案中所有可讀取的明細表(排除樣板、圖框修訂表)。回傳每張表的 ElementId、名稱、品類、列數與欄數,供儀錶板分類與展開使用。
list_seeds
唯讀
list-seeds-tools
列出 seed 候選資料。這版支援 seedType=legend,會回傳所有非樣板 Legend 視圖與其中 Legend Component 數量。此 tool 的結果必須顯示給使用者選擇;assistant 不得根據清單自動決定 seed,也不得在使用者未選 ViewName 前自動重試 create。
move_text_notes_in_views
會寫入
text-note-tools
在多個 DraftingView 中,依文字內容子字串搜尋 TextNote 並批次平移。適用於跨圖面統一調整法規文字位置。
read_excel_tables
唯讀
legend-tools
⚠️ 若目的是把 Excel 內容繪製到 Revit Drafting View,**請改用 `import_excel_to_drafting_views`**(一站式命令,內部自帶 Excel 解析、layout、wrap、viewport 還原,token 省 95%+)。本工具僅用於純讀取/探索 Excel 結構,**不會建立任何 view 或畫任何元素**。讀取 Excel 檔案中的 named table(或整張 worksheet),僅回傳落在 worksheet 列印範圍 (PrintArea) 內的儲存格內容。沒有設定列印範圍的 worksheet 會被略過。預設不傳 borders 陣列以節省 token;若需粗細資訊請傳 includeBorders=true。summary=true 模式只回每張表的維度與是否含非 Thin 邊框,適合大量 sheet 的初探階段。
read_schedule
唯讀
schedule-tools
讀取單一明細表的完整表格內容(欄位標頭 + 逐格 body 資料,忠實呈現 Revit 畫面顯示的文字)。用 scheduleId 或 scheduleName 指定。
sync_detail_component_numbers
會寫入
detail-component-tools
自動同步所有詳圖元件的類型參數(詳圖圖號、圖說名稱)與其所在圖紙的編號和名稱。僅更新類型名稱已匹配圖紙編號的元件,不會影響共用標準詳圖。
H · 視覺化(20 個)

上色、覆寫、隱藏顯示——把分析結果畫回模型上;也涵蓋材質與 Type 建構(含綠建材材質)。

assign_existing_material
會寫入
visualization-tools
將既有材質(透過名稱查找)套用到指定的 Type。不建立新材質。用於復原或批次指派既有材質(例如把 9 個柱子從 'White_MCP' 改回 '鋼 AISI 1015')。
batch_set_material
會寫入
visualization-tools
批次修改指定 Type 的材質(複製原材質模式)。為每個 Type 的原材質建立複本 '{原名}_{suffix}',只修改複本的 Appearance Asset(diffuse color),保留 Graphics 顏色與原材質其他屬性。影響 Enscape/V-Ray 等渲染引擎,但平面圖切割填充和 Revit Shaded 3D 維持原材質外觀。牆/樓板只修改 CompoundStructure 最外層(Layer 0),其他層保留。已含 suffix 的材質會被冪等跳過。
clear_element_override
會寫入
visualization-tools
清除元素在指定視圖中的圖形覆寫。
create_green_material
會寫入
visualization-tools
在 Revit 專案材質庫 (OST_Materials) 中實體發動 Duplicate/Create,獨立建立純淨綠建材或測試 Material(如 'test材質' 或 'GBM0104106_水性漆(居室外用)')。支援 dryRun:只回報材質是否已存在、是否會新建,不建立任何 Material。
create_material
會寫入
visualization-tools
在 Revit 專案資料庫 (OST_Materials) 中建立獨立 Material 並關聯獨立 AppearanceAssetElement。支援 dryRun 預覽。
create_material_by_domain
會寫入
visualization-tools
遵循 Domain 規範建立純淨獨立的 Revit Material(不加前綴、絕不套用預設牆字串)。支援 dryRun 預覽。
create_multi_layer_type
會寫入
visualization-tools
通用多材料構造層工具:複製指定 ElementType(Wall/Floor/Ceiling 皆可),依任意數量的材料清單建立獨立綠建材 Material,依序套入 CompoundStructure 各層。層數、材料、層位機能完全由呼叫端指定,適用於 2 個以上材料或非 Wall 品類的單一組合情境。
create_single_material_type
會寫入
visualization-tools
情境「各別建立」:複製指定 ElementType(Wall/Floor/Ceiling Type)建立新類型,並實體建立一個純淨綠建材 Material,指派到新 Type 的全部 CompoundStructure 層。Type 名稱與 Material 名稱使用同一組字串(GBM編號_材料名稱),不套 TABC_ 前綴。
duplicate_element_type
會寫入
visualization-tools
複製指定 ElementType 建立新類型(如綠建材 Set 專屬牆類型),並依指定的飾面/結構材質名稱實體建立 2 個獨立 Material,套入 Finish1/Structure/Finish2 三層 CompoundStructure 構造層。用於將牆板+塗料組合 Set 導入為單一牆體 Element Type。
duplicate_type_only
會寫入
visualization-tools
單純複製指定 ElementType(Wall/Floor/Ceiling 皆可),不修改 CompoundStructure、不建立或指派任何 Material,新類型與來源類型構造層完全一致。用於先複製出一個不影響既有元件的新 Type,再另外呼叫 set_green_material_type_parameters 寫入 adhesive/sealant/waterproofing 等 Construction 欄位。
get_all_materials
唯讀
visualization-tools
查詢 Project Materials(材質瀏覽器)清單中所有現存材質,可依名稱關鍵字篩選(如 'GBM'),用於在建立材質後主動驗收確認是否已實體存在。
get_types_by_category
唯讀
visualization-tools
查詢指定類別中所有元素類型及其目前材質資訊。回傳每個 Type 的 ID、名稱、族群、實例數量、目前材質。用於在批次修改材質前,讓使用者確認要修改哪些類型。
get_view_templates
唯讀
visualization-tools
取得專案中所有視圖樣版的完整設定。可用於視圖樣版比對與整併分析。
hide_elements
會寫入
visualization-tools
在指定視圖中隱藏元素。使用 View.HideElements() API,支援單一或批次操作。
inject_green_material_into_family
會寫入
visualization-tools
門窗/獨立元件 RFA 綠建材導入:以使用者指定的既有 FamilySymbol 為基底,開啟家族文件→立即另存可復原備份→在家族文件內新增一個 Type(絕不改動來源 Type)→寫入 Identity Data 與 GreenMaterial_Mat1_* 共享參數+遮陽係數/隔音等級等門窗專屬欄位→另存為新家族檔→LoadFamily 載回專案,並以載入前後同名 Type 的參數簽章快照比對,一偵測到非目標 Type 被異動就整批回滾不靜默覆蓋。單一原子呼叫涵蓋整個家族文件生命週期。
override_element_graphics
會寫入
visualization-tools
在指定視圖中覆寫元素的圖形顯示(填滿顏色、圖樣、線條顏色等)。
set_category_visibility
會寫入
visualization-tools
在指定視圖中隱藏或顯示整個類別(同時影響主模型與連結模型)。使用 View.SetCategoryHidden() API。
set_green_material_type_parameters
會寫入
visualization-tools
將綠建材共享參數 Schema(GreenMaterial_SharedParams.txt,Mat1~Mat6 六槽位 + Construction 群組)實體寫入指定 ElementType 的 Identity Data。參數須已透過 load_shared_parameters 綁定至該 Type 所屬品類,否則對應欄位會列在回傳的 MissingParameters。Mat1=主體/牆板、Mat2=面材/塗料、Mat3=附屬/膠材(僅基本欄位)、Mat4~Mat6=追加構造層。
set_material_surface_pattern
會寫入
visualization-tools
為綠建材 Material 建立(或依名稱重用既有)Model 目標的 Surface Pattern 並套入該材質的表面/剖切樣式。用於地磚網格縫線、木地板木紋等依產品規格需要在平面/剖面顯示紋理的飾面材料。
unhide_elements
會寫入
visualization-tools
在指定視圖中取消隱藏元素。使用 View.UnhideElements() API,支援單一或批次操作。