# Revit MCP (npm · @shuotao/revit-mcp-server)

MCP Server for Revit integration - AI-Powered Revit Control

- Trust score: 65/100 (medium)
- Change this week: +60
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-07

## Components

- npm · `@shuotao/revit-mcp-server`: 65/100 (this document), [markdown](https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server.md), [page](https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@shuotao/revit-mcp-server`
- Version: `1.6.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-07.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 99 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 33/100
  - 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 27175 tokens (~161/item across 168 items; 167 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 98% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add shuotao-revit-mcp-server -- npx -y @shuotao/revit-mcp-server
```

### Codex

```bash
codex mcp add shuotao-revit-mcp-server -- npx -y @shuotao/revit-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "shuotao-revit-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@shuotao/revit-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add shuotao-revit-mcp-server --command npx --arg -y --arg @shuotao/revit-mcp-server
```

### Hermes

```yaml
mcp_servers:
  shuotao-revit-mcp-server:
    command: "npx"
    args: ["-y", "@shuotao/revit-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "shuotao-revit-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@shuotao/revit-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-07 (score 65, +4)

- [security improvement] Known CVEs: partial → pass
- [functional] Dependency health: partial → 0.87

### 2026-08-05 (score 61, +2)

- [security improvement] CVE-2026-69207 no longer affects this package
- [security improvement] Known CVEs: fail → partial

### 2026-08-04 (score 59, −1)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail

### 2026-08-02 (score 60, +43)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] First check of Capabilities: pass
- [functional] Licence: MIT

### 2026-08-01 (score 17, +12)

- [functional improvement] Tool coverage: unverified → 98
- [functional improvement] Schema quality: unverified → 0

### 2026-07-31 (score 5, −38)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 43, +19)

- [functional improvement] Tool coverage: unverified → 98
- [functional] First check of Schema quality: unverified
- [functional] First check of Tool coverage: 99
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (167)

### `add_pipe_cap` (~73 tokens)

在管件的未連線端安裝管帽或法蘭

在管件的未連線端安裝管帽或法蘭。自動尋找開放的接頭並連接。

Input parameters:

- `familyName` (string, required): 要安裝的管帽/法蘭族群名稱
- `pipeId` (number, required): 管件的元素 ID

### `adjust_section_datums` (~79 tokens)

自動調整剖面視圖的網格線 (Grids) 與樓層線 (Levels) 2D 範圍與氣泡顯示

自動調整剖面視圖的網格線 (Grids) 與樓層線 (Levels) 2D 範圍與氣泡顯示。

Input parameters:

- `viewIds` (array, required): 要調整的剖面視圖或剖面標記的 Element ID 列表

### `align_titleblocks_on_sheets` (~380 tokens)

批次將多個 sheet 上的 titleblock 移動到同一個 anchor 座標

批次將多個 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。

Input parameters:

- `anchor` (string, required): 對齊 titleblock bbox 的哪個角（預設 top-left）
- `dryRun` (boolean): 若 true 則只計算不實際移動，回傳預期 delta 供確認
- `referencePositionMm` (object): 直接給絕對座標（公釐，sheet 座標）。不可與 referenceSheetNumber 同時使用
- `referenceSheetNumber` (string): 參考 sheet 編號，會抓取此 sheet 上 titleblock 在 anchor 位置的座標作為 ground truth。不可與 referencePositionMm 同時使用
- `targetSheetNumbers` (array): 要對齊的 sheet 編號清單。省略 = 全部 sheets（會跳過沒有 titleblock 的）
- `toleranceMm` (number): 若 delta 小於此公差（mm）則視為已對齊不移動，預設 0.1

### `align_view_cropbox_to_element` (~136 tokens)

將指定視圖的 CropBox 對齊到目標元素（如 Detail Group 圖框）的 BoundingBox

將指定視圖的 CropBox 對齊到目標元素（如 Detail Group 圖框）的 BoundingBox。保留原 Z 軸深度與 CropBox Transform。viewId 不指定時使用 active view。

Input parameters:

- `elementId` (number, required): 要對齊的目標元素 ID（例如 Detail Group 的 ID）
- `padding_mm` (number): 向外擴大的邊距（公釐），預設 0
- `viewId` (number): 目標視圖 ID（選填）；不填則使用當前 active view

### `analyze_beam_penetration` (~258 tokens)

分析特定結構梁上的套管穿孔

分析特定結構梁上的套管穿孔。回傳精確的幾何數據，如距離柱心長度、梁深度、開孔直徑等。

Input parameters:

- `beamId` (number, required): 要分析的目標結構梁 Element ID
- `diameterParamNames` (array): 可選。搜尋套管『直徑』的動態參數名稱清單（實體與類型自動 Fallback）。預設為 ['開孔直徑', '直徑', '管徑', 'Diameter', 'Size']
- `lengthParamNames` (array): 可選。搜尋套管『長度』的動態參數名稱清單。預設為 ['長度', 'Length']
- `linkInstanceId` (number): 可選。連結模型的 ID
- `sleeveIds` (array): 可選。指定檢核的套管 ID 清單，避免全區掃描
- `widthParamNames` (array): 可選。搜尋梁『寬度』的動態參數名稱清單。預設為 ['b', '梁寬', 'Width']

### `analyze_corridor_width` (~109 tokens)

分析走廊寬度

分析走廊寬度。使用 Revit 端的房間邊界線段找出平行牆對，回傳實測寬度、最小寬度與各區段檢討結果。

Input parameters:

- `minWidth` (number): 最小寬度門檻（mm）
- `roomId` (number): 房間 Element ID（選填）
- `roomName` (string): 房間名稱（選填）

### `analyze_floor_slopes` (~149 tokens)

分析樓板頂面排水坡度：以 Solid→PlanarFace 法向量與 Z 軸夾角計算每片朝上頂面的坡度百分比，回傳每片樓

分析樓板頂面排水坡度：以 Solid→PlanarFace 法向量與 Z 軸夾角計算每片朝上頂面的坡度百分比，回傳每片樓板的 Min/Max 坡度，並可回寫至指定參數（預設 Comments）。未指定 elementIds 時自動收集 Function=Exterior 的樓板。

Input parameters:

- `elementIds` (array): 要分析的樓板 Element ID 陣列；省略則自動收集所有 Function=Exterior 樓板
- `paramName` (string): 坡度回寫的目標參數名稱，預設 Comments

### `analyze_smoke_detectors` (~188 tokens)

偵煙探測器設置分析：掃描當前視圖的探測器、空調出風口（FCU/冷風機）、房間，回傳各探測器的距出風口距離、距牆/樑距離、

偵煙探測器設置分析：掃描當前視圖的探測器、空調出風口（FCU/冷風機）、房間，回傳各探測器的距出風口距離、距牆/樑距離、距天花板距離，以及各房間的探測器數量與樑區格數。供 JS 端進行五項法規判定。

Input parameters:

- `detectorKeywords` (array): 偵煙探測器族群名稱關鍵字（預設：偵煙、smoke detector、探測器、感知器）
- `outletKeywords` (array): 出風口族群名稱關鍵字（預設：FCU、冷風機、AHU、送風口、出風口、散流器）

### `analyze_tall_partition_rooms` (~306 tokens)

Find rooms on target levels that share or contain TYPE parti

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.

Input parameters:

- `autoDetectLevels` (boolean): When true and levels is omitted, scan all placed-room levels and let tall TYPE walls identify candidates.
- `excludeRoomNameContains` (array): Room name keywords to exclude. Defaults include shafts, stairs, and elevators.
- `includeDetails` (boolean): Return wall-level and room-side details.
- `includeRoomRayHeight` (boolean): Add ray-cast evidence from room bottom to the nearest floor underside above sampled points.
- `includeSingleRoomBoundaryWalls` (boolean): Include tall TYPE walls that only appear on one target room boundary. Set false to keep only walls shared by two or more target rooms.
- `levels` (array): Level names to scan. Defaults to B-1F and B-3F unless autoDetectLevels is true.
- `maxSearchDistanceMm` (number): Maximum upward/downward floor search distance used by the ray helper.
- `minWallHeightMm` (number): Minimum wall height in millimeters. Default is 6000.
- `sampleGrid` (number): Room ray sample grid size, clamped to 1-7. Default 3.
- `wallTypeContains` (string): Case-insensitive wall type name keyword for partition walls.

### `apply_panel_pattern` (~97 tokens)

將面板排列模式套用到帷幕牆

將面板排列模式套用到帷幕牆。需要類型映射表和排列矩陣。

Input parameters:

- `elementId` (number, required): 帷幕牆的 Element ID
- `matrix` (array, required): 面板排列矩陣，由上到下、由左到右
- `typeMapping` (object, required): 類型映射表（字母→面板類型 ID）

### `arrange_viewports_on_sheet` (~283 tokens)

依指定順序排列圖紙上的視埠（僅限 DraftingView）

依指定順序排列圖紙上的視埠（僅限 DraftingView）。支援水平或垂直排列，邊緣對齊（edge-to-edge）。第一個視埠的位置作為錨點。可用 viewNames（view 名稱陣列）或 viewportIds（視埠 ID 陣列）指定順序，二擇一。

Input parameters:

- `alignY` (string): 垂直對齊方式（水平排列時有效）：top / center（預設）/ bottom
- `direction` (string): 排列方向：horizontal（水平，預設）或 vertical（垂直）
- `gapMm` (number): 視埠之間的間距（mm），預設 0（邊緣對齊）
- `sheetId` (number): 圖紙的 Element ID（選填，不指定則使用當前作用圖紙）
- `viewNames` (array): 依排列順序的 view 名稱陣列（與 viewportIds 二擇一）。工具會在圖紙上查找對應的 DraftingView viewport。
- `viewportIds` (array): 依排列順序的視埠 ID 陣列（與 viewNames 二擇一）

### `assign_existing_material` (~117 tokens)

將既有材質（透過名稱查找）套用到指定的 Type

將既有材質（透過名稱查找）套用到指定的 Type。不建立新材質。用於復原或批次指派既有材質（例如把 9 個柱子從 'White_MCP' 改回 '鋼 AISI 1015'）。

Input parameters:

- `materialName` (string, required): 既有材質名稱（必須已存在於專案中）
- `typeIds` (array, required): 要套用材質的 Type Element ID 陣列

### `auto_convert_rotated_viewport_patterns` (~33 tokens)

Automatically fix fill patterns on rotated viewports so hatc

Automatically fix fill patterns on rotated viewports so hatch orientation follows the rotation correctly. Takes no parameters.

### `auto_dimension_walls` (~233 tokens)

批次自動標註牆段尺寸（不需要 Room）

批次自動標註牆段尺寸（不需要 Room）。三種模式：overall_bbox（外圍兩條總長串：top 邊沿 X、right 邊沿 Y，預設）/ chained（同列同排共線牆串成 string dimension）/ per_wall（每牆一條長度標註）。標註用 DetailCurve 當 reference，不抓牆面，但建模一次性場景剛好。常用於 sketch-to-revit 蓋完牆後自動補尺寸。

Input parameters:

- `mode` (string): 標註模式（預設 overall_bbox）
- `offsetMm` (number): 標註線偏移距離 (mm)，預設 1500
- `viewId` (number, required): 目標平面視圖 ID（必須是 ViewPlan）
- `wallIds` (array): 要標註的牆 ElementId 列表（選填，預設為 view 範圍內所有牆）

### `auto_renumber_sheets` (~71 tokens)

自動掃描專案中所有帶有 -1 後綴的圖紙（例如 ARB-D0417-1），並將其合併至主序列中（變成 ARB-D0418

自動掃描專案中所有帶有 -1 後綴的圖紙（例如 ARB-D0417-1），並將其合併至主序列中（變成 ARB-D0418），後續編號會自動順延。

### `batch_apply_view_template` (~401 tokens)

批次將指定的 ViewTemplate 套用到多個 views

批次將指定的 ViewTemplate 套用到多個 views。支援透過圖紙（sheets）、view ID、view 名稱或名稱子字串來選取目標 views。可搭配 viewTypeFilter 篩選特定視圖類型。dryRun 模式可預覽變更內容而不實際修改。觸發條件：使用者提到批次修改 view template、套用視圖樣版、sheet 中的 view 改 template。

Input parameters:

- `dryRun` (boolean): 設為 true 時僅預覽變更清單，不實際修改。預設 false
- `sheetIds` (array): 圖紙 ElementId 清單 — 套用到這些圖紙上所有 viewport 對應的 views
- `sheetNumbers` (array): 圖紙編號清單（如 ['A101', 'A102']）— 套用到這些圖紙上所有 viewport 對應的 views
- `skipIfSameTemplate` (boolean): 若 view 已使用相同 template 則跳過。預設 true
- `viewIds` (array): 目標 view ElementId 清單（精確指定）
- `viewNameContains` (string): view 名稱包含此字串（substring match，case-insensitive）
- `viewNames` (array): 目標 view 名稱清單（精確匹配）
- `viewTemplateId` (number): 目標 ViewTemplate 的 ElementId（與 viewTemplateName 二擇一）
- `viewTemplateName` (string): 目標 ViewTemplate 的名稱（與 viewTemplateId 二擇一；精確匹配）
- `viewTypeFilter` (array): 限定 view type，例: ['FloorPlan', 'CeilingPlan', 'Section', 'Elevation', 'ThreeD']

### `batch_create_rc_filled_region` (~85 tokens)

Batch-create RC filled-region stickers across multiple views

Batch-create RC filled-region stickers across multiple views, or across every placed viewport on the given sheets.

Input parameters:

- `filledRegionTypeName` (string): Name of the FilledRegionType to use for the stickers.
- `sheetNumbers` (array): Sheet numbers whose placed viewports will each be processed.
- `viewIds` (array): Target view ElementIds to process.

### `batch_create_wall_sections` (~438 tokens)

批次建立牆面套管剖面：以當前視圖的 BoundingBox 範圍過濾指定連結模型中的牆，再比對所有 MEP 連結模型的管

批次建立牆面套管剖面：以當前視圖的 BoundingBox 範圍過濾指定連結模型中的牆，再比對所有 MEP 連結模型的管附件（圓形套管）與風管附件（矩形開口），只對有開孔的牆建立剖面視圖。

Input parameters:

- `autoCrop` (boolean): 依開孔範圍自動裁剪剖面框，預設 true
- `directionLogic` (string): 剖面觀察方向，預設 auto（自動找房間側）
- `marginHorizontal` (number): 剖面左右留白（mm），預設 500
- `marginVertical` (number): 剖面上下留白（mm），預設 200
- `minWallLength` (number): 最短牆長過濾（mm），過短的牆略過，預設 500
- `scale` (number): 視圖比例尺，預設 50（1:50）
- `sequentialNaming` (boolean): 啟用流水號命名：依 sortOrder 排序後命名為 {prefix}-001、{prefix}-002…，預設 false（使用牆 ID 作為後綴）
- `sortOrder` (string): 流水號排序方式。x_then_y = 先左後右再由下往上；y_then_x = 先下後上再由左往右；creation = 依建立順序不重排。預設 x_then_y
- `splitLongWalls` (boolean): 相鄰開孔間距 > 3m 時自動分割為多個剖面，預設 true
- `viewNamePrefix` (string): 視圖名稱前綴，預設「牆面套管剖面」
- `wallLinkId` (number, required): 牆所在的連結模型 LinkInstanceId（來自 get_linked_models）

### `batch_set_material` (~344 tokens)

批次修改指定 Type 的材質（複製原材質模式）

批次修改指定 Type 的材質（複製原材質模式）。為每個 Type 的原材質建立複本 '{原名}_{suffix}'，只修改複本的 Appearance Asset（diffuse color），保留 Graphics 顏色與原材質其他屬性。影響 Enscape/V-Ray 等渲染引擎，但平面圖切割填充和 Revit Shaded 3D 維持原材質外觀。牆/樓板只修改 CompoundStructure 最外層（Layer 0），其他層保留。已含 suffix 的材質會被冪等跳過。

Input parameters:

- `color` (object, required): 目標 Appearance diffuse 顏色 RGB (0-255)
- `materialName` (string): 材質名稱 suffix（後綴）。例如 '護眼白_MCP' 會把原材質 '鋼 AISI 1015' 複製成 '鋼 AISI 1015_護眼白_MCP'。預設 'White_MCP'。
- `roughness` (number): Appearance roughness（選填）。0.0=鏡面反射，1.0=完全啞光。若值 > 1 會被當成百分比（除以 100）。不設則維持原值。建議白模用 1.0 避免金屬感反光。
- `typeIds` (array, required): 要修改材質的 Type Element ID 陣列（從 get_types_by_category 取得）

### `batch_set_room_height` (~284 tokens)

批次依房間名稱或用途分組，設定 Room 的 Upper Limit（ROOM_UPPER_LEVEL）與 Limit

批次依房間名稱或用途分組，設定 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 整批還原。

Input parameters:

- `groups` (array, required): 分組規則陣列。每個 group 指定一個房間名稱/用途關鍵字與目標高度(mm)。
- `levelName` (string): 選填：限制只修改某一樓層的 Room。留空則全專案。
- `matchField` (string): 比對欄位：'name' (ROOM_NAME) 或 'department' (ROOM_DEPARTMENT)。預設 'name'。
- `summaryOnly` (boolean): true（預設）=只回計數與錯誤列表，避免 500+ Room 時 payload 爆炸；false=附帶每個 Room 的 OriginalValues 與 Modifications 明細（供 audit）。

### `calculate_exterior_wall_scaffold_perimeter` (~438 tokens)

Reliable scaffold takeoff mode

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.

Input parameters:

- `activeViewOnly` (boolean): Only analyze walls visible in the active view.
- `bridgeEndpointToleranceMm` (number): Endpoint/network tolerance for perimeter bridge wall recovery.
- `endpointToleranceMm` (number): Tolerance used only for reporting connected exterior wall groups.
- `includeCurtainWalls` (boolean): Include curtain walls in the exterior perimeter calculation.
- `includeExcludedWalls` (boolean): Return every excluded wall instead of only the highest-scoring sample.
- `includePerimeterBridgeWalls` (boolean): Add short exterior or retaining walls whose endpoints reconnect to the detected exterior wall network. This catches perimeter walls hidden by adjacent walls in ray tests.
- `levelName` (string): Optional Revit level name. When omitted, the active view filter is used if activeViewOnly is true.
- `maxBridgeWallLengthMm` (number): Maximum wall length eligible for perimeter bridge recovery.
- `minWallHeightMm` (number): Ignore walls whose effective height is below this value. Effective height uses unconnected height first, then top/base constraints, then bounding box height.
- `minWallLengthMm` (number): Ignore very short walls below this length.
- `minimumExposedRatio` (number): Minimum ratio of open-side samples required to classify a wall as exterior.
- `rayAngleDegrees` (number): Fan angle on both sides of each wall normal for finding blocking walls.
- `sampleCount` (number): Number of sample stations tested on each wall. Valid range is clamped to 3-9.
- `scaffoldHeightMm` (number): Optional scaffold height. When provided, the tool also returns perimeter x height area in square meters.
- `searchDepthMm` (number): Optional ray search depth. Defaults to twice the analyzed wall bounding diagonal.
- `selectResult` (boolean): Select detected exterior walls in Revit after calculation so the user can review the result.

### `calculate_grid_bounds` (~120 tokens)

計算給定 X 與 Y 網格範圍的邊界 BoundingBox 座標

計算給定 X 與 Y 網格範圍的邊界 BoundingBox 座標。可指定外擴偏移量 (offset_mm)。

Input parameters:

- `offset_mm` (number): 邊界向外偏移距離 (公釐)，預設 0
- `xGrids` (array): X 軸網格名稱清單 (例如 ['B23', 'B27'])
- `yGrids` (array): Y 軸網格名稱清單 (例如 ['BE'])

### `calculate_room_scaffold_perimeters` (~316 tokens)

Indoor scaffold takeoff mode

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.

Input parameters:

- `excludeKeywords` (array): Room name/number keywords excluded from general scaffold. Defaults include outdoor platforms, terraces, balconies, pipe shafts, and water tanks.
- `excludeLevels` (array): Level suffixes/names excluded from the room scaffold takeoff. Defaults to FN and TF.
- `finishKeywords` (array): Room name/number keywords classified as interior finish scaffold. Defaults include safety stairs, accessible stairs, stairs, elevators, freight elevators, lifts, and passenger elevators.
- `includeRoomDetails` (boolean): Return per-room audit rows.
- `includeUnnamed` (boolean): Whether unnamed placed rooms should be included.
- `level` (string): Optional level name or unambiguous partial level name. When omitted, all placed rooms are considered.
- `levelName` (string): Alias of level.
- `minBoundarySegmentLengthMm` (number): Ignore tiny room boundary fragments shorter than this length.
- `roomIds` (array): Optional explicit Room ElementId list. Overrides level filtering.
- `scaffoldHeightMm` (number): Optional scaffold height. For interior finish scaffold, this is the height used in length x width x height. If omitted, the tool attempts to use room bounding-box height.

### `calculate_selected_detail_line_perimeter` (~132 tokens)

Fast scaffold takeoff mode

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.

Input parameters:

- `includeFamilyGeometry` (boolean): Read measurable curve geometry from selected detail component family instances.
- `includeFilledRegions` (boolean): Include selected filled region boundary curves.
- `minCurveLengthMm` (number): Ignore tiny curve fragments shorter than this length.
- `scaffoldHeightMm` (number): Optional scaffold height. When provided, the tool also returns perimeter x height area in square meters.

### `change_element_type` (~81 tokens)

變更 Revit 元素的類型（例如將牆從 Type A 改為 Type B）

變更 Revit 元素的類型（例如將牆從 Type A 改為 Type B）。

Input parameters:

- `elementId` (number): 元素 ID
- `elementIds` (array): 元素 ID 列表（用於批量變更）
- `typeId` (number, required): 目標類型的 Element ID

### `check_exterior_wall_openings` (~139 tokens)

依據台灣建築技術規則第45條及第110條檢討外牆開口

依據台灣建築技術規則第45條及第110條檢討外牆開口。自動讀取地界線計算距離，以顏色標示違規。

Input parameters:

- `checkArticle110` (boolean): 檢查第110條
- `checkArticle45` (boolean): 檢查第45條
- `colorizeViolations` (boolean): 以顏色標示
- `exportReport` (boolean): 匯出 JSON 報表
- `reportPath` (string): 報表輸出路徑

### `check_floor_effective_openings` (~87 tokens)

無開口樓層判定：檢查樓層外牆有效開口面積是否 ≥ 樓地板面積 1/30

無開口樓層判定：檢查樓層外牆有效開口面積是否 ≥ 樓地板面積 1/30。法源：消防§4 + §28③。

Input parameters:

- `colorize` (boolean): 是否自動上色開口
- `levelName` (string, required): 樓層名稱

### `check_sanitary_fixture_requirements` (~343 tokens)

Calculate sanitary fixture requirements by detecting the bui

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.

Input parameters:

- `areaPerPersonM2` (number): Occupancy density in square meters per person.
- `buildingType` (string): Optional building type / occupancy group hint, such as C-1, C-1 factory, factory, or warehouse. If omitted, the tool detects from level/view/project/room context and defaults to C-1 because this pack…
- `excludeKeywords` (array): Optional extra Room name/number keywords to exclude from occupancy area in addition to stairs, elevators, refuge/shelter, and parking defaults.
- `femaleRatio` (number): Female side of male:female ratio. Default 1.
- `level` (string): Optional level name. If omitted, roomIds or all placed rooms matching filters are used.
- `maleRatio` (number): Male side of male:female ratio. Default 1.
- `roomIds` (array): Optional explicit Room ElementId list. Overrides level/name/number filters.
- `roomNameContains` (string): Optional Room name filter, useful for factory/building scopes such as C-1.
- `roomNumberContains` (string): Optional Room number filter.

### `check_smoke_exhaust_windows` (~171 tokens)

排煙窗檢討：檢查天花板下 80cm 內可開啟窗面積是否 ≥ 區劃面積 2%

排煙窗檢討：檢查天花板下 80cm 內可開啟窗面積是否 ≥ 區劃面積 2%。同時判定無窗居室。法源：建技規§101① + 消防§188。自動上色：綠=全開、黃=折減、紅=固定。

Input parameters:

- `ceilingHeightSource` (string): 天花板高度來源
- `colorize` (boolean): 是否自動上色窗戶
- `excludeKeywords` (array): 非居室排除關鍵字
- `levelName` (string, required): 樓層名稱
- `smokeZoneHeight` (number): 有效帶高度（mm），預設 800

### `check_stair_headroom` (~95 tokens)

檢查樓梯淨高是否符合法規要求（190cm + 裝修厚度）

檢查樓梯淨高是否符合法規要求（190cm + 裝修厚度）

Input parameters:

- `finishThicknessCm` (number): 裝修面厚度 (cm，預設 0)
- `headroomLimitCm` (number): 法規最低淨高需求 (cm，預設 190)
- `stairId` (number, required): 樓梯的 Element ID

### `clear_element_override` (~62 tokens)

清除元素在指定視圖中的圖形覆寫

清除元素在指定視圖中的圖形覆寫。

Input parameters:

- `elementId` (number): 要清除覆寫的元素 ID
- `elementIds` (array): 批次操作
- `viewId` (number): 視圖 ID

### `colorize_clashes` (~147 tokens)

將 detect_clashes 的結果視覺化上色到 CSA 元素

將 detect_clashes 的結果視覺化上色到 CSA 元素。colorScheme 可選 by_csa_category（柱紅/樑橘/板黃/牆藍）、by_system（依 MEP 系統）、by_severity（依貫穿深度嚴重度）。

Input parameters:

- `clashData` (object, required): detect_clashes 的完整回傳物件（含 Clashes 陣列）
- `colorScheme` (string): 配色方案：by_csa_category / by_system / by_severity
- `viewId` (number): 目標視圖 ID；省略則使用當前 active view

### `convert_drafting_to_model_pattern` (~40 tokens)

Convert drafting fill patterns to model fill patterns in the

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` (~521 tokens)

批次複製詳圖項目（DetailCurve、TextNote、FilledRegion、DetailComponent、D

批次複製詳圖項目（DetailCurve、TextNote、FilledRegion、DetailComponent、Dimension）從來源視圖到一或多個目標視圖（同一專案內）。支援 DraftingView 與 model view。

Input parameters:

- `dryRun` (boolean): 若 true 則只回傳要複製的元素統計，不實際複製。
- `elementCategories` (array): 要複製的詳圖項目類別，預設 ["All"]。可指定子集如 ["DetailCurves", "Dimensions"]。Dimensions 包含 Linear/Aligned/Radial/Angular/ArcLength/SpotElevation 等所有尺寸標註類型。
- `fallbackToIndividual` (boolean): true=當批次複製失敗時，自動 fallback 為逐個元素重試，記錄哪些成功哪些失敗（強烈推薦）；false=批次失敗則整批 rollback，回傳 Failed 狀態。Dimension 跨 view 複製常因 host element 引用遺失導致整批 fail，這個參數能自動繞過問題元素只保留可複製的部分。回傳結構新增 Mode（Batch/Individual）、FailedCoun…
- `offset` (object): 複製後的位置偏移（公釐）。預設 {x:0, y:0} 即原位置。
- `preserveGroups` (boolean): true=收集到的 group 成員會被替換成整個 group instance 一起複製，保留 detail group/model group 結構（推薦）；false=group 成員以個別元素複製，丟失 group 結構（舊行為）。注意：preserveGroups=true 時，若 group 內含其他類別的成員（不在 elementCategories 過濾範圍內），那些成員仍會隨…
- `sourceElementIds` (array): 指定要複製的元素 ID 清單（選填）。省略則複製來源視圖中符合 elementCategories 的所有詳圖項目。
- `sourceViewId` (number, required): 來源視圖的 Element ID
- `targetViewIds` (array, required): 目標視圖的 Element ID 陣列

### `copy_sheets_from_file` (~456 tokens)

從來源 .rvt 檔案複製圖紙到目前開啟的專案

從來源 .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 中指定處理方式。

Input parameters:

- `closeAfterCopy` (boolean): 完成後是否關閉來源檔案。預設 true。
- `conflictResolution` (object): 衝突解決設定。當 read_source_file_sheets 偵測到衝突時必須提供。
- `copyDraftingContents` (boolean): 是否複製 DraftingView 的內容（detail lines, text notes 等）。預設 true。
- `copySheetCustomParameters` (boolean): 是否複製 sheet 上的 custom parameters（如 sheet folder/圖集、Discipline、繪圖人、Issue Date 等）。同名 + 同 StorageType 的 writable parameter 會被複製，ElementId 類型跳過（跨文件 ID 不可移植）。預設 true。
- `sheetNumbers` (array): 要複製的圖紙編號清單。省略則複製全部 sheets。
- `sourceFilePath` (string, required): 來源 .rvt 檔案的絕對路徑
- `syncProperties` (object): 控制同步哪些 view 屬性到目標。全部預設 true。
- `viewMatchStrategy` (string): view 匹配策略。match_only: 只使用目標檔已存在的同名 view；match_or_create: 優先匹配，找不到時建立新 view（僅 Tier 1-2）。預設 match_or_create。

### `create_beams_from_dwg` (~455 tokens)

從 CAD 指定圖層建立 Revit 結構樑（必須搭配文字標注圖層）

從 CAD 指定圖層建立 Revit 結構樑（必須搭配文字標注圖層）。
重要：建議按類型分批執行（先大樑、再次樑、再地樑），
每批只處理一個線條圖層與對應的文字圖層。
使用 beamRole 參數標示目前處理的批次。

Input parameters:

- `beamRole` (string): （選填）標示此批次處理的樑角色，例如「大樑」、「次樑」、「地樑」。除回報顯示外，也用於設定樑的結構用途：大樑／地樑→大樑(Girder)、次樑→格柵樑(Joist)。
- `familyName` (string, required): 指定使用的族群名稱（必填），例如「2_RC樑-矩形」。
- `layerName` (string, required): CAD 樑輪廓線條的圖層名稱（必填）
- `textLayerNameX` (string): （名稱對應模式必填其一）CAD 圖面上 X 軸向標注樑名稱（例如水平向的 B1）的文字圖層。文字僅會與 X 軸向的中心線進行配對，避免干擾。
- `textLayerNameY` (string): （名稱對應模式必填其一）CAD 圖面上 Y 軸向標注樑名稱（例如垂直向的 B1）的文字圖層。文字僅會與 Y 軸向的中心線進行配對，避免干擾。
- `typeName` (string): （選填）指定族群類型名稱（例如「60x80」）。有填此參數時為「快速模式」，該批次所有樑都用這個型別建立，忽略文字圖層。沒填時為「名稱對應模式」，依文字標注比對類型。

### `create_column` (~94 tokens)

在指定位置建立柱子

在指定位置建立柱子。

Input parameters:

- `bottomLevel` (string): 底部樓層名稱
- `columnType` (string): 柱類型名稱（選填）
- `topLevel` (string): 頂部樓層名稱（選填）
- `x` (number, required): X 座標（公釐）
- `y` (number, required): Y 座標（公釐）

### `create_columns_from_dwg` (~473 tokens)

從 CAD 指定圖層自動建立 Revit 結構柱或建築柱

從 CAD 指定圖層自動建立 Revit 結構柱或建築柱。會自動：辨識矩形輪廓、建立對應尺寸的族群類型、設定底頂樓層、套用旋轉角度。若指定 familyName，會從該族群的現有類型中依尺寸比對，直接使用原有柱名稱（如 C1、C2）；未指定時自動挑選最適族群並按尺寸建立新類型。執行前建議先呼叫 preview_dwg_columns 確認識別結果。此操作會修改 Revit 模型，無法自動復原，請謹慎使用。

Input parameters:

- `columnType` (string): 柱類型：'structural'（結構柱，OST_StructuralColumns）或 'architectural'（建築柱，OST_Columns）。預設為 structural
- `familyName` (string): （選填）指定使用的族群名稱，例如「B1_RC柱-矩形」。指定後會從該族群現有類型中依尺寸比對，保留 C1/C2/C3 等原有柱名稱；尺寸無對應時才建立新類型。不指定則自動挑選最適族群。
- `layerName` (string, required): CAD 圖層名稱，請從 get_dwg_column_layers 回傳的清單中選擇
- `textLayerName` (string): （選填）CAD 圖面上標注柱名稱（C1、C2 等）文字所在的圖層名稱。指定後會讀取該圖層的 TEXT/MTEXT 文字，依空間距離將最近的標注對應到每根柱，再以標注文字（如 C1）在 familyName 族群中尋找對應類型。DXF 格式可直接讀取；DWG 格式需安裝 ODA File Converter，未安裝時會回傳 labelReadStatus=no_oda 並附上安裝說明，柱仍會建立但…

### `create_corridor_dimension` (~106 tokens)

走廊寬度標註 — 自動偵測房間邊界的平行牆對，建立精確的牆到牆尺寸標註

走廊寬度標註 — 自動偵測房間邊界的平行牆對，建立精確的牆到牆尺寸標註。回傳每個區段的實測寬度與合規判定。

Input parameters:

- `roomId` (number, required): 走廊房間的 Element ID
- `viewId` (number, required): 要建立標註的平面視圖 ID

### `create_curtain_panel_type` (~90 tokens)

建立新的帷幕牆面板類型，可指定顏色（HEX）和透明度

建立新的帷幕牆面板類型，可指定顏色（HEX）和透明度。

Input parameters:

- `baseTypeId` (number): 基礎類型 ID（選填）
- `color` (string, required): 面板顏色（HEX 格式，如 '#5C4033'）
- `typeName` (string, required): 新類型的名稱

### `create_curtain_wall_elevations` (~484 tokens)

批次建立每一道帷幕牆的永久外立面視圖，建立/套用名為「帷幕立面」的視圖樣板，保留 crop box 與 far clip

批次建立每一道帷幕牆的永久外立面視圖，建立/套用名為「帷幕立面」的視圖樣板，保留 crop box 與 far clip depth 可由各視圖自行控制，並回傳方向與 crop 診斷欄位。這個工具建立的是持久成果，不需要 cleanup；除非使用者明確要求清理，AI client 不得呼叫 delete_element 刪除這些 generated views。

Input parameters:

- `applyViewTemplate` (boolean): 是否建立/套用視圖樣板，預設 true。
- `depthMm` (number): 自動深度計算失敗時的 fallback 遠剪裁深度，單位 mm，預設 1200；正常情況會剛好包住帷幕牆所有相關元素，遠端剪裁模式固定為剪裁含線。
- `dryRun` (boolean): 只回報將建立的視圖，不修改模型，預設 false。
- `horizontalMarginMm` (number): crop 左右餘裕，單位 mm，預設 0；剪裁範圍依 elevation view 內目標帷幕元素的 2D 可視範圍計算。
- `nameSeparator` (string): 樓層與標記之間的分隔字串，預設空字串。
- `offsetMm` (number): marker 放在牆外側的距離，單位 mm，預設 1500。
- `placementViewId` (number): 放置 ElevationMarker 的 ViewPlan ElementId；優先於 placementViewName。
- `placementViewName` (string): 放置 ElevationMarker 的 ViewPlan 名稱。
- `scale` (number): 立面視圖比例，預設 50。
- `verticalMarginMm` (number): crop 上下餘裕，單位 mm，預設 0；剪裁範圍依 elevation view 內目標帷幕元素的 2D 可視範圍計算。
- `viewTemplateName` (string): 視圖樣板名稱，預設「帷幕立面」。

### `create_dependent_views` (~124 tokens)

依據指定的母視圖 ID 與 BoundingBox 邊界，批次建立並裁切從屬視圖 (Dependent View)

依據指定的母視圖 ID 與 BoundingBox 邊界，批次建立並裁切從屬視圖 (Dependent View)。

Input parameters:

- `max` (object, required): 裁切框最大座標點
- `min` (object, required): 裁切框最小座標點
- `parentViewIds` (array, required): 母視圖的 Element ID 清單
- `suffixName` (string): 視圖命名後綴 (例如 '-1')。若不指定則自動編號流水號。

### `create_detail_component_type` (~171 tokens)

指定詳圖項目族群，複製並設定新名稱（圖紙編號-圖紙名稱-詳圖名稱），同時自動填寫 詳圖圖號、圖說名稱、詳圖名稱、詳圖編號

指定詳圖項目族群，複製並設定新名稱（圖紙編號-圖紙名稱-詳圖名稱），同時自動填寫 詳圖圖號、圖說名稱、詳圖名稱、詳圖編號 等類型參數。

Input parameters:

- `detailName` (string, required): 詳圖名稱（使用者輸入的新詳圖名稱）
- `detailNumber` (string): 詳圖編號（選填，預設為 '1'）
- `familyName` (string): 要複製的基礎詳圖項目族群名稱（選填，若未提供則預設尋找 'AE-圖號'）
- `sheetNumber` (string, required): 目標圖紙編號（如 A101）

### `create_detail_lines` (~73 tokens)

在視圖上繪製詳圖線（天花板線、有效帶範圍線等），可指定顏色和標籤

在視圖上繪製詳圖線（天花板線、有效帶範圍線等），可指定顏色和標籤。

Input parameters:

- `lines` (array, required): 線段陣列
- `viewId` (number, required): 目標視圖的 Element ID

### `create_dimension` (~130 tokens)

在指定視圖中建立尺寸標註

在指定視圖中建立尺寸標註。

Input parameters:

- `endX` (number, required): 終點 X 座標（公釐）
- `endY` (number, required): 終點 Y 座標（公釐）
- `offset` (number): 標註線偏移距離（公釐）
- `startX` (number, required): 起點 X 座標（公釐）
- `startY` (number, required): 起點 Y 座標（公釐）
- `viewId` (number, required): 要建立標註的視圖 ID

### `create_dimension_by_bounding_box` (~106 tokens)

使用房間邊界框自動標註房間淨尺寸（保證100%覆蓋率）

使用房間邊界框自動標註房間淨尺寸（保證100%覆蓋率）

Input parameters:

- `axis` (string, required): 標註軸向：'X' 或 'Y'
- `offset` (number): 標註線偏移距離 (mm)，默認 500
- `roomId` (number, required): 房間 ID
- `viewId` (number, required): 視圖 ID

### `create_dimension_by_ray` (~124 tokens)

使用射線偵測 (Ray-Casting) 建立尺寸標註

使用射線偵測 (Ray-Casting) 建立尺寸標註。從指定原點向正反方向發射射線，偵測牆面並建立標註。

Input parameters:

- `counterDirection` (object): 反向射線方向向量 (若未提供則自動取反)
- `direction` (object, required): 正向射線方向向量
- `origin` (object, required): 射線原點 (通常為房間中心)
- `viewId` (number, required): 目標視圖 ID

### `create_door` (~154 tokens)

在指定的牆上建立門

在指定的牆上建立門。可指定 sourceElementId 來複製現有門的類型、instance 參數與 facing/hand 朝向。

Input parameters:

- `doorType` (string): 門類型名稱（選填）
- `locationX` (number, required): 門在牆上的位置 X 座標（公釐）
- `locationY` (number, required): 門在牆上的位置 Y 座標（公釐）
- `sourceElementId` (number): 來源門 ID（選填，用於複製其類型、參數與朝向）
- `wallId` (number, required): 要放置門的牆 ID

### `create_facade_from_analysis` (~82 tokens)

根據分析結果批���建立整面立面

根據分析結果批次建立整面立面。在牆面前方批次建立多片 DirectShape 面板，支援多種面板類型和排列模式。

Input parameters:

- `facadeLayers` (object, required): 立面層級定義
- `wallId` (number): 目標牆的 Element ID

### `create_facade_panel` (~400 tokens)

建立單片立面面板（DirectShape）

建立單片立面面板（DirectShape）。支援 5 種幾何：curved_panel、beveled_opening、angled_panel、rounded_opening、flat_panel。

Input parameters:

- `bevelDepth` (number): [beveled_opening] 斜切深度（mm）
- `bevelDirection` (string): [beveled_opening] 斜切方向
- `color` (string): 顏色（HEX）
- `cornerRadius` (number): [rounded_opening] 圓角半徑（mm）
- `curveType` (string): [curved_panel] 曲線類型
- `depth` (number): 弧深/凹入深度（mm），預設 150
- `geometryType` (string): 幾何類型
- `height` (number): 高度（mm），預設 3400
- `name` (string): 面板名稱
- `offset` (number): 距牆偏移（mm），預設 200
- `openingHeight` (number): [opening] 開口高度（mm）
- `openingShape` (string): [rounded_opening] 開口形狀
- `openingWidth` (number): [opening] 開口寬度（mm）
- `positionAlongWall` (number): 沿牆位置（mm）
- `positionZ` (number): 底部 Z 高度（mm）
- `thickness` (number): 板厚（mm），預設 30
- `tiltAngle` (number): [angled_panel] 傾斜角度（度）
- `tiltAxis` (string): [angled_panel] 傾斜軸
- `wallId` (number): 參考牆的 Element ID
- `width` (number): 寬度（mm），預設 800

### `create_filled_region` (~119 tokens)

建立填充區域（如排煙有效帶色塊），可設定顏色和透明度

建立填充區域（如排煙有效帶色塊），可設定顏色和透明度。

Input parameters:

- `color` (object)
- `points` (array, required): 多邊形頂點（至少 3 個點，自動封閉）
- `regionType` (string): 填充區域類型名稱（選填）
- `transparency` (number): 透明度 0-100，預設 50
- `viewId` (number, required): 目標視圖的 Element ID

### `create_finish_legend` (~323 tokens)

在 Revit 中自動建立粉刷／油漆材料填滿圖例

在 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）。

Input parameters:

- `legendName` (string): 新 Legend 視圖名稱（選填，預設『粉刷圖例_yyyyMMdd』）
- `legendTemplateName` (string): 指定要複製的 Legend 名稱（選填，預設取專案第一個 Legend）

### `create_floor` (~72 tokens)

在 Revit 中建立樓板

在 Revit 中建立樓板。需要指定邊界點座標。

Input parameters:

- `floorType` (string): 樓板類型名稱（選填）
- `levelName` (string): 樓層名稱
- `points` (array, required): 樓板邊界點陣列

### `create_floor_plans_from_template` (~200 tokens)

以指定的 FloorPlan 視圖作為範本，在多個 Level 上批次建立新的樓層平面視圖

以指定的 FloorPlan 視圖作為範本，在多個 Level 上批次建立新的樓層平面視圖。複製範本的 ViewFamilyType、View Template、Phase、Phase Filter。適用於補齊缺漏的正式建築圖系列（例：A- 前綴的樓層平面圖）。已存在同名 view 時會跳過並在回傳的 Skipped 清單中記錄原因。

Input parameters:

- `applyViewTemplate` (boolean): 是否套用範本的 View Template。預設 true。
- `creations` (array, required): 要建立的視圖清單；每一項指定 Level 名稱與新視圖名稱
- `templateViewId` (number, required): 要複製設定的範本 FloorPlan 視圖 ElementId（例：A-十層平面圖）

### `create_legends` (~297 tokens)

⚠️ 若目的是把 Excel 內容繪製到 Revit view，**請改用 `import_excel_to_draft

⚠️ 若目的是把 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）。

Input parameters:

- `duplicateMode` (string): 複製模式：empty=只複製空 view（純框線/文字場景）；withDetailing=連同詳圖元件一起複製（預設）。
- `names` (array, required): 要建立的 legend 視圖名稱清單，例如 ['A01','A02']
- `seedName` (string): 指定 seed legend 名稱（選填）。未指定時優先找名稱以 _SEED_ 開頭的 legend，找不到再退到任一 legend。

### `create_level` (~116 tokens)

在 Revit 中建立一個新的樓層 (Level)

在 Revit 中建立一個新的樓層 (Level)。指定標高（公釐）與可選名稱；若名稱已存在 Revit 會自動附加尾號。

Input parameters:

- `elevation` (number, required): 樓層標高（公釐，會自動轉成 Revit 內部單位 feet）
- `name` (string): 樓層名稱（選填，例如 '3F'、'RF'）。未填則使用 Revit 預設名稱

### `create_parallel_section_view` (~411 tokens)

依牆面開孔位置自動建立平行剖面視圖

依牆面開孔位置自動建立平行剖面視圖。自動偵測牆上的套管族群，以開孔群組為單位裁剪剖面範圍；支援長牆分割（相鄰開孔 > 3m 則各自建立獨立剖面）、房間方向自動判定。無開孔時建立整面牆的全寬剖面。

Input parameters:

- `autoCrop` (boolean): 是否依開孔實際範圍自動裁剪剖面框（上下加 marginVertical，左右加 marginHorizontal）
- `directionLogic` (string): 剖面觀察方向。auto = 自動找房間側朝外看；inside_out = 從內向外；outside_in = 從外向內
- `marginHorizontal` (number): 左右留白（mm），預設 500
- `marginVertical` (number): 上下留白（mm），預設 200
- `offset` (number): 剖面線距牆面的偏移量（mm），預設 1mm（緊貼牆面）
- `scale` (number): 視圖比例尺（如 50 = 1:50），預設 50
- `splitLongWalls` (boolean): 長牆分割：相鄰開孔間距 > 3m 時各自建立獨立剖面視圖
- `viewNamePrefix` (string): 視圖名稱前綴，預設「牆面套管剖面」
- `wallId` (number, required): 目標牆的 Element ID
- `wallLinkId` (number): 牆所在的連結模型 LinkInstanceId（來自 get_linked_models）。主模型的牆不需傳此參數。

### `create_rc_filled_region` (~65 tokens)

Create RC (reinforced-concrete) filled-region stickers in th

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.

Input parameters:

- `filledRegionTypeName` (string): Name of the FilledRegionType to use for the stickers.

### `create_room_filled_regions` (~176 tokens)

Create filled regions covering rooms in a view (e.g. to colo

Create filled regions covering rooms in a view (e.g. to colour/mark rooms), optionally clearing previously created markers and setting colour and transparency.

Input parameters:

- `clearExisting` (boolean): Remove previously created room filled regions (matched by marker) before creating new ones.
- `color` (object): Fill colour as RGB components (0-255).
- `filledRegionTypeName` (string): Name of the FilledRegionType to use.
- `marker` (string): Marker/comment tag written onto created filled regions so they can be cleared later.
- `roomIds` (array): Optional explicit Room ElementId list. When omitted, rooms in the view are used.
- `transparency` (number): Fill transparency, 0-100.
- `viewId` (number): Target view ElementId. Defaults to the active view when omitted.

### `create_section_view` (~116 tokens)

建立剖面視圖，面向指定牆面

建立剖面視圖，面向指定牆面。可用於檢視窗戶與天花板的高度關係。

Input parameters:

- `offset` (number): 剖面距牆偏移（mm），預設 1000
- `scale` (number): 比例尺（如 50 = 1:50），預設 50
- `viewName` (string): 視圖名稱
- `wallId` (number, required): 目標牆的 Element ID

### `create_sheets` (~55 tokens)

依據指定的清單批次建立空的圖紙

依據指定的清單批次建立空的圖紙。

Input parameters:

- `sheets` (array, required): 要建立的圖紙清單
- `titleBlockId` (number, required): 圖框類型的 Element ID

### `create_stair_section_view` (~123 tokens)

建立樓梯法規檢核剖面視圖（自動判斷長向走向以顯示踏板剖面）

建立樓梯法規檢核剖面視圖（自動判斷長向走向以顯示踏板剖面）

Input parameters:

- `offset` (number): 剖面偏移距離（mm，預設 1500）
- `scale` (number): 視圖比例（預設 50）
- `stairId` (number, required): 樓梯的 Element ID
- `viewName` (string): 剖面視圖名稱（預設：樓梯檢核剖面）

### `create_stair_text_note_with_leader` (~137 tokens)

建立帶有引線的文字標註 (專用於樓梯檢核標示違規位置)

建立帶有引線的文字標註 (專用於樓梯檢核標示違規位置)

Input parameters:

- `leaderX` (number, required): 引線指向的 X 座標 (mm)
- `leaderY` (number, required): 引線指向的 Y 座標 (mm)
- `text` (string, required): 標註文字內容
- `viewId` (number, required): 目標視圖的 Element ID
- `x` (number, required): 文字 X 座標 (mm)
- `y` (number, required): 文字 Y 座標 (mm)

### `create_text_note` (~91 tokens)

在視圖上建立文字標註

在視圖上建立文字標註。

Input parameters:

- `text` (string, required): 文字內容
- `textSize` (number): 文字大小（mm），預設 2.5
- `viewId` (number, required): 目標視圖的 Element ID
- `x` (number, required): X 座標（mm）
- `y` (number, required): Y 座標（mm）

### `create_view_schedule` (~88 tokens)

在 Revit 中建立一個新的視圖明細表（Schedule/Quantities）

在 Revit 中建立一個新的視圖明細表（Schedule/Quantities）。可以指定名稱、品類以及要包含的欄位。

Input parameters:

- `category` (string): 品類名稱（如：'Walls', 'Rooms', 'Pipes'）
- `fields` (array): 欄位名稱列表
- `name` (string, required): 明細表名稱

### `create_wall` (~136 tokens)

在 Revit 中建立一面牆

在 Revit 中建立一面牆。需要指定起點、終點座標和高度。

Input parameters:

- `endX` (number, required): 終點 X 座標（公釐）
- `endY` (number, required): 終點 Y 座標（公釐）
- `height` (number): 牆高度（公釐）
- `startX` (number, required): 起點 X 座標（公釐）
- `startY` (number, required): 起點 Y 座標（公釐）
- `wallType` (string): 牆類型名稱（選填）

### `create_window` (~156 tokens)

在指定的牆上建立窗

在指定的牆上建立窗。可指定 sourceElementId 來複製現有窗的類型、instance 參數與 facing/hand 朝向。

Input parameters:

- `locationX` (number, required): 窗在牆上的位置 X 座標（公釐）
- `locationY` (number, required): 窗在牆上的位置 Y 座標（公釐）
- `sourceElementId` (number): 來源窗 ID（選填，用於複製其類型、參數與朝向）
- `wallId` (number, required): 要放置窗的牆 ID
- `windowType` (string): 窗類型名稱（選填）

### `debug_viewport_geometry` (~104 tokens)

診斷工具：dump 一個 viewport 的所有座標資料（boxOutline、cropbox、view origin

診斷工具：dump 一個 viewport 的所有座標資料（boxOutline、cropbox、view origin、scale 等）。用於反推 Revit 內部 cropbox vs viewport 的座標映射規則。指定 viewportId 或 viewId 其中之一。

Input parameters:

- `viewId` (number): View ElementId（會自動找對應 viewport）
- `viewportId` (number): Viewport ElementId（直接指定 viewport）

### `dedup_detail_elements_in_view` (~257 tokens)

找出當前視圖（或指定視圖）中重複的 detail element（同 Type + 位置量化後相同），保留 Detail

找出當前視圖（或指定視圖）中重複的 detail element（同 Type + 位置量化後相同），保留 Detail Group 內的副本，刪除 group 外的副本。涵蓋 DetailComponent / DetailCurve / FilledRegion / TextNote / Dimension。只認 Detail Group（OST_IOSDetailGroups），不認 Model Group。預設 dryRun=true 只列清單；確認後設 dryRun=false 才實際刪除。邊界情形（全部都在 group 中、或全部都不在 group 中）會回報但不動。

Input parameters:

- `categories` (array): 處理的類別清單（選填，預設 ['All']）
- `dryRun` (boolean): true=只列清單不刪除（預設）；false=實際刪除 group 外的重複副本
- `tolerance` (number): 位置比對容差（公釐），預設 1.0
- `viewId` (number): 目標視圖 ID（選填，預設使用當前 active view）

### `delete_element` (~35 tokens)

依 Element ID 刪除 Revit 元素

依 Element ID 刪除 Revit 元素。

Input parameters:

- `elementId` (number, required): 要刪除的元素 ID

### `detect_clashes` (~160 tokens)

執行 MEP 管線（連結模型）與 CSA 結構體（主模型）的碰撞偵測，使用 Curve-to-Solid 策略：MEP

執行 MEP 管線（連結模型）與 CSA 結構體（主模型）的碰撞偵測，使用 Curve-to-Solid 策略：MEP 抽中心線、CSA 保留實體、計算穿透線段。回傳每筆碰撞的入口/出口座標、貫穿長度、截面積、佔用體積，以及依系統/依 CSA 品類的統計摘要。

Input parameters:

- `csaSource` (object): CSA 結構來源（通常為主模型）
- `mepSource` (object, required): MEP 管線來源（通常來自連結模型）
- `options` (object): 運算選項

### `diagnose_curtain_wall_elevation_direction` (~228 tokens)

非破壞診斷指定帷幕牆的立面方向判定流程；以 rollback transaction 建立暫時 ElevationMar

非破壞診斷指定帷幕牆的立面方向判定流程；以 rollback transaction 建立暫時 ElevationMarker/ViewSection，回傳 wall.Orientation、預期 marker 位置、暫時 view 方向與 dot 檢查，不留下視圖或 marker。

Input parameters:

- `includeCropDiagnostics` (boolean): Include non-mutating crop diagnostics for the temporary elevation view. Default: false
- `offsetMm` (number): 暫時 marker 放在 wall.Orientation 側的距離，單位 mm，預設 1500。
- `placementViewId` (number): 放置暫時 ElevationMarker 的 ViewPlan ElementId；優先於 placementViewName。
- `placementViewName` (string): 放置暫時 ElevationMarker 的 ViewPlan 名稱。
- `scale` (number): 暫時立面視圖比例，預設 50。
- `wallId` (number, required): 要診斷的帷幕牆 Wall ElementId。

### `diagnose_curtain_wall_elevation_directions` (~250 tokens)

Batch, non-destructive curtain wall elevation direction diag

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.

Input parameters:

- `includeCropDiagnostics` (boolean): Include non-mutating crop diagnostics for the auto-resolved temporary elevation view. Requires includeTemporaryMarker. Default: false
- `includeTemporaryMarker` (boolean): Create temporary ElevationMarker/ViewSection inside rollback transactions to read ViewDirection. Default: true
- `knownExteriorSideByWallId` (object): Optional truth labels by wall id. Value must be 'api_orientation' or 'opposite_orientation'.
- `offsetMm` (number): Candidate marker offset from wall centerline in millimeters. Default: 1500
- `placementViewId` (number): Optional ViewPlan ElementId used for temporary ElevationMarker placement.
- `placementViewName` (string): Optional ViewPlan name used for temporary ElevationMarker placement.
- `scale` (number): Temporary elevation scale. Default: 50
- `wallIds` (array): Optional curtain wall ElementIds. When omitted, all walls with CurtainGrid != null are diagnosed.

### `door-window-legend-tools` (~326 tokens)

門窗圖例工具

門窗圖例工具。mode=list 列出專案中已使用的門/窗型；mode=create 以 seed Legend 複製生成新圖例；mode=update 更新既有門窗圖例。create/update 會要求使用者明確選擇 layoutDirection、maxPerLine、dimensionTypeId，create 另需 seedLegendViewId，update 另需 legendViewId。

Input parameters:

- `dimensionTypeId` (number): 門窗圖例尺寸標註使用的 DimensionType ID。若缺少，工具會要求先呼叫 list_dimension_types 讓使用者選擇。
- `layoutDirection` (string): create/update 的排列方向。
- `legendViewId` (number): update 要更新的既有 Legend 視圖 ID。若缺少，工具會要求先呼叫 list_legend_views 讓使用者選擇。
- `maxPerLine` (number): create/update 每列或每欄最多放幾個項目，必須大於等於 1。
- `mode` (string, required): list 列出型別；create 建立新 Legend；update 更新既有 Legend。
- `seedLegendViewId` (number): create 使用的 seed Legend 視圖 ID。若缺少，工具會要求先呼叫 list_seeds 讓使用者選擇。
- `targetType` (string): 目標類型：door 產生門圖例，window 產生窗圖例。

### `duplicate_views_with_detailing` (~207 tokens)

Duplicate one or more views with detailing (ViewDuplicateOpt

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.

Input parameters:

- `copyCropFromSource` (boolean): Copy the crop box / crop region from the source view onto the duplicate.
- `setActiveLast` (boolean): Activate the last duplicated view when finished.
- `sourceViewIds` (array): Source view ElementId(s) to duplicate. Accepts aliases 'viewIds' or a single 'sourceViewId'. Required (the tool errors if none resolve).
- `suffix` (string): Name suffix appended when a target name is not supplied for a view.
- `targetNames` (array): Optional new names for the duplicated views, positionally matched to sourceViewIds. Accepts aliases 'newNames' / 'targetName'.

### `export_clash_report` (~134 tokens)

匯出 detect_clashes 結果為報表

匯出 detect_clashes 結果為報表。format 可選 csv、json、both。預設輸出到桌面，檔名含時間戳。

Input parameters:

- `clashData` (object, required): detect_clashes 的完整回傳物件（含 Clashes 陣列）
- `format` (string): 輸出格式：csv / json / both
- `outputPath` (string): 自訂輸出路徑（不含副檔名）；省略則輸出到桌面
- `reportTitle` (string): 報表標題

### `export_families` (~276 tokens)

把專案中已載入的可編輯族群另存為 .rfa 檔到指定資料夾,建立可重用元件庫

把專案中已載入的可編輯族群另存為 .rfa 檔到指定資料夾,建立可重用元件庫。預設匯出管配件(OST_PipeFitting)與管附件(OST_PipeAccessory)。自動依類別建立子資料夾;subFolderBySeries=true 時再依族群名稱系列(CIP/DWV/碳鋼.../)細分。略過系統族群、現地(in-place)與不可編輯族群。

Input parameters:

- `categories` (array): 要匯出的 BuiltInCategory 名稱清單(如 OST_PipeFitting、OST_PipeAccessory)。省略則預設這兩類。
- `outputFolder` (string, required): 輸出根資料夾絕對路徑,例如 C:\Users\xxx\Desktop\MEP管元件庫。不存在會自動建立。
- `overwrite` (boolean): 目標 .rfa 已存在時是否覆寫(預設 true)。
- `subFolderBySeries` (boolean): 是否在類別資料夾下再依族群名稱系列建立子資料夾(預設 false,只依類別分層)。

### `export_smoke_review_excel` (~114 tokens)

匯出排煙窗檢討 Excel 報告（.xlsx），含樓層總覽、房間明細、窗戶明細、改善建議、§101補充檢討（排風量提醒+

匯出排煙窗檢討 Excel 報告（.xlsx），含樓層總覽、房間明細、窗戶明細、改善建議、§101補充檢討（排風量提醒+中央管理室偵測）五個工作表。

Input parameters:

- `ceilingHeightSource` (string)
- `levelName` (string, required): 樓層名稱
- `outputPath` (string): 輸出路徑（選填）

### `flip_element` (~95 tokens)

翻轉指定的 Revit 建築元素（例如門或窗）

翻轉指定的 Revit 建築元素（例如門或窗）。可以選擇翻轉面向(facing)或開向(hand)。

Input parameters:

- `elementId` (number, required): 要翻轉的元素 ID
- `flipType` (string): 翻轉類型: 'facing' (預設，依牆為軸翻轉) 或是 'hand' (左右翻轉)

### `get_active_schema` (~59 tokens)

[Phase 1: Exploration] Get all categories and their element

[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.

Input parameters:

- `viewId` (number): The view Element ID (Optional, defaults to active view)

### `get_active_view` (~33 tokens)

取得目前開啟的視圖資訊，包含視圖名稱、類型、樓層等

取得目前開啟的視圖資訊，包含視圖名稱、類型、樓層等。

### `get_all_grids` (~24 tokens)

取得專案中所有網格線（Grid）的資訊

取得專案中所有網格線（Grid）的資訊。

### `get_all_levels` (~30 tokens)

取得專案中所有樓層的清單，包括樓層名稱和標高

取得專案中所有樓層的清單，包括樓層名稱和標高。

### `get_all_sheets` (~30 tokens)

取得專案中所有的圖紙清單，包含 ID、編號與名稱

取得專案中所有的圖紙清單，包含 ID、編號與名稱。

### `get_all_views` (~90 tokens)

取得專案中所有視圖的清單，包含平面圖、天花圖、3D視圖、剖面圖等

取得專案中所有視圖的清單，包含平面圖、天花圖、3D視圖、剖面圖等。

Input parameters:

- `levelName` (string): 樓層名稱篩選（選填）
- `viewType` (string): 視圖類型篩選：FloorPlan、CeilingPlan、ThreeD、Section、Elevation

### `get_category_fields` (~65 tokens)

[Phase 2: Alignment] Get all parameter names for a specific

[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.

Input parameters:

- `category` (string, required): The category internal name (e.g., 'Walls', 'Windows')

### `get_column_types` (~37 tokens)

取得專案中所有可用的柱類型

取得專案中所有可用的柱類型。

Input parameters:

- `material` (string): 篩選材質（選填）

### `get_connector_info` (~64 tokens)

取得 MEP 元素（管、風管、線管等）的接頭（Connector）資訊，包含座標、連接狀態、形狀等

取得 MEP 元素（管、風管、線管等）的接頭（Connector）資訊，包含座標、連接狀態、形狀等。

Input parameters:

- `elementId` (number, required): 要查詢的 MEP 元素 ID

### `get_curtain_panel_types` (~31 tokens)

取得專案中所有可用的帷幕牆面板類型

取得專案中所有可用的帷幕牆面板類型。

### `get_curtain_wall_info` (~70 tokens)

取得帷幕牆詳細資訊，包含 Grid 排列、面板尺寸、面板類型分佈等

取得帷幕牆詳細資訊，包含 Grid 排列、面板尺寸、面板類型分佈等。

Input parameters:

- `elementId` (number): 帷幕牆的 Element ID（選填，若不指定則使用目前選取的元素）

### `get_detail_components` (~84 tokens)

查詢專案中的詳圖元件（Detail Components）實例

查詢專案中的詳圖元件（Detail Components）實例。可依族群名稱篩選，回傳每個實例的 ID、族群名稱、類型名稱、所屬視圖及參數。

Input parameters:

- `familyName` (string): 族群名稱篩選（選填，模糊比對）

### `get_dwg_beam_layers` (~87 tokens)

掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱，回傳圖層清單並自動推薦可能包含樑、標註文字的圖層

掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱，回傳圖層清單並自動推薦可能包含樑、標註文字的圖層。使用前請確認 Revit 已開啟平面視圖且已匯入 CAD 檔案。

### `get_dwg_column_layers` (~80 tokens)

掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱，回傳圖層清單並自動推薦可能包含柱子的圖層

掃描目前 Revit 平面視圖中所有 CAD 匯入/連結的圖層名稱，回傳圖層清單並自動推薦可能包含柱子的圖層。使用前請確認 Revit 已開啟平面視圖且已匯入 CAD 檔案。

### `get_element_geometry` (~145 tokens)

抽取元素的幾何資訊，支援主模型或連結模型元素

抽取元素的幾何資訊，支援主模型或連結模型元素。geometryType 可選 centerline（中心線）、boundingbox（範圍盒）、solid（實體統計）、all（全部）。連結模型的座標會套用 Transform。

Input parameters:

- `applyTransform` (boolean): 是否套用連結模型 Transform
- `elementId` (number, required): 元素 ID
- `geometryType` (string): 幾何類型：centerline / boundingbox / solid / all
- `linkInstanceId` (number): 若為連結模型元素，需提供連結實體 ID（選填）

### `get_element_info` (~37 tokens)

取得指定元素的詳細資訊，包括參數、幾何資訊等

取得指定元素的詳細資訊，包括參數、幾何資訊等。

Input parameters:

- `elementId` (number, required): 元素 ID

### `get_field_values` (~67 tokens)

[Optional Phase 2.5] Get the distribution of existing values

[Optional Phase 2.5] Get the distribution of existing values for a specific parameter.

Input parameters:

- `category` (string, required): The category internal name
- `fieldName` (string, required): The parameter name
- `maxSamples` (number): Max samples to analyze (Default: 500)

### `get_furniture_types` (~42 tokens)

取得專案中已載入的家具類型清單

取得專案中已載入的家具類型清單。

Input parameters:

- `category` (string): 家具類別篩選（選填）

### `get_line_styles` (~34 tokens)

取得目前專案中可用的線型 (GraphicsStyles)，例如：虛線、細線等

取得目前專案中可用的線型 (GraphicsStyles)，例如：虛線、細線等。

### `get_linked_models` (~72 tokens)

列出當前專案中所有連結模型（RevitLinkInstance），含 LinkInstanceId、檔名、路徑、載入狀態

列出當前專案中所有連結模型（RevitLinkInstance），含 LinkInstanceId、檔名、路徑、載入狀態、Transform 原點。用於碰撞偵測第一步：找到 MEP 連結的 LinkInstanceId。

### `get_project_info` (~37 tokens)

取得目前開啟的 Revit 專案基本資訊，包括專案名稱、建築物名稱、業主等

取得目前開啟的 Revit 專案基本資訊，包括專案名稱、建築物名稱、業主等。

### `get_room_daylight_info` (~69 tokens)

取得房間的採光資訊，包含居室面積、外牆開口面積、採光比例

取得房間的採光資訊，包含居室面積、外牆開口面積、採光比例。用於建築技術規則居室採光檢討。

Input parameters:

- `level` (string): 樓層名稱（選填）

### `get_room_door_counts` (~163 tokens)

Count doors by room

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.

Input parameters:

- `includeDoorDetails` (boolean): Whether to include door-level detail rows under each room.
- `includeUnnamed` (boolean): Whether unnamed placed rooms should be included.
- `level` (string): Optional level name or unambiguous partial level name. If omitted, all placed rooms are considered.
- `primaryRoomSource` (string): Which Revit door room relationship counts as the primary room. Default toRoom counts each door once using ToRoom, then falls back to FromRoom.
- `roomIds` (array): Optional explicit Room ElementId list. Overrides level filtering for rooms.

### `get_room_info` (~59 tokens)

取得房間詳細資訊，包含中心點座標和邊界範圍

取得房間詳細資訊，包含中心點座標和邊界範圍。

Input parameters:

- `roomId` (number): 房間 Element ID（選填）
- `roomName` (string): 房間名稱（選填）

### `get_room_surface_areas` (~570 tokens)

計算房間內部表面積（牆面、地板、天花板），支援門窗開口扣除

計算房間內部表面積（牆面、地板、天花板），支援門窗開口扣除。即使模型中無實體天花板或地板元素，仍會以房間平面面積估算。回傳含 EstimatedSurfaces 欄位標示哪些為估算值。用於材料估算、塗裝面積計算、聲學分析。啟用 includeFinishLayers 可偵測房間內非邊界粉刷層，自動寫入房間飾面參數、建立明細表、匯出 Excel。【兩次呼叫工作流程】當 includeFinishLayers=true 時，建議分兩次呼叫：第一次不帶 defaultXxxFinish 參數，取得分析結果後檢查哪些房間/表面缺少粉刷層（FloorFinishLayers / CeilingFinishLayers / Breakdown.FinishLayers 為 null），詢問使用者要統一填入什麼預設類型標記（地板/牆面/天花各一種，留空=不填），再以 defaultFloorFinish / defaultWallFinish / defaultCeilingFinish 參數第二次呼叫產出最終明細表與 Excel。

Input parameters:

- `defaultCeilingFinish` (string): 未偵測到天花粉刷層時的預設類型標記（Type Mark）。留空表示不填。
- `defaultFloorFinish` (string): 未偵測到地板粉刷層時的預設類型標記（Type Mark）。留空表示不填。
- `defaultWallFinish` (string): 未偵測到牆面粉刷層時的預設類型標記（Type Mark）。留空表示不填。
- `includeBreakdown` (boolean): 是否包含各牆面詳細資訊（預設 true）
- `includeFinishLayers` (boolean, required): 是否偵測房間內的粉刷層/面飾層並建立明細表、匯出 Excel。必須明確指定 true 或 false。
- `level` (string): 樓層名稱 — 計算該層所有房間（選填）
- `outputPath` (string): Excel 匯出路徑（選填，預設為專案目錄）
- `roomId` (number): 房間 Element ID（選填）
- `roomName` (string): 房間名稱篩選（選填）
- `subtractOpenings` (boolean): 是否扣除門窗開口面積（預設 true）

### `get_room_window_counts` (~162 tokens)

Count windows by room

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.

Input parameters:

- `includeUnnamed` (boolean): Whether unnamed placed rooms should be included.
- `includeWindowDetails` (boolean): Whether to include window-level detail rows under each room.
- `level` (string): Optional level name or unambiguous partial level name. If omitted, all placed rooms are considered.
- `primaryRoomSource` (string): Which Revit window room relationship counts as the primary room. Default toRoom counts each window once using ToRoom, then falls back to FromRoom.
- `roomIds` (array): Optional explicit Room ElementId list. Overrides level filtering for rooms.

### `get_rooms_by_level` (~81 tokens)

取得指定樓層的所有房間清單，包含名稱、編號、面積、用途等

取得指定樓層的所有房間清單，包含名稱、編號、面積、用途等。可用於容積檢討。

Input parameters:

- `includeUnnamed` (boolean): 是否包含未命名的房間
- `level` (string, required): 樓層名稱（如：1F、Level 1）

### `get_selected_elements` (~64 tokens)

取得使用者目前在 Revit 中選取的所有元素的基本資訊（ID、名稱、品類）

取得使用者目前在 Revit 中選取的所有元素的基本資訊（ID、名稱、品類）。若是視圖或剖面標記，會一併回傳 Origin (X,Y,Z) 供空間排序使用。

### `get_sheet_viewport_details` (~102 tokens)

取得指定圖紙上所有視埠的詳細資訊，包含中心點座標、邊界框（MinX/MinY/MaxX/MaxY）、寬度與高度（mm）

取得指定圖紙上所有視埠的詳細資訊，包含中心點座標、邊界框（MinX/MinY/MaxX/MaxY）、寬度與高度（mm）。若不指定 sheetId，則使用當前作用視圖（必須是圖紙）。

Input parameters:

- `sheetId` (number): 圖紙的 Element ID（選填，不指定則使用當前作用圖紙）

### `get_stair_actual_width` (~53 tokens)

取得樓梯梯段的真實實測寬度（透過 StairsRun.ActualRunWidth 屬性）

取得樓梯梯段的真實實測寬度（透過 StairsRun.ActualRunWidth 屬性）

Input parameters:

- `stairId` (number, required): 樓梯的 Element ID

### `get_titleblocks` (~27 tokens)

取得專案中所有可用的圖框（Title Blocks）類型

取得專案中所有可用的圖框（Title Blocks）類型。

### `get_types_by_category` (~121 tokens)

查詢指定類別中所有元素類型及其目前材質資訊

查詢指定類別中所有元素類型及其目前材質資訊。回傳每個 Type 的 ID、名稱、族群、實例數量、目前材質。用於在批次修改材質前，讓使用者確認要修改哪些類型。

Input parameters:

- `category` (string, required): 類別名稱：Walls, Floors, Columns, StructuralFraming
- `excludeCurtainWalls` (boolean): 是否排除帷幕牆（預設 true，僅對 Walls 類別有效）

### `get_view_templates` (~50 tokens)

取得專案中所有視圖樣版的完整設定

取得專案中所有視圖樣版的完整設定。可用於視圖樣版比對與整併分析。

Input parameters:

- `includeDetails` (boolean): 是否包含詳細設定

### `get_viewport_map` (~51 tokens)

取得專案中所有視埠（Viewport）與圖紙（Sheet）的對應關係

取得專案中所有視埠（Viewport）與圖紙（Sheet）的對應關係。可用於查詢特定視圖被放置在哪張圖紙上。

### `get_wall_info` (~46 tokens)

取得牆的詳細資訊，包含厚度、長度、高度、位置線座標等

取得牆的詳細資訊，包含厚度、長度、高度、位置線座標等。

Input parameters:

- `wallId` (number, required): 牆的 Element ID

### `get_wall_types` (~46 tokens)

取得專案中所有可用的牆類型，包含名稱和 Element ID

取得專案中所有可用的牆類型，包含名稱和 Element ID。

Input parameters:

- `search` (string): 關鍵字篩選（選填）

### `grade_toposolid_to_floors` (~232 tokens)

依指定樓板底面的水平投影範圍整平 Toposolid；本次僅支援 footprint_only 模式

依指定樓板底面的水平投影範圍整平 Toposolid；本次僅支援 footprint_only 模式。

Input parameters:

- `allowPhaseSetup` (boolean): 是否自動設定整地所需階段（預設 true）：原地形會改為較早階段建立、於目前階段拆除，設計副本建立於目前階段——與 Revit 原生整地行為一致。設為 false 時不修改階段，僅回報所需變更。
- `floorIds` (array, required): 作為整地範圍來源的樓板元素 ID；至少提供一筆
- `mode` (string): 整地模式；本次只接受 footprint_only
- `targetFace` (string): 樓板目標面；本次只接受 bottom
- `toposolidId` (integer, required): 要整地的 Toposolid 元素 ID
- `updateExisting` (boolean): 是否更新既有整地結果；本次只接受 false

### `hide_elements` (~93 tokens)

在指定視圖中隱藏元素

在指定視圖中隱藏元素。使用 View.HideElements() API，支援單一或批次操作。

Input parameters:

- `elementId` (number): 要隱藏的單一元素 ID
- `elementIds` (array): 批次隱藏的元素 ID 陣列
- `viewId` (number): 視圖 ID（若不指定則使用當前視圖）

### `import_excel_to_drafting_views` (~355 tokens)

原子化命令：讀 Excel → 對每張有列印範圍的 worksheet 建立 Drafting View → 畫框線（m

原子化命令：讀 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）。

Input parameters:

- `filePath` (string, required): Excel 檔案絕對路徑（.xlsx）
- `namingPattern` (string): Drafting View 命名樣式，可用 {name} 取代為 worksheet 名。預設 '{name}'。例：'面積計算表_{name}'。
- `overwrite` (boolean): 同名 view 已存在時是否刪除重建。預設 true。
- `sheets` (array): 選填：只匯入指定名稱的 worksheet（不分大小寫）。不給=匯入所有有列印範圍的 sheet。

### `join_wall_tops` (~131 tokens)

將指定樓層的牆，其頂部與上方的樓板、天花板、結構樑做幾何接合 (JoinGeometry)

將指定樓層的牆，其頂部與上方的樓板、天花板、結構樑做幾何接合 (JoinGeometry)。回傳成功接合/已接合跳過/失敗的統計與各樓層明細。常用於樓層牆體建模後的批次頂接合。

Input parameters:

- `levels` (array): 要處理的樓層名稱列表，例如 ["2F", "3F"]。省略或空陣列代表處理全部樓層。

### `link_cad_to_view` (~538 tokens)

將指定的 CAD 檔案（.dwg / .dxf）連結（Link，非 Import）到 Revit 中的指定視圖

將指定的 CAD 檔案（.dwg / .dxf）連結（Link，非 Import）到 Revit 中的指定視圖。預設 thisViewOnly=true，連結僅在該視圖可見；3D 視圖不支援 thisViewOnly。視圖可用 viewId（最精確）或 viewName（會自動 fallback：精確 → 包含；多筆會回傳候選清單）。此操作會修改 Revit 模型，且 Revit 不允許程式化卸除連結，請謹慎使用。

Input parameters:

- `autoCorrectAlmostVHLines` (boolean): 自動將近似水平/垂直的線校正為精準水平/垂直。
- `colorMode` (string): 顏色模式。BlackAndWhite 為 CAD 底圖最常見設定。
- `customScale` (number): 自訂縮放係數（>0），會覆蓋 unit。不填或 ≤0 則沿用 unit。
- `filePath` (string, required): CAD 檔案絕對路徑（.dwg 或 .dxf）
- `orientToView` (boolean): true=方向對齊視圖。需要 thisViewOnly=false。
- `placement` (string): 對齊模式。Origin=自動原點對原點；Centered=置中；Site=站點；Shared=共用座標。
- `referencePoint` (object): 插入點（公釐，會自動轉換為 Revit 內部單位英尺）。
- `thisViewOnly` (boolean): true=連結僅在指定視圖可見（最常見的「連結到指定視圖」語意）；false=全模型可見，View 僅用於 Level 參考。3D 視圖必須設 false。
- `unit` (string): DWG 單位。Default=使用 DWG 內定單位。
- `viewId` (number): 目標視圖的 Element ID（與 viewName 二擇一）
- `viewName` (string): 目標視圖名稱（與 viewId 二擇一）。找不到完全相符時會自動 fallback 到包含搜尋；多筆相符會回傳候選清單。
- `visibleLayersOnly` (boolean): true=只匯入 DWG 中可見的圖層。

### `link_cads_by_floor` (~355 tokens)

批次將多個 CAD 檔連結到對應樓層的平面視圖，並把每個 CAD 平移對齊到指定的 Revit Grid 交點

批次將多個 CAD 檔連結到對應樓層的平面視圖，並把每個 CAD 平移對齊到指定的 Revit Grid 交點。自動從 CAD 檔名抽樓層代碼（支援 FL1/FL2、B1/B1F、RF、1F/2F、地下1樓、3樓 等格式）→ 找名稱含該代碼的 FloorPlan。對齊方式：Link 後做 ElementTransformUtils.MoveElement，translation = (Revit Grid 交點 − CAD 錨點)。強制 Placement=Origin、不旋轉、不支援自訂 referencePoint / orientToView / customScale（會干擾對齊）。全部在單一 Transaction 內，失敗會 commit 已成功的部分並回報每筆狀態。

Input parameters:

- `autoCorrectAlmostVHLines` (boolean)
- `colorMode` (string)
- `gridLabelX` (string, required): Revit Grid 標籤（X 方向那條），例如「X1」或「A」。
- `gridLabelY` (string, required): Revit Grid 標籤（Y 方向那條），例如「Y1」或「1」。
- `items` (array, required): 要連結的 CAD 清單，每筆指定檔案與在 CAD 內的對齊錨點座標。
- `thisViewOnly` (boolean): true=連結只在對應 FloorPlan 可見。
- `unit` (string)
- `visibleLayersOnly` (boolean)

### `list_categories` (~149 tokens)

列舉專案中所有品類 (Category) 及其 CategoryType (Model / Annotation / I

列舉專案中所有品類 (Category) 及其 CategoryType (Model / Annotation / Internal / AnalyticalModel / Invalid)。回傳每個品類的 Name、CategoryType、Id、子品類數量，並附各 CategoryType 的統計。唯讀查詢。

Input parameters:

- `categoryType` (string): 只列出指定 CategoryType 的品類 (Model / Annotation / Internal / AnalyticalModel / Invalid)；省略則全部列出。
- `includeSubcategories` (boolean): 是否連同各品類的子品類名稱一併回傳 (預設 false，僅回傳子品類數量)。

### `list_dimension_types` (~54 tokens)

列出目前 Revit 專案可用的 DimensionType

列出目前 Revit 專案可用的 DimensionType。door-window-legend-tools create/update 需要先由使用者選擇 dimensionTypeName，再把對應 dimensionTypeId 傳回。

### `list_family_symbols` (~90 tokens)

列出專案中的 FamilySymbol（族群類型）

列出專案中的 FamilySymbol（族群類型）。可依名稱篩選，回傳 ID、類型名稱、族群名稱、類別。用於查詢可用的詳圖項目族群。

Input parameters:

- `filter` (string): 名稱篩選關鍵字（選填，模糊比對族群名稱或類型名稱）

### `list_legend_views` (~53 tokens)

列出目前 Revit 專案中的 Legend 視圖與其中的門窗 legend component 數量

列出目前 Revit 專案中的 Legend 視圖與其中的門窗 legend component 數量。door-window-legend-tools update 需要先由使用者選擇 viewName。

### `list_schedules` (~69 tokens)

列出目前專案中所有可讀取的明細表（排除樣板、圖框修訂表）

列出目前專案中所有可讀取的明細表（排除樣板、圖框修訂表）。回傳每張表的 ElementId、名稱、品類、列數與欄數，供儀錶板分類與展開使用。

### `list_seeds` (~108 tokens)

列出 seed 候選資料

列出 seed 候選資料。這版支援 seedType=legend，會回傳所有非樣板 Legend 視圖與其中 Legend Component 數量。此 tool 的結果必須顯示給使用者選擇；assistant 不得根據清單自動決定 seed，也不得在使用者未選 ViewName 前自動重試 create。

Input parameters:

- `seedType` (string, required): seed 類型，目前僅支援 legend。

### `measure_distance` (~153 tokens)

測量兩個點之間的距離

測量兩個點之間的距離。回傳距離（公釐）。

Input parameters:

- `point1X` (number, required): 第一點 X 座標（公釐）
- `point1Y` (number, required): 第一點 Y 座標（公釐）
- `point1Z` (number): 第一點 Z 座標（公釐），預設 0
- `point2X` (number, required): 第二點 X 座標（公釐）
- `point2Y` (number, required): 第二點 Y 座標（公釐）
- `point2Z` (number): 第二點 Z 座標（公釐），預設 0

### `modify_element_parameter` (~54 tokens)

修改 Revit 元素的參數值

修改 Revit 元素的參數值。

Input parameters:

- `elementId` (number, required): 元素 ID
- `parameterName` (string, required): 參數名稱
- `value` (string, required): 新的參數值

### `move_element` (~91 tokens)

移動指定的 Revit 元素（依 dx, dy, dz 指定位移量）

移動指定的 Revit 元素（依 dx, dy, dz 指定位移量）。

Input parameters:

- `dx` (number): X 軸移動距離 (mm)
- `dy` (number): Y 軸移動距離 (mm)
- `dz` (number): Z 軸移動距離 (mm)
- `elementId` (number, required): 要移動的元素 ID

### `move_text_notes_in_views` (~200 tokens)

在多個 DraftingView 中，依文字內容子字串搜尋 TextNote 並批次平移

在多個 DraftingView 中，依文字內容子字串搜尋 TextNote 並批次平移。適用於跨圖面統一調整法規文字位置。

Input parameters:

- `deltaXMm` (number): 水平位移量（mm），正值向右、負值向左。預設 0
- `deltaYMm` (number): 垂直位移量（mm），正值向上、負值向下。預設 0
- `dryRun` (boolean): 設為 true 時僅搜尋並回報結果，不實際移動。預設 false
- `textMatch` (string, required): 要搜尋的 TextNote 文字內容（子字串比對，不區分大小寫）
- `viewNames` (array): 只在指定名稱的 DraftingView 中搜尋（選填，不指定則搜尋全部 DraftingView）

### `move_viewport_titles` (~438 tokens)

批次移動 viewport 標題（label line + text）的位置

批次移動 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 先預覽。

Input parameters:

- `dryRun` (boolean): 若 true 則只計算不實際移動，回傳預期 delta 供確認
- `gapMm` (number): 標題距離 view cropbox 底邊的距離（mm，僅 below-view-center 模式有效）
- `mode` (string): below-view-center: 標題置中於 view 正下方（透過 cropbox 計算）；reset: 還原預設位置
- `sheetNumbers` (array): 限定 sheet 編號清單（與其他識別方式組合使用）
- `viewIds` (array): 目標 View ElementId 清單（會找對應的 viewport）
- `viewNameContains` (string): view 名稱包含此字串（substring match, case-insensitive）
- `viewNames` (array): 目標 view 名稱清單（精確匹配）
- `viewTypeFilter` (array): 限定 view type, 例: ['FloorPlan', 'CeilingPlan']
- `viewportIds` (array): 目標 Viewport ElementId 清單（最精確識別方式）

### `override_element_graphics` (~243 tokens)

在指定視圖中覆寫元素的圖形顯示（填滿顏色、圖樣、線條顏色等）

在指定視圖中覆寫元素的圖形顯示（填滿顏色、圖樣、線條顏色等）。

Input parameters:

- `elementId` (number, required): 要覆寫的元素 ID
- `lineColor` (object): 線條顏色 RGB（可選）
- `patternMode` (string): 填滿層：auto（依視圖類型自動，樓板/屋頂於平面圖自動用表面）、surface（強制表面樣式，立面/剖面/3D 或平面圖樓板）、cut（強制切割樣式，平面圖被剖切的牆/柱/門窗）
- `surfaceFillColor` (object): 表面填滿顏色 RGB (0-255)
- `surfacePatternId` (number): 表面填充圖樣 ID（-1 = 實心填滿）
- `transparency` (number): 透明度 (0-100)
- `viewId` (number): 視圖 ID（若不指定則使用當前視圖）

### `place_furniture` (~87 tokens)

在指定位置放置家具實例

在指定位置放置家具實例。

Input parameters:

- `furnitureType` (string, required): 家具類型名稱
- `level` (string): 樓層名稱
- `rotation` (number): 旋轉角度（度）
- `x` (number, required): X 座標（公釐）
- `y` (number, required): Y 座標（公釐）

### `position_viewports_on_sheet` (~492 tokens)

批次將 viewports 移動到 sheet 上的指定位置

批次將 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。

Input parameters:

- `dryRun` (boolean): 若 true 則只計算不實際移動，回傳預期 delta 供確認
- `offsetDownMm` (number): Y 方向 offset（公釐）。正值往下、負值往上（直覺 sheet layout 慣例）
- `offsetRightMm` (number): X 方向 offset（公釐）。正值往右、負值往左
- `sheetNumbers` (array): 限定 sheet 編號清單（與其他識別方式組合使用）
- `sheetReference` (string, required): Sheet 上的參考點。titleblock-* 用 title block 邊界；sheet-* 用 sheet 印刷區域邊界
- `viewAnchor` (string, required): View 上的錨點（哪一角/中心會被定位到目標位置）
- `viewIds` (array): 目標 View ElementId 清單（會找對應的 viewport）
- `viewNameContains` (string): view 名稱包含此字串（substring match, case-insensitive）
- `viewNames` (array): 目標 view 名稱清單（精確匹配）
- `viewTypeFilter` (array): 限定 view type, 例: ['FloorPlan', 'CeilingPlan']
- `viewportIds` (array): 目標 Viewport ElementId 清單（最精確識別方式）

### `preview_dwg_beams` (~132 tokens)

解析 CAD 指定圖層中的雙線幾何，預覽識別到的樑中心線資訊（區分 X 向與 Y 向）

解析 CAD 指定圖層中的雙線幾何，預覽識別到的樑中心線資訊（區分 X 向與 Y 向）。此工具不會建立任何 Revit 元素，僅回傳解析結果供確認數量。建議在執行 create_beams_from_dwg 前先呼叫此工具確認數量。

Input parameters:

- `layerName` (string, required): CAD 圖層名稱，請從 get_dwg_beam_layers 回傳的清單中選擇樑輪廓圖層

### `preview_dwg_columns` (~121 tokens)

解析 CAD 指定圖層中的矩形幾何，預覽識別到的柱資訊（位置、寬度、深度、旋轉角）

解析 CAD 指定圖層中的矩形幾何，預覽識別到的柱資訊（位置、寬度、深度、旋轉角）。此工具不會建立任何 Revit 元素，僅回傳解析結果供確認。建議在執行 create_columns_from_dwg 前先呼叫此工具確認數量與尺寸。

Input parameters:

- `layerName` (string, required): CAD 圖層名稱，請從 get_dwg_column_layers 回傳的清單中選擇

### `query_elements` (~125 tokens)

查詢 Revit 專案中的元素

查詢 Revit 專案中的元素。可依類別、族群、類型、樓層等條件篩選。

Input parameters:

- `category` (string, required): 元素類別（如：Walls, Rooms, Doors, Windows, Floors, Columns）
- `family` (string): 族群名稱（選填）
- `level` (string): 樓層名稱（選填）
- `maxCount` (number): 最大回傳數量（預設 100）
- `type` (string): 類型名稱（選填）

### `query_elements_with_filter` (~115 tokens)

[Phase 3: Retrieval] Query elements with multi-filter suppor

[Phase 3: Retrieval] Query elements with multi-filter support. NOTE: The 'field' name MUST match names from 'get_category_fields'.

Input parameters:

- `category` (string, required): The category internal name
- `filters` (array): List of filter conditions
- `maxCount` (number): 最大回傳數量 (預設 100)
- `returnFields` (array): 指定要回傳的參數欄位清單
- `viewId` (number): The view Element ID (Optional)

### `query_linked_elements` (~163 tokens)

查詢指定連結模型中的元素，支援品類篩選、參數過濾、自訂回傳欄位

查詢指定連結模型中的元素，支援品類篩選、參數過濾、自訂回傳欄位。座標會自動套用連結模型 Transform，確保與主模型對齊。

Input parameters:

- `category` (string, required): Revit 品類名稱，例如 Pipes、Ducts、CableTrays、Walls、StructuralFraming
- `filters` (array): 參數過濾條件
- `linkInstanceId` (number, required): 連結模型實體 ID（來自 get_linked_models）
- `maxCount` (number): 最大回傳數量
- `returnFields` (array): 額外回傳的參數欄位名（選填）

### `query_walls_by_location` (~96 tokens)

查詢指定座標附近的牆體，回傳牆厚度、位置線與牆面座標

查詢指定座標附近的牆體，回傳牆厚度、位置線與牆面座標。

Input parameters:

- `level` (string): 樓層名稱 (選填)
- `searchRadius` (number, required): 搜尋半徑 (mm)
- `x` (number, required): 搜尋中心 X 座標
- `y` (number, required): 搜尋中心 Y 座標

### `read_excel_tables` (~403 tokens)

⚠️ 若目的是把 Excel 內容繪製到 Revit Drafting View，**請改用 `import_excel

⚠️ 若目的是把 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 的初探階段。

Input parameters:

- `filePath` (string, required): Excel 檔案的絕對路徑（.xlsx）
- `includeBorders` (boolean): 是否回傳每格的 borders 陣列（[top,right,bottom,left]）。預設 false（不回，節省 token）。
- `mode` (string): named_table=讀取每個 worksheet 內的命名 table（預設）；worksheet=每個 worksheet 視為一張表，名稱為 worksheet 名稱。兩種模式皆只讀列印範圍。
- `summary` (boolean): summary 模式：每張表只回 {name, rowCount, colCount, mergeCount, hasNonThinBorders, clippedByPrintArea}，不含 rows/borders。預設 false。
- `tableNames` (array): 選填：只讀取指定名稱的 table（不分大小寫）

### `read_schedule` (~136 tokens)

讀取單一明細表的完整表格內容（欄位標頭 + 逐格 body 資料，忠實呈現 Revit 畫面顯示的文字）

讀取單一明細表的完整表格內容（欄位標頭 + 逐格 body 資料，忠實呈現 Revit 畫面顯示的文字）。用 scheduleId 或 scheduleName 指定。

Input parameters:

- `maxRows` (number): 最多回傳的資料列數（預設 2000，避免回應過大）
- `scheduleId` (number): 明細表 ElementId（建議；由 list_schedules 取得）
- `scheduleName` (string): 明細表名稱（scheduleId 未提供時使用，支援部分比對）

### `read_source_file_sheets` (~201 tokens)

開啟來源 .rvt 檔案並讀取所有圖紙 (sheets)、視埠 (viewports)、視圖 (views) 與 Sch

開啟來源 .rvt 檔案並讀取所有圖紙 (sheets)、視埠 (viewports)、視圖 (views) 與 ScheduleSheetInstance 的 metadata。同時偵測與目標檔（目前開啟的專案）的衝突。回傳結構化 JSON 供 AI agent 預覽與規劃後續 copy_sheets_from_file 操作。不修改任何檔案。

Input parameters:

- `keepOpen` (boolean): 讀取完成後是否保持來源檔開啟（供後續 copy_sheets_from_file 使用，避免重複開啟）。預設 true。
- `sheetNumbers` (array): 要讀取的圖紙編號清單。省略則讀取全部 sheets。
- `sourceFilePath` (string, required): 來源 .rvt 檔案的絕對路徑

### `rejoin_wall_joins` (~56 tokens)

恢復先前由 unjoin_wall_joins / unjoin_column_joins / unjoin_eleme

恢復先前由 unjoin_wall_joins / unjoin_column_joins / unjoin_element_joins 取消的接合關係（共用 pair 儲存，限同一 Revit session）。

### `remap_room_finish_codes` (~301 tokens)

Batch-remap room finish code parameters in one Revit transac

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.

Input parameters:

- `apply` (boolean): Set true to write changes to Revit. When omitted, the tool previews only.
- `dryRun` (boolean): When true, preview planned changes without writing. Defaults to true unless apply=true.
- `fields` (array): Room parameter names to update. Defaults to 樓板塗層, 踢腳, 牆面塗層, 天花板塗層.
- `includeUnplaced` (boolean): Whether unplaced or zero-area rooms should be included.
- `level` (string): Optional level name or unique partial name filter.
- `mapping` (object, required): Required code mapping, e.g. { "F11": "F10", "W4": "W3" }.
- `maxChangedRooms` (number): Maximum changed room detail rows returned in the response. Summary counts are always complete.
- `roomIds` (array): Optional explicit Room ElementId list. Overrides all-room collection before filters are applied.
- `roomName` (string): Optional room name contains filter.
- `roomNumber` (string): Optional room number contains filter.

### `rename_view` (~73 tokens)

重新命名指定的 Revit 視圖（包含剖面圖、平面圖等），此工具不受軟體語系本地化影響

重新命名指定的 Revit 視圖（包含剖面圖、平面圖等），此工具不受軟體語系本地化影響。

Input parameters:

- `newName` (string, required): 新的視圖名稱
- `viewId` (number, required): 視圖的 Element ID

### `renumber_rooms_by_level` (~222 tokens)

Batch-renumber placed rooms on one level in a single Revit t

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.

Input parameters:

- `allowExistingNumberConflicts` (boolean): Allow proposed numbers even when the same room numbers already exist outside the target level.
- `dryRun` (boolean): true previews the planned order without writing to Revit.
- `includeUnnamed` (boolean): Whether unnamed placed rooms should be included.
- `level` (string, required): Level name or unambiguous partial level name, e.g. B1F or C-B1F.
- `parameterName` (string): Optional explicit room number parameter name. If omitted, the Revit built-in room number parameter is used.
- `startNumber` (string, required): First room number to assign, e.g. B134. The trailing digit width is preserved.
- `yToleranceMm` (number): Y-axis grouping tolerance in millimeters for row detection.

### `scale_drafting_view_height` (~177 tokens)

縮放圖紙上所有 DraftingView 中表格的行高（僅 Y 軸），寬度不變

縮放圖紙上所有 DraftingView 中表格的行高（僅 Y 軸），寬度不變。以每個 view 的上邊緣為錨點，將所有 DetailCurve 和 TextNote 的 Y 座標按比例縮放。

Input parameters:

- `scaleFactor` (number): 行高縮放比例（例如 1.1 表示放大到 110%，0.9 表示縮小到 90%）。預設 1.1
- `sheetId` (number): 圖紙的 Element ID（選填，不指定則使用當前作用圖紙）
- `viewNames` (array): 只處理指定名稱的 DraftingView（選填，不指定則處理圖紙上所有 DraftingView）

### `scale_drafting_view_width` (~177 tokens)

縮放圖紙上所有 DraftingView 中表格的寬度（僅 X 軸），高度不變

縮放圖紙上所有 DraftingView 中表格的寬度（僅 X 軸），高度不變。以每個 view 的左邊緣為錨點，將所有 DetailCurve 和 TextNote 的 X 座標按比例縮放。

Input parameters:

- `scaleFactor` (number): 寬度縮放比例（例如 0.9 表示縮小到 90%，1.1 表示放大到 110%）。預設 0.9
- `sheetId` (number): 圖紙的 Element ID（選填，不指定則使用當前作用圖紙）
- `viewNames` (array): 只處理指定名稱的 DraftingView（選填，不指定則處理圖紙上所有 DraftingView）

### `scan_penetrated_beams_in_view` (~62 tokens)

掃描目前視圖中所有被套管（Sleeves）穿過的結構梁

掃描目前視圖中所有被套管（Sleeves）穿過的結構梁。回傳包含梁 ID、連結模型 ID 及穿過該梁的套管數量的清單。

### `select_element` (~68 tokens)

在 Revit 中選取指定的元素，讓使用者可以視覺化確認目標元素

在 Revit 中選取指定的元素，讓使用者可以視覺化確認目標元素。

Input parameters:

- `elementId` (number): 要選取的元素 ID (單選)
- `elementIds` (array): 要選取的元素 ID 列表 (多選)

### `set_active_view` (~34 tokens)

切換至指定的視圖

切換至指定的視圖。

Input parameters:

- `viewId` (number, required): 要切換的視圖 Element ID

### `set_category_visibility` (~110 tokens)

在指定視圖中隱藏或顯示整個類別（同時影響主模型與連結模型）

在指定視圖中隱藏或顯示整個類別（同時影響主模型與連結模型）。使用 View.SetCategoryHidden() API。

Input parameters:

- `category` (string, required): 類別名稱（如 Planting, Furniture, Doors, 或 OST_Planting）
- `hidden` (boolean): true = 隱藏, false = 顯示
- `viewId` (number): 視圖 ID（若不指定則使用當前視圖）

### `set_scope_box_for_views` (~318 tokens)

批次將 ScopeBox 套用到一組 views（透過設定 view 的 VIEWER_VOLUME_OF_INTERE

批次將 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。

Input parameters:

- `scopeBoxName` (string, required): 目標 ScopeBox 的名稱（須與 Revit 中 ScopeBox 名稱完全一致；找不到時會列出所有可用名稱）
- `viewIds` (array): 目標 view ElementId 清單（最精確的識別方式）
- `viewNameContains` (string): view 名稱包含此字串（substring match，case-insensitive）
- `viewNames` (array): 目標 view 名稱清單（精確匹配）
- `viewTypeFilter` (array): 限定 view type, 例: ['FloorPlan', 'CeilingPlan']

### `shift_view_cropbox` (~124 tokens)

在 CropBox 自身座標系中平移視圖的 CropBox

在 CropBox 自身座標系中平移視圖的 CropBox。dx 正值往右、dy 正值往上（單位公釐）。viewId 不指定時使用 active view。

Input parameters:

- `dx_mm` (number): X 方向位移（公釐，正值往右）
- `dy_mm` (number): Y 方向位移（公釐，正值往上）
- `viewId` (number): 目標視圖 ID（選填）；不填則使用當前 active view

### `sync_detail_component_numbers` (~71 tokens)

自動同步所有詳圖元件的類型參數（詳圖圖號、圖說名稱）與其所在圖紙的編號和名稱

自動同步所有詳圖元件的類型參數（詳圖圖號、圖說名稱）與其所在圖紙的編號和名稱。僅更新類型名稱已匹配圖紙編號的元件，不會影響共用標準詳圖。

### `sync_ifc_structural_to_native` (~595 tokens)

Convert structural framing (beams) and columns from a linked

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.

Input parameters:

- `alignColumnTopsToFloorBottom` (boolean): Align created column tops to the bottom of the floor above, detected by ray/geometry probing.
- `apply` (boolean): Actually create the native elements. When false the tool behaves as a preview.
- `autoColumnBaseType` (boolean): Auto-select the column base family type per detected section instead of always using baseColumnType.
- `baseColumnType` (string): Base family type name used as the column template.
- `baseFramingType` (string): Base family type name used as the framing template.
- `baseRcColumnType` (string): Base family type used for RC (rectangular concrete) columns.
- `baseShsColumnType` (string): Base family type used for square-hollow-section (SHS) columns.
- `baseSteelColumnType` (string): Base family type used for steel (H / wide-flange) columns.
- `batchSize` (number): Number of elements created per transaction batch.
- `columnCategory` (string): Override the IFC category treated as columns.
- `dryRun` (boolean): Preview only; analyse and report without modifying the model.
- `framingCategory` (string): Override the IFC category treated as framing.
- `includeColumns` (boolean): Include structural columns in the sync.
- `includeFraming` (boolean): Include structural framing (beams) in the sync.
- `linkInstanceId` (number): ElementId of the linked IFC model instance to read structural elements from.
- `maxColumnTopSearchDistanceMm` (number): Maximum upward search distance (mm) when aligning column tops to the floor bottom.
- `maxColumns` (number): Cap the number of columns processed (omit / 0 for no cap).
- `maxFraming` (number): Cap the number of framing members processed (omit / 0 for no cap).
- `minLengthMm` (number): Ignore framing shorter than this length (mm).
- `replaceExisting` (boolean): Replace native elements previously created by a prior sync.
- `shsColumnMinSizeMm` (number): Minimum square size (mm) for a section to be classified as SHS.
- `shsSquareToleranceMm` (number): Width/depth tolerance (mm) used when deciding if a section is square (SHS).
- `sizeRoundMm` (number): Rounding granularity (mm) applied when matching section sizes to family types.
- `sourceTagPrefix` (string): Prefix written to Mark / Comments to tag synced elements by their IFC source.

### `sync_room_ceiling_finish_from_ceilings` (~306 tokens)

依房間範圍偵測同樓層天花板，讀取天花板類型標記，預覽或寫回房間參數（預設：天花板塗層）以更新粉刷明細表

依房間範圍偵測同樓層天花板，讀取天花板類型標記，預覽或寫回房間參數（預設：天花板塗層）以更新粉刷明細表。

Input parameters:

- `apply` (boolean): false 只預覽，true 實際寫回房間參數。
- `level` (string): 樓層名稱篩選（選填）。
- `multiMatchStrategy` (string): 多個天花板類型命中同一房間時，取最大重疊類型標記或用 + 合併。
- `overwrite` (boolean): 是否覆寫已有值的房間參數。
- `roomIds` (array): 指定房間 ElementId 清單（選填，優先於 level/roomName）。
- `roomName` (string): 房間名稱或房間編號部分匹配（選填）。
- `sampleGrid` (number): 在天花板與房間 BoundingBox 重疊區內取樣確認是否位於房間內，範圍 1-7，預設 3。
- `targetParameter` (string): 要寫入的房間參數名稱。粉刷明細表的天花板欄位預設為「天花板塗層」。

### `sync_sheet_parameters_from_source` (~247 tokens)

補丁工具：為 target 中已存在的 sheets 從 source 同號 sheet 補齊 custom param

補丁工具：為 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。

Input parameters:

- `closeAfterSync` (boolean): 完成後是否關閉來源檔案。預設 true。
- `sheetNumbers` (array): 限定要補的 sheet 編號清單。省略 = 所有 source 中能在 target 找到同號的 sheet。
- `sourceFilePath` (string, required): 來源 .rvt 檔案的絕對路徑

### `trace_stair_geometry` (~59 tokens)

自動分析視圖中的樓梯幾何，偵測被牆、版等物件遮擋的邊緣線段，回傳座標以供後續繪製虛線

自動分析視圖中的樓梯幾何，偵測被牆、版等物件遮擋的邊緣線段，回傳座標以供後續繪製虛線。

### `unhide_elements` (~98 tokens)

在指定視圖中取消隱藏元素

在指定視圖中取消隱藏元素。使用 View.UnhideElements() API，支援單一或批次操作。

Input parameters:

- `elementId` (number): 要取消隱藏的單一元素 ID
- `elementIds` (array): 批次取消隱藏的元素 ID 陣列
- `viewId` (number): 視圖 ID（若不指定則使用當前視圖）

### `unjoin_column_joins` (~142 tokens)

以柱子為中心解除其與鄰近元素的幾何接合，涵蓋牆、樓板、結構樑

以柱子為中心解除其與鄰近元素的幾何接合，涵蓋牆、樓板、結構樑。未指定 columnIds 時預設整個專案所有柱（或 viewId 內的柱）。可用 rejoin_wall_joins 還原（限同一 Revit session）。

Input parameters:

- `columnIds` (array): 要處理的柱子 Element ID 列表（選填，預設為全部柱）
- `viewId` (number): 視圖 ID（選填，未給 columnIds 時用來限縮範圍）

### `unjoin_element_joins` (~235 tokens)

通用版：以任一類別為中心解除其與指定 target 類別的幾何接合

通用版：以任一類別為中心解除其與指定 target 類別的幾何接合。預設 target 為 8 類（Walls、Floors、Columns、StructuralColumns、StructuralFraming、StructuralFoundation、Roofs、Ceilings）。共用 _unjoinedPairs，可用 rejoin_wall_joins 還原（限同一 Revit session）。

Input parameters:

- `elementIds` (array): 要處理的來源 Element ID 列表（選填，預設為該類別全部）
- `sourceCategory` (string, required): 來源類別名稱（不含 OST_ 前綴，例如 StructuralFraming、Walls、Floors）
- `targetCategories` (array): 目標類別名稱陣列（選填，預設 8 類：Walls、Floors、Columns、StructuralColumns、StructuralFraming、StructuralFoundation、Roofs、Ceilings）
- `viewId` (number): 視圖 ID（選填，未給 elementIds 時用來限縮範圍）

### `unjoin_wall_joins` (~76 tokens)

取消牆體與柱子等元素的幾何接合關係

取消牆體與柱子等元素的幾何接合關係。常用於元素上色前的前置作業。

Input parameters:

- `viewId` (number): 視圖 ID
- `wallIds` (array): 要取消接合的牆體 Element ID 列表

### `visualize_detector_results` (~72 tokens)

依照法規判定結果對偵煙探測器上色：綠=PASS、紅=FAIL、橙=WARN（出風口資料缺失）

依照法規判定結果對偵煙探測器上色：綠=PASS、紅=FAIL、橙=WARN（出風口資料缺失）。

Input parameters:

- `results` (array, required): 判定結果陣列，每筆含 DetectorId、IsOk、IsWarn

### `zoom_to_element` (~41 tokens)

將視圖縮放至指定元素，讓使用者可以快速定位

將視圖縮放至指定元素，讓使用者可以快速定位。

Input parameters:

- `elementId` (number, required): 要縮放至的元素 ID

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server#diagnostics

## Score history

- 2026-08-07: 65
- 2026-08-06: 61
- 2026-08-05: 61
- 2026-08-04: 59
- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 17
- 2026-07-31: 5
- 2026-07-30: 43
- 2026-07-28: 43
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/@shuotao/revit-mcp-server
- Socket report: https://socket.dev/npm/package/@shuotao/revit-mcp-server
- Repository: https://github.com/shuotao/REVIT_MCP_study
- Changelog RSS feed: https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server.xml
- Changelog JSON feed: https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server.json
- HTML version of this page: https://verifymcp.io/servers/shuotao-revit-mcp-server/shuotao-revit-mcp-server
