# Tuna Revit Toolkit

> Guides building Revit add-ins with Tuna.Revit.Extensions/Infrastructure (commands, ribbon, selection, transactions). Invoke when user asks how to do X with Tuna or is coding a Revit add-in. Use when this capability is needed.

- Skill: `tomevault-io/tuna-revit-toolkit` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/tuna-revit-toolkit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/tuna-revit-toolkit/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/tuna-revit-toolkit

---


# Tuna.Revit.Toolkit Skill

本技能是关于如何在 Revit 二开中使用 Tuna.Revit.Toolkit（常见为 Tuna.Revit.Extensions 与 Tuna.Revit.Infrastructure）完成查询、选择、事务、变换、Ribbon 与命令编写。

Use this skill when the user asks practical “how to do X with Tuna” questions: Document queries, selection, transactions, transforms, ribbon wiring, and command patterns.

## Quick routing / 快速定位

按功能分级把需求路由到 `resources/` / `templates/`，再从对应小节复制最短可运行代码。

### A) 入口与 UI（App / Ribbon / Command）

- App 入口（OnStartup / InitailizeComponents）→ `templates/app.tmpl.cs` + `resources/02-ribbon-wiring.md`
- Ribbon 挂载（Tab / Panel / Button / Icon）→ `resources/02-ribbon-wiring.md`
- Command 骨架 / 命令上下文（UIApplication/UIDocument/Document）→ `templates/command.tmpl.cs` + `resources/03-command-context.md`

### B) 交互与数据（Query / Selection）

- 图元查询 / element query（Document.GetElements...）→ `resources/01-element-query.md`
- 单选 / select one element（SelectElement）→ `resources/04-selection.md`
- 多选 / select multiple elements（SelectElements）→ `resources/04-selection.md`
- 框选 / select by rectangle（SelectElementsByRectangle）→ `resources/04-selection.md`  
  直接参考：[04-selection.md:L89-L109](resources/04-selection.md#L89-L109)
- 点选 / pick point（SelectPoint）→ `resources/04-selection.md`

### C) 修改模型（Transactions / Transforms）

- 事务 / transactions（NewTransaction / NewTransactionGroup）→ `resources/05-transactions.md`
- 变换 / transforms（Move / Rotate / Transform）→ `resources/06-transforms.md`

### D) 进阶（ExternalEvent / Transient / Pitfalls）

- 外部事件 / external event（非 Revit 上下文回到 Revit API）→ `resources/03-command-context.md`（ExternalEvent 段落）
- 临时显示 / transient display（TransientDisplay）→ `resources/06-transforms.md`（TransientDisplay 段落）
- 常见坑 / pitfalls → `resources/07-pitfalls.md`

## Fastest path / 最短上手路径

目标：用最少代码把 “App + Ribbon + Command” 跑起来，然后再叠加 selection / transaction / query。

### 1) Application 入口（Revit 启动时注册 Ribbon）

推荐继承 `TunaApplication` 并实现 `InitailizeComponents()`：
- 可复制骨架：`templates/app.tmpl.cs`
- 详细说明：`resources/02-ribbon-wiring.md`

### 2) Command 入口（从 TunaCommand 拿上下文 + 写业务）

推荐继承 `TunaCommand`，并在 `Execute()` 中拿到 `UIApplication/UIDocument/Document`：
- 可复制骨架：`templates/command.tmpl.cs`
- 详细说明：`resources/03-command-context.md`

### 3) 在事务里修改模型（推荐用 Extensions 的 NewTransaction）

修改模型必须进事务：优先使用 `document.NewTransaction(...)` / `document.NewTransactionGroup(...)`：
- 详细说明：`resources/05-transactions.md`

## How to use / 使用方式

当被调用时，请按以下顺序组织输出：
- 先给出最短路径（最少代码、最少步骤）让用户跑起来
- 再补充可选增强（过滤器、错误处理、多版本兼容、性能）
- 输出可直接粘贴的代码片段，并引用仓库内已有模式（如 `TunaApplication` / `TunaCommand`）

## Patterns / 输出模式（写答案时的默认套路）

- 如果用户问“怎么写插件入口 / Ribbon 怎么挂” → 先给 `TunaApplication + AddRibbonTab + AddRibbonPanel + AddPushButton` 的最短骨架，再补 `CommandButtonAttribute` 与图标路径规则。
- 如果用户问“怎么选 / 框选 / 点选” → 直接用 `SelectionExtensions`，并提醒用 `SelectionResult<T>.SelectionStatus` 判断是否 Cancelled。
- 如果用户问“怎么改模型 / 移动旋转” → 先包 `document.NewTransaction(...)`，再用 Revit API（如 `ElementTransformUtils`），并提示 pinned/constraints/group 失败场景。
- 如果用户问“怎么在非命令上下文改模型” → 先用 `IExternalEventService.PostCommand(...)` 把动作投递回 Revit 上下文。

## Knowledge layout / 知识结构

- 治理入口：`metadata.yaml`（版本、触发、归属等）
- 稳定性基座：`examples/`（输入输出示例）
- 结构一致性：`templates/`（可复用代码骨架）
- 确定性能力：`scripts/`（可执行检查/生成逻辑）
- 知识上下文：`resources/`（按需引用的详细说明）

优先从 `resources/` 选择最相关小节组合答案；需要给出“可复制骨架”时，引用 `templates/`；需要展示期望输出形态时，引用 `examples/`。

---
> Source: [shichuyibushishiwu/Tuna.Revit.Toolkit](https://github.com/shichuyibushishiwu/Tuna.Revit.Toolkit) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-17 -->

