パラメータ整理(未使用パラメータ削除)
プロジェクト内の削除可能なパラメータを一覧表示し、同名パラメータの特定・値の有無の確認・不要(未使用)パラメータの削除を行う機能です。
長年運用したモデルには、他プロジェクトからのコピーやファミリ読み込み、共有パラメータの追加などで、同じ名前のパラメータが重複したり、値が一度も入力されていない不要なパラメータが溜まっていきます。本機能はそれらを洗い出し、まとめて削除できます。
対象パラメータ
「ユーザーが削除できるすべてのパラメータ」を対象とします。
| 種別 | 内容 |
|---|---|
| プロジェクト | 非共有のプロジェクトパラメータ |
| 共有 | 共有パラメータ(プロジェクトにバインド済み/ファミリ用に読込済み) |
| グローバル | グローバルパラメータ |
※ Revit 標準の組み込み(Built-in)パラメータは削除できないため、一覧には表示されません。 ※ ファミリ内部の定義そのもの(ファミリエディタで作る非共有パラメータ)は別ドキュメント側の管理のため対象外です。ただし、ファミリ内部で使われている共有パラメータはファミリ読み込み時にプロジェクトへ登録されるため一覧に現れ、削除も可能です(=下記の「バインドなし」問題)。
⚠️ 「バインドなし」パラメータの値も必ず確認します(改善済み)
「バインドなし」とは
Revit の「プロジェクトパラメータ」は ParameterBindings(パラメータ↔カテゴリの結び付け)で管理されます。
一方、ファミリ内部で定義された共有パラメータは、そのファミリを読み込むとプロジェクトに
SharedParameterElement として登録されますが、プロジェクトパラメータとしてはバインドされません。
これが一覧の「バインド」列で「なし」「ファミリ内」と表示されるものです。
何が問題だったか
旧バージョンは「バインドされたカテゴリの要素」だけを走査して値の有無を判定していたため、 バインドがないパラメータは走査対象カテゴリが分からず判定をスキップし、 「バインドなし=判定不能」と表示していました。しかし実際には、そのパラメータは ファミリのインスタンス/タイプ上に実在し値も入っています。 このため「バインドなしだから不要だろう」と削除して値ごと失う事故が起き得ました。
改善内容:値は読み取れます
バインドの有無に関係なく、要素側から実際の値を読み取るようにしました。
- モデルを 1 回だけ走査し、「どの要素・タイプがどのパラメータを保持しているか」を索引化します (インスタンスはタイプ単位、タイプはファミリ単位でグループ化し、代表要素 1 つだけパラメータを列挙)。
- その索引を使って、対象パラメータを実際に保持している要素だけを走査し、値を読み取ります
(共有パラメータは GUID、非共有は Definition で取得。どちらも効かない場合のみ
Parameters列挙にフォールバック)。
この結果、値の列は次の 3 状態に分かれます。
| 表示 | 意味 | 削除の安全性 |
|---|---|---|
| 値あり(緑) | 値が入った要素が 1 件以上ある | ❌ 削除すると値が失われる |
| 空(橙) | パラメータを保持する要素はあるが、どれも値が未入力 | ⭕ 値の損失なし |
| 未使用(赤) | どの要素・タイプもこのパラメータを保持していない(定義だけが残っている) | ⭕ 値の損失なし |
さらに「使用箇所」列に、そのパラメータを保持している要素数とカテゴリの内訳を表示します (ツールチップにはファミリ名・要素 ID・実際の値の例も表示)。
安全装置
- 「未使用を全選択」 ボタンは、値の確認が終わっていない状態では動作しません。 また選択されるのは「未使用」(=どの要素も保持していない)だけです。 以前の「バインドなしを全選択」は、値を持つファミリ内パラメータまで巻き込むため廃止しました。
- 削除時、選択に 「値あり」または「未確認」 が含まれていると、対象名と保持要素数を列挙した 警告ダイアログが出ます(既定は「いいえ」)。
- 削除中に Revit が出した警告文はモーダル表示せずに記録し、削除結果ダイアログでまとめて通知します。
それでも残る制約
- バインドなしのパラメータを削除すると、そのパラメータを使うファミリを再読み込みするまで プロジェクト側の定義は復活しません。値は失われます。判定結果が「値あり」のものは削除しないでください。
- ビューフィルタ・タグ・数式からの参照は API の制約で検出できません(後述)。
使い方
- リボン 28 Tools > パラメータ > パラメータ整理 をクリックします。
- ダイアログにプロジェクト内の削除可能なパラメータが一覧表示されます。
- 同名のパラメータはオレンジ色で強調表示されます。
- 「同名のみ」チェックで重複パラメータだけに絞り込めます。「検索」欄(パラメータ名・グループ名)と「種別」(すべて/プロジェクト/共有/グローバル)でも絞り込めます。
- ダイアログを開くと自動で値の有無を判定します(「値の有無を確認」 ボタンで再実行できます)。
- 判定中は進捗バーが表示され、「中止」 でいつでも中断できます。判定中は Revit 本体を操作できません(完了・中止で自動的に戻ります)。
- 結果は一番右の 「値」列 に「値あり」(緑)/「空」(橙)/「未使用」(赤)で表示されます。
- 「使用箇所」列に、そのパラメータを保持している要素数とカテゴリ内訳が表示されます。
- 確認完了後、下部に 「値あり ◯件 / 空 ◯件 / 未使用 ◯件」 のサマリーが表示されます。
- 削除したいパラメータの「選択」チェックを入れます。
- 「空を全選択」/「未使用を全選択」 ボタンで、該当状態のパラメータを一括選択できます(いずれも値の確認が完了している必要があります)。
- 一覧の下の 「全選択」/「選択解除」 ボタンは、フィルターで表示中の行だけを対象に選択/解除します。
- 「選択したパラメータを削除」 を押し、確認ダイアログで はい を選ぶと削除が実行されます。
大容量モデルでのフリーズ対策
Revit API はシングルスレッドのため、値の有無判定を全モデルに対して行うと処理が重くなります。本機能は次の設計でフリーズを回避しています。
- 索引は1回だけ: モデル全体の走査は「使用箇所の索引化」1回のみ。索引は全パラメータで共有するため、パラメータ数が増えても走査回数は増えません。
- 代表要素方式: パラメータの列挙は「タイプごと(インスタンス)」「ファミリごと(タイプ)」の代表要素 1 つだけに対して行います(数千回で済みます)。
- 走査量の最小化: 値判定は、そのパラメータを実際に保持しているグループの要素だけを対象にします。
- 早期終了: 値が1件でも見つかった時点でそのパラメータの判定を打ち切ります。
- 進捗表示と中止: 一定件数ごとに画面へ制御を返すため、進捗バーの更新と「中止」ボタンが常に反応します。
値の有無の判定について
- 文字列パラメータ: 空白のみ・未入力は「空」と判定します。
- ElementId パラメータ: 無効な参照は「空」と判定します。
- 数値・整数(Yes/No 等)パラメータ: 常に値を持つ扱いとし、安全側で「値あり」と判定します(誤って数値パラメータを削除候補にしないため)。
- グローバルパラメータ: 現在値を表示します(自動での未使用判定は行いません)。
- バインドの有無は判定に影響しません: プロジェクトパラメータとしてバインドされていなくても、要素が保持していれば値を読み取って判定します。
並べ替え・絞り込み(Excel風フィルター)
各列見出しの右にある「▾」ボタンをクリックすると、Excel のオートフィルターと同様のメニューが開きます。
- 昇順で並べ替え/降順で並べ替え
- 値のチェックリスト:表示したい値だけにチェックを付けて絞り込み。「(すべて選択)」で一括切替、検索ボックスで値を絞り込み可能。
- OK で適用、クリア でその列のフィルター解除。
- フィルターが掛かっている列は「▾」が青い「▼」に変わります。
上部の「検索」「同名のみ」「種別」フィルターとも併用できます。
パラメータグループの表示
「パラメータグループ」列に、各パラメータが属するグループ(プロパティパレットの見出し。例:「寸法」「識別情報」「その他」)を表示します。
- グループ名は Revit 本体の表示言語で表示されます(日本語版 Revit なら「寸法」、英語版なら「Dimensions」)。
- 列見出しの「▾」から、特定のグループだけに絞り込めます。
- 上部の「検索」欄は、パラメータ名に加えてグループ名でも一致します。
集計表参照の表示
「集計表参照」列には、そのパラメータを集計表(スケジュール)のフィールドで使用している集計表名が表示されます(列挙時に自動取得。全要素走査ではないため軽量です)。削除前に「どの集計表で使われているか」を確認できます。
⚠️ この列が空でも「どこからも参照されていない」とは限りません。以下は Revit API の制約により検出対象外です:
- ビューフィルタ: API がフィルタ規則から参照パラメータを確実に取得できないため未対応
- タグ・数式: 参照情報がファミリ文書内にあり、全ファミリを開く必要があるため(重く実質不可)未対応
このため、削除前の警告ダイアログは引き続き表示されます。
⚠️ 削除時の注意
- 削除は 元に戻せません(Undo 前提ではありません)。
- パラメータの値が空でも、ビューフィルタ・集計表・タグ・数式 などから参照されている場合があります。それらを削除すると機能しなくなることがあるため、削除前に必ず内容をご確認ください。
- 「値あり」と判定されたパラメータは、たとえ「バインドなし(ファミリ内)」であっても削除しないでください。要素に入力済みの値が失われます。
- 心配な場合は、事前にモデルのバックアップ(別名保存)を取ってから実行してください。