次のプロパティは、Revit を使用して作成した各要素に共通のものです。
アクティブなドキュメント内のそれぞれの要素は、ElementId ストレージ タイプによって表される一意の識別子を持ちます。ElementId オブジェクトはプロジェクト全体で使用されます。これは一意の番号であり、要素モデル内で変更されることはないので、外部に保存して要素を必要なときに取得することができます。
Revit プラットフォーム API では、ElementId を直接作成し、その後に一意の整数値を新しい ElementId に関連付けることができます。新しい ElementId の既定の値は 0 です。
コード領域 5-3: ElementId を設定 |
// Get the id of the element Autodesk.Revit.DB.ElementId selectedId = element.Id; int idInteger = selectedId.IntegerValue; // create a new id and set the value Autodesk.Revit.DB.ElementId id = new Autodesk.Revit.DB.ElementId(idInteger); |
ElementId には次のような用途があります。
ElementId を使用して Revit から特定の要素を取得します。Revit Application クラスからアクティブなドキュメントにアクセスし、Document.GetElement(ElementId)メソッドを使用して、指定した要素を取得します。
コード領域 5-4: ElementId を使用 |
// Get the id of the element Autodesk.Revit.DB.ElementId selectedId = element.Id; int idInteger = selectedId.IntegerValue; // create a new id and set the value Autodesk.Revit.DB.ElementId id = new Autodesk.Revit.DB.ElementId(idInteger); // Get the element Autodesk.Revit.DB.Element first = document.GetElement(id); |
ID 番号がプロジェクト内に存在しない場合、取得する要素は null になります。
各要素は、文字列ストレージ タイプで表される UniqueId を持ちます。UniqueId は ElementId に対応します。ただし、ElementId とは異なり、UniqueId は GUID (Globally Unique Identifier)と同様の機能を持ち、別々の Revit プロジェクト間で一意となります。UniqueId を使用すると、Revit プロジェクト ファイルを他の形式に書き出すときに要素を追跡することができます。
コード領域 5-5: UniqueId |
String uniqueId = element.UniqueId; |
建築モデリング プロセスでは、オブジェクトの場所は重要です。Revit の一部のオブジェクトには点の位置があります。たとえば、テーブルには点の位置があります。他のオブジェクトには、位置曲線を表す線分か、まったく位置を表さない線分の位置があります。壁は線分の位置がある要素です。
Revit プラットフォーム API では、大部分の要素に対して Location クラスと位置機能を提供します。たとえば、要素を変換し回転させるための Move()メソッドと Rotate()メソッドがあります。ただし、Location クラスには座標などの情報を取得するためのプロパティはありません。この場合、詳細な位置情報を得たり、オブジェクトの派生物を使用したコントロールのために、位置オブジェクトをサブクラスに似た LocationPoint や LocationCurve にダウンキャストします。
プロジェクト内の要素の物理的な場所を取得すると、オブジェクトのジオメトリを取得する場合に便利です。場所を取得する際には次の規則が適用されます。
Revit プラットフォーム API で、曲線によって決定するとは、1 つまたは複数の曲線によって要素のジオメトリや位置が決定されることを意味します。線や面負荷、壁、フレーム要素など、ほぼすべての解析モデル要素が曲線によって決定されます。
他の要素は LocationCurve や LocationPoint を取得できません。この場合、情報なしで位置を返します。
表 12: 要素の位置情報
位置情報 |
要素 |
LocationCurve |
Wall、Beam、Brace、Structural Truss、LineLoad(ホストなし) |
LocationPoint |
Room、RoomTag、SpotDimension、Group、Column、Mass |
位置のみ |
Level、Floor、一部の Tags、BeamSystem、Rebar、Reinforcement、PointLoad、AreaLoad(ホストなし)、Span Direction(IndependentTag) |
位置なし |
View、LineLoad(ホストあり)、AreaLoad(ホストあり)、BoundaryCondition |
すべての in-place-FamilyInstances やマスなどの一部の FamilyInstance LocationPoints は、作成時に点(0, 0, 0)に指定されます。インスタンスを変換、移動すると、LocationPoint 座標が変更されます。
グループの LocationPoint を変更するには、次のいずれかを実行します。
LocationCurve と LocationPoint の詳細は、「要素を移動する」を参照してください。
レベルは有限の水平面で、屋根、床、天井などのレベルにホストされる、またはレベルベースの要素の参照面となります。Revit プラットフォーム API には Revit でレベル ラインを表すための Level クラスが用意されています。要素がレベルベースである場合は、API を使用して、要素が割り当てられているレベル オブジェクトを取得します。
コード領域 5-6: レベルを割り当て |
// Get the level object to which the element is assigned. if (element.LevelId.Equals(ElementId.InvalidElementId)) { TaskDialog.Show("Revit","The element isn't based on a level."); } else { Level level = element.Document.GetElement(element.LevelId) as Level; // Format the prompt information(Name and elevation) String prompt = "The element is based on a level."; prompt += "\nThe level name is: " + level.Name; prompt += "\nThe level elevation is: " + level.Elevation; // Show the information to the user. TaskDialog.Show("Revit",prompt); } |
柱などの多数の要素が、基本参照としてレベルを使用します。柱のレベルを取得する場合、取得するレベルがベース レベルになります。
レベルは Revit で最も一般的に使用される要素です。Revit プラットフォーム API では、Level クラス フィルタを使用して、すべてのレベルを取得します。
レベルの詳細は、「データムおよび情報要素」を参照してください。
すべての要素には、ユーザが Revit で表示、編集できる一連のパラメータがあります。パラメータは[パラメータ]は[要素プロパティ]ダイアログ ボックスに表示されます(任意の要素を選択して、タイプ セレクタの横の[プロパティ]ボタンをクリック)。たとえば、次の図は部屋のパラメータを表示しています。
図 25: 部屋パラメータ
Revit プラットフォーム API では、各要素オブジェクトには、要素にアタッチされたすべてのプロパティのコレクションであるパラメータ プロパティがあります。コレクションのプロパティの値を変更できます。たとえば、部屋オブジェクト パラメータから部屋の面積を取得できます。また、部屋オブジェクト パラメータを使用して、部屋番号を設定できます。パラメータは、要素オブジェクトに表示されないプロパティ情報にアクセスする手段としても使用できます。
一般的に、各要素パラメータにはパラメータ ID が関連付けられています。パラメータ ID は ElementId クラスによって表されます。ユーザが作成したパラメータの場合、ID がドキュメント内の実際の要素に対応します。ただし、ほとんどのパラメータは組み込みであり、その ID は ElementIds に格納される定数になります。
パラメータは、要素にデータを格納する際の一般的な形式です。Revit プラットフォーム API では、パラメータの取得には、組み込みパラメータ ID の使用をお勧めします。Revit では、BuiltInParameter 列挙型を使用することで、多数の組み込みパラメータを使用できます。
詳細は、「パラメータ」を参照してください。