既定のタイプ

Revit には、さまざまなカテゴリの既定のタイプが用意されています。同じカテゴリの要素を作成するための関連ツールを呼び出すと、Revit ユーザ インタフェースに既定のタイプが表示されます。Revit API では、Document クラスを使用することで、ファミリ タイプと非ファミリ タイプの既定のタイプが表示されます。

ファミリ タイプ

下の表にあるドキュメント メンバーを使用すると、指定したファミリ カテゴリ ID の既定のタイプにアクセスできます

ドキュメント メソッド 説明
GetDefaultFamilyTypeId() 指定したファミリ カテゴリ ID に関連付けられている既定のファミリ タイプの ID を取得します。
SetDefaultFamilyTypeId() 指定したファミリ カテゴリ ID に関連付けられている既定のファミリ タイプの ID を設定します。
IsDefaultFamilyTypeIdValid() 指定したファミリ カテゴリの ID に対して、ファミリ タイプ ID が既定として設定可能かどうかをチェックします。

さらに、ElementType.IsValidDefaultFamilyType()に ElementType を指定すると、指定したファミリ カテゴリ ID に対して、有効な既定のファミリ タイプかどうかを判断します。

下の例では、構造柱カテゴリの既定のファミリ タイプ ID を取得する方法を表しています。その後、既定のタイプのファミリ記号を取得し、特定の柱に割り当てます。

コード領域: 既定のファミリ タイプ ID を取得
private void AssignDefaultTypeToColumn(Document document, FamilyInstance column)
{
    ElementId defaultTypeId = document.GetDefaultFamilyTypeId(new ElementId(BuiltInCategory.OST_StructuralColumns));

    if (defaultTypeId != ElementId.InvalidElementId)
    {
        FamilySymbol defaultType = document.GetElement(defaultTypeId) as FamilySymbol;
        if (defaultType != null)
        {
            column.Symbol = defaultType;
        }
    }
}

次の例では、最初に有効な既定のファミリ タイプ ID をチェックしてから、指定したドアのドア カテゴリに既定のタイプを設定ます。

コード領域: 既定のファミリ タイプ ID を設定
private void SetDefaultTypeFromDoor(Document document, FamilyInstance door)
{
    ElementId doorCategoryId = new ElementId(BuiltInCategory.OST_Doors);

    // It is necessary to test the type suitability to be a default family type, for not every type can be set as default. 
    // Trying to set a non-qualifying default type will cause an exception
    if (door.Symbol.IsValidDefaultFamilyType(doorCategoryId))
    {
        document.SetDefaultFamilyTypeId(doorCategoryId, door.Symbol.Id);
    }
}

非ファミリ タイプ

下の表のドキュメント メンバーを使用すると、非ファミリ要素タイプの既定のタイプにアクセスできます。

ドキュメント メソッド 説明
GetDefaultElementTypeId() 指定した非ファミリ要素タイプの既定の要素タイプ ID を取得します。
SetDefaultElementTypeId() 指定した非ファミリ要素タイプに既定の要素タイプ ID を設定します。
IsDefaultElementTypeIdValid() 指定した非ファミリ要素タイプの要素タイプ ID が有効かどうかをチェックします。

下の例では、特定の壁が、壁タイプに既定の要素タイプを使用しているかどうかをチェックします。

コード領域: 既定の要素タイプ ID を取得
private bool IsWallUsingDefaultType(Document document, Wall wall)
{
    ElementId defaultElementTypeId = document.GetDefaultElementTypeId(ElementTypeGroup.WallType);
    return (wall.WallType.Id == defaultElementTypeId);
}