ビューのグラフィックスの多くの要素と表示オプションが API を介して表示されます。
レイトレーシングのためのビューの表示スタイルを設定すると特別な制限モードとなって、機能が制限されるため、この値には表示スタイルを直接割り当てることはできません。
View.DetailLevel プロパティは ViewDetailLevel 列挙値を使用し、下の図のように Revit ウィンドウの下部の詳細レベル オプションに対応します。
ViewDetailLevel 列挙値には、指定されたビューが詳細レベルを使用しない場合、Undefined が含まれます。
Revit UI の[表示]タブの[グラフィックス]パネルにある[細線]オプションは、ビューに線分を描画する方法をコントロールします。通常は、小さなスケール ビューでモデルを拡大表示すると、要素線分は実際よりも厚く表示されます。[細線]を有効にすると、ズーム レベルに関係なく、すべての線分が 1 つの幅で描画されます。このオプションは、AreThinLinesEnabled と呼ばれるプロパティを持つ ThinLinesOptions ユーティリティ クラスで使用できます。これは Revit セッション全体に影響を与える静的なプロパティです。
View クラスでは一時表示モードをコントロールすることができます。View.EnableRevealHiddenMode()メソッドは、ビューの非表示要素の一時表示モードをオンにします。View.EnableTemporaryAnalyticalDisplayMode()は解析モデル カテゴリのみの一時表示を有効にします。また、View.DisableTemporaryViewMode()は指定された一時表示モードを無効にします。DisableTemporaryViewMode()メソッドは TemporaryViewMode 列挙値を取ります。使用可能なオプションは次のとおりです。
|
メンバー名 |
説明 |
|
RevealHiddenElements |
非表示要素の一時表示モード |
| TemporaryHideIsolate |
一時的な非表示/選択表示モード |
| WorksharingDisplay |
ワークシェアリング表示モードのいずれか |
| AnalyticalModel |
解析モデルを選択表示するモード |
|
Rayrace |
インタラクティブ レイトレーシングでモデルを表示するモード |
View.IsInTemporaryViewMode メソッドを使用すると、ビューが現在指定された TemporaryViewMode であるかどうかを判別します。
ビューは表示要素の追跡を続けます。ビューに表示されるすべてのグラフィックス要素は、ドキュメントとビューの ID で構成される FilteredElementCollector を使用して取得することができます。ただし、セット内の一部の要素は非表示になったり、他の要素によって覆われる場合があります。ビューを回転したり、覆っている要素を削除すると表示することができます。表示されているこれらの要素にアクセスするには、Revit でビューのジオメトリを再構築する必要があります。コードが指定されたビューにこのコンストラクタを初めて使用する場合や、コードがこのコンストラクタを表示設定が変更されたビューに使用する場合は、パフォーマンスが大幅に低下することがあります。
ビュー内の要素はカテゴリごとに表示、非表示になります。
ビューに基づいた FilteredElementCollector には、現在のビューで表示されている要素のみが含まれます。グラフィックスでない要素や非表示になっている要素は取得することができません。ドキュメントに基づいた FilteredElementCollector は、非表示の要素や非グラフィックスの要素を含む、ドキュメント内のすべての要素を取得します。たとえば、空のプロジェクトに既定の 3D ビューを作成する場合、ビューには要素がありませんが、ドキュメントには多数の要素(すべて非表示)が含まれる場合があります。
次のコード サンプルは、アクティブなドキュメントとアクティブなビューの壁カテゴリの要素の数をカウントします。ドキュメントには非グラフィックスの壁カテゴリ要素が含まれるため、アクティブなビュー内の要素の数とドキュメント内の要素の数は異なります。
|
コードの領域: アクティブ ビューの要素をカウント |
private void CountElements(UIDocument uiDoc)
{
StringBuilder message = new StringBuilder();
FilteredElementCollector viewCollector =
new FilteredElementCollector(uiDoc.Document, uiDoc.ActiveView.Id);
viewCollector.OfCategory(BuiltInCategory.OST_Walls);
message.AppendLine("Wall category elements within active View: "
+ viewCollector.ToElementIds().Count);
FilteredElementCollector docCollector = new FilteredElementCollector(uiDoc.Document);
docCollector.OfCategory(BuiltInCategory.OST_Walls);
message.AppendLine("Wall category elements within document: "
+ docCollector.ToElementIds().Count);
TaskDialog.Show("Revit", message.ToString());
}
|
一時表示モードは要素の表示に影響を与えることがあります。View.IsInTemporaryViewMode()メソッドを使用すると、ビューが一時表示モードになっているかどうかを判断できます。メソッド View.IsElementVisibleInTemporaryViewMode()は、指定した表示モードで要素が表示されるかどうかを識別します。これは、TemporaryHideIsolate と AnalyticalModel 表示モードにのみ適用されます。その他のモードの場合は例外が発生します。