一般的なプロパティ

一般的なプロパティ

次のプロパティは、Revit を使用して作成した各要素に共通のものです。

ElementId

アクティブなドキュメント内のそれぞれの要素は、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 になります。

  • ElementId を使用して、1 つのプロジェクト内の 2 つの要素が等しいかどうかをチェックします。Object.Equal()メソッドの使用は推奨されません。

UniqueId

各要素は、文字列ストレージ タイプで表される UniqueId を持ちます。UniqueId は ElementId に対応します。ただし、ElementId とは異なり、UniqueId は GUID (Globally Unique Identifier)と同様の機能を持ち、別々の Revit プロジェクト間で一意となります。UniqueId を使用すると、Revit プロジェクト ファイルを他の形式に書き出すときに要素を追跡することができます。

コード領域 5-5: UniqueId

String uniqueId = element.UniqueId;
注: ElementId は現在のプロジェクト内でのみ一意です。別々の Revit プロジェクト間で一意ではありません。UniqueId は別々のプロジェクト間で常に一意です。

場所

建築モデリング プロセスでは、オブジェクトの場所は重要です。Revit の一部のオブジェクトには点の位置があります。たとえば、テーブルには点の位置があります。他のオブジェクトには、位置曲線を表す線分か、まったく位置を表さない線分の位置があります。壁は線分の位置がある要素です。

Revit プラットフォーム API では、大部分の要素に対して Location クラスと位置機能を提供します。たとえば、要素を変換し回転させるための Move()メソッドと Rotate()メソッドがあります。ただし、Location クラスには座標などの情報を取得するためのプロパティはありません。この場合、詳細な位置情報を得たり、オブジェクトの派生物を使用したコントロールのために、位置オブジェクトをサブクラスに似た LocationPoint や LocationCurve にダウンキャストします。

プロジェクト内の要素の物理的な場所を取得すると、オブジェクトのジオメトリを取得する場合に便利です。場所を取得する際には次の規則が適用されます。

  • Wall、Beam、Brace は LocationCurve を使用して曲線により決定されます。
  • 曲線によって決定されない Room、RoomTag、SpotDimension、Group、FamilyInstances や、すべての In-Place-FamilyInstances は LocationPoint を使用します。

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

注: その他にも、位置情報がない要素があります。たとえば、LineLoad (ホストあり)や AreaLoad (ホストあり) は位置がありません。

すべての in-place-FamilyInstances やマスなどの一部の FamilyInstance LocationPoints は、作成時に点(0, 0, 0)に指定されます。インスタンスを変換、移動すると、LocationPoint 座標が変更されます。

グループの LocationPoint を変更するには、次のいずれかを実行します。

  • LocationPoint の座標を変更するには、Revit UI でグループの基準点をドラッグします。この場合、グループの位置は変更されず、グループの LocationPoint が変更されます。
  • LocationPoint を変更するには、ElementTransformUtils.MoveElement()メソッドを使用してグループを移動します。こうすることで、グループの位置と 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);
}

柱などの多数の要素が、基本参照としてレベルを使用します。柱のレベルを取得する場合、取得するレベルがベース レベルになります。

注: 参照レベル パラメータを使用して、梁やブレースのレベルを取得します。レベル プロパティからは、参照レベルの情報ではなく null のみを取得します。

レベルは Revit で最も一般的に使用される要素です。Revit プラットフォーム API では、Level クラス フィルタを使用して、すべてのレベルを取得します。

レベルの詳細は、「データムおよび情報要素」を参照してください。

パラメータ

すべての要素には、ユーザが Revit で表示、編集できる一連のパラメータがあります。パラメータは[パラメータ]は[要素プロパティ]ダイアログ ボックスに表示されます(任意の要素を選択して、タイプ セレクタの横の[プロパティ]ボタンをクリック)。たとえば、次の図は部屋のパラメータを表示しています。

図 25: 部屋パラメータ

Revit プラットフォーム API では、各要素オブジェクトには、要素にアタッチされたすべてのプロパティのコレクションであるパラメータ プロパティがあります。コレクションのプロパティの値を変更できます。たとえば、部屋オブジェクト パラメータから部屋の面積を取得できます。また、部屋オブジェクト パラメータを使用して、部屋番号を設定できます。パラメータは、要素オブジェクトに表示されないプロパティ情報にアクセスする手段としても使用できます。

一般的に、各要素パラメータにはパラメータ ID が関連付けられています。パラメータ ID は ElementId クラスによって表されます。ユーザが作成したパラメータの場合、ID がドキュメント内の実際の要素に対応します。ただし、ほとんどのパラメータは組み込みであり、その ID は ElementIds に格納される定数になります。

パラメータは、要素にデータを格納する際の一般的な形式です。Revit プラットフォーム API では、パラメータの取得には、組み込みパラメータ ID の使用をお勧めします。Revit では、BuiltInParameter 列挙型を使用することで、多数の組み込みパラメータを使用できます。

詳細は、「パラメータ」を参照してください。