1

Revit の「フィルタ」と同様に機能する「スマート フィルタ」を作成しようとしていますが、要素を他の方法でグループ化します(ファミリ タイプ、ワークセット、レベル、さらには「マーク」など)。これらのパラメーターを分離するコレクションを作成するのは簡単ですが、「チェック」したままにした要素のみを含めるように変更された document.selection でプログラムを終了できないようです。

私のプログラムは、「Hide In View」、「Halftone」、「Delete」などの残りの「チェック済み」要素を操作できますが、結果の選択に対して実行できる操作のリストが長すぎて、それらを含めることができませんすべてがダイアログフォームに含まれています - 「選択を設定」というラジオボタンを選択するだけで、選択した要素でプログラムを終了させるオプションが必要です。

私が試してみました:

doc.Selection.Elements.Add(Element *****);
doc.Selection.Elements.Remove(Element *****);

これらは、「オブジェクトのインスタンスではありません」というエラーを返します。

Revit の「フィルタ」を終了すると、結果は変更された選択になります。C# アドインで同じことを行う方法はありますか?

4

2 に答える 2

1

UI ドキュメントでそれを行う必要があります。

SelElementSet selElements = uidoc.Selection.Elements;
selElements.Add(element);

このコードは私にとってはうまくいきます。

于 2014-07-21T10:05:34.203 に答える
0

要素を参照するときに Revit がオブジェクトを直接見ていない可能性があると思います。代わりに elementID を使用してみましたか? または要素.UniqueID?

于 2014-07-19T12:25:47.487 に答える