要素は次のように分類することもできます。
分類間には何らかの関係があります。次に例を示します。
Element.Category プロパティは要素が属するカテゴリまたはサブカテゴリを表します。これは、要素のタイプを識別するために使用されます。たとえば、壁に配置されているものはすべてカテゴリは壁であるとみなされます。他のカテゴリにはドアや部屋が含まれます。
カテゴリが、最も一般的なクラスです。Document.Settings.Categories プロパティは、ドキュメント内のすべてのカテゴリ オブジェクトが含まれるマップであり、次のように再分類されます。
図 20: カテゴリ
ドキュメントの Setting クラスのカテゴリへのアクセスを取得するには(たとえば、新しいカテゴリ セットを挿入するため)、次のいずれかの方法を使用します。
コード領域 5-1: ドキュメント設定からカテゴリを取得 |
// Get settings of current document Settings documentSettings = document.Settings; // Get all categories of current document Categories groups = documentSettings.Categories; // Show the number of all the categories to the user String prompt = "Number of all categories in current Revit document:" + groups.Size; // get Floor category according to OST_Floors and show its name Category floorCategory = groups.get_Item(BuiltInCategory.OST_Floors); prompt += floorCategory.Name; // Give the user some information MessageBox.Show(prompt, "Revit", MessageBoxButtons.OK); |
カテゴリは次のように使用されます。
図 21: カテゴリによる表示
要素のカテゴリはカテゴリ ID によって決定されます。
コード領域 5-2: 要素のカテゴリを取得 |
Element selectedElement = null; foreach (ElementId id in uidoc.Selection.GetElementIds()) { selectedElement = document.GetElement(id); break; // just get one selected element } // Get the category instance from the Category property Category category = selectedElement.Category; BuiltInCategory enumCategory = (BuiltInCategory)category.Id.IntegerValue; |
ファミリとは、カテゴリ内の要素のクラスです。ファミリは、次の基準により要素をグループ化することができます。
ほとんどのファミリは、コンポーネント ファミリ ファイルです。つまり、それらをプロジェクトにロードしたり、ファミリ テンプレートから作成できます。プロパティ セットとファミリのグラフィックス表現を指定します。
もう 1 つのファミリ タイプはシステム ファミリです。システム ファミリはロードや作成には使用できません。Revit にはシステム ファミリ プロパティやグラフィックス表現が事前に定義されています。これには、壁、寸法、屋根、床(またはスラブ)、レベルが含まれます。
図 22: ファミリ
Element クラスとしての機能に加えて、ファミリはファミリに属する新しいアイテムを作成するためのテンプレートとしても使用できます。
Revit プラットフォーム API では、Family クラスと FamilyInstance の両方がコンポーネント ファミリに属します。その他の要素にはシステム ファミリが含まれます。
Revit プラットフォーム API におけるファミリは次の 3 つのオブジェクトによって表されます。
各オブジェクトは、ファミリ構造で重要な役割を果たします。
Family オブジェクトには次の特性があります。
FamilySymbol オブジェクトはファミリ内の特定のファミリ設定セット(タイプ「コンクリート-長方形梁: 16×32」など)を表します。
FamilyInstance オブジェクトは、Revit プロジェクト内の 1 つのインスタンスを表す FamilySymbol インスタンスです。たとえば、FamilyInstance はプロジェクト内の 16 x 32 コンクリート-長方形梁の 1 つのインスタンスである場合があります。
したがって、次の規則が適用されます。
詳細は、「ファミリ インスタンス」を参照してください。
Revit プラットフォーム API では、通常、記号はインスタンスを定義するために使用される非表示の要素になります。シンボルはユーザ インタフェースではタイプと呼ばれます。
記号は、一連の同様の要素の共有データを含む要素を表します。場合によっては、記号は倉庫から取得できる建築コンポーネント(ドアや窓)を表し、同じ建物内に何度も配置することができます。また、記号がホスト オブジェクト パラメータやその他の要素を含む場合もあります。たとえば、WallType 記号は特定の壁タイプの厚さ、レイヤの数、各レイヤのマテリアル、その他のプロパティを含みます。
FamilySymbol は API 内の記号です。Revit ユーザ インタフェースではファミリ タイプとも呼ばれます。FamilySymbol はファミリ内の要素のクラスであり、すべてのプロパティがまったく同じ値を持ちます。たとえば、32×78 の 6 枚式パネル ドアはすべて 1 つのタイプに属し、24×80 の 6 枚式パネル ドアはすべて別のタイプに属します。ファミリと同じように、FamilySymbol もテンプレートになります。FamilySymbol オブジェクトは ElementType オブジェクトと Element オブジェクトから派生したものです。
インスタンスは、建築(モデル インスタンス)の中や図面シート(注釈インスタンス)上に特定の位置を持つアイテムです。インスタンスは、ElementType の同一コピーの変換されたものを表します。たとえば、建物に特定のタイプの窓が 20 ある場合、1 つの ElementType が 20 のインスタンスを持ちます。ユーザ インタフェースではインスタンスはコンポーネントと呼ばれます。