ViewPlan

平面図ビューはレベルに基づいています。平面図ビューには、平面図ビュー、天井伏図ビュー、エリア プラン ビューの 3 種類があります。

平面図ビューを作成する

API を使用して新しいレベルを追加しても、平面図ビューは自動的に追加されません。静的な ViewPlan.Create()メソッドを使用して、新しい床平面図ビューおよび天井平面図ビューを作成します。静的な ViewPlan.CreateAreaPlan()メソッドを使用して、新しいエリア プラン ビューを作成します。

コード領域: 平面図ビューを作成

public static ViewPlan ViewPlan.Create(Document document, ElementId viewFamilyTypeId, ElementId levelId);

public static ViewPlan ViewPlan.CreateAreaPlan(Document document, ElementId areaSchemeId, ElementId levelId);

ViewPlan.Create()の viewFamilyTypeId パラメータは、FloorPlan、CeilingPlan、AreaPlan、または StructuralPlan ViewType である必要があります。levelId パラメータは、平面図ビューが関連付けられているプロジェクトのレベル要素の ID を表します。

次のコードは、特定のレベルに基づいて平面図および天井伏図を作成しています。

コード領域: 平面図と天井伏図ビューを作成

private void CreateViewPlan(Autodesk.Revit.DB.Document document)
{
    FilteredElementCollector collector = new FilteredElementCollector(document);
    IList<Element> viewFamilyTypes = collector.OfClass(typeof(ViewFamilyType)).ToElements();
    ElementId floorPlanId = new ElementId(-1);
    foreach (Element e in viewFamilyTypes)
    {
        ViewFamilyType v = e as ViewFamilyType;

        if (v != null && v.ViewFamily == ViewFamily.FloorPlan)
        {
            floorPlanId = e.Id;
            break;
        }
    }

    ElementId ceilingPlanId = new ElementId(-1);
    foreach (Element e in viewFamilyTypes)
    {
        if (e.Name == "Ceiling Plan")
        {
            ceilingPlanId = e.Id;
            break;
        }
    }

    // Create a Level and a Floor Plan based on it
    double elevation = 10.0;
    Level level1 = Level.Create(document, elevation);
    ViewPlan floorView = ViewPlan.Create(document, floorPlanId, level1.Id);

    // Create another Level and a Ceiling Plan based on it
    elevation += 10.0;
    Level level2 = Level.Create(document, elevation);
    ViewPlan ceilingView = ViewPlan.Create(document, ceilingPlanId, level2.Id);
}

平面図ビューのプロパティ

新しい平面図ビューを作成した後で、ViewDiscipline タイプである Discipline パラメータを使用して、ビューの専門分野を設定できます。オプションには、建築、構造、機械、電気、および給排水衛生設備、コーディネーションが含まれます。

構造伏図ビューの場合、ViewFamilyType.PlanViewDirection プロパティを使用して、ビュー方向を上または下のいずれかに設定できます。これは ViewFamilyType クラスのプロパティですが、プロパティが StructuralPlan ビュー以外のビューにアクセスした場合、例外がスローされる場合があります。

ビュー範囲

平面図ビューのビュー範囲を ViewPlan.GetViewRange()メソッドを使用して取得できます。返された PlanViewRange オブジェクトを使用して、平面が相対的なレベルとそのレベルからの各平面のオフセットを検索できます。これは、Revit ユーザ インタフェースの[ビュー範囲]ダイアログで提供される情報と同じです。

次の例は、上部クリップ面と平面図ビューに関連付けられているオフセットを取得する方法を示しています

コード領域: ビュー範囲に関する情報を取得

private void ViewRange(Document doc, View view)
{
    if (view is ViewPlan)
    {
        ViewPlan viewPlan = view as ViewPlan;
        PlanViewRange viewRange = viewPlan.GetViewRange();

        ElementId topClipPlane = viewRange.GetLevelId(PlanViewPlane.TopClipPlane);
        double dOffset = viewRange.GetOffset(PlanViewPlane.TopClipPlane);
                
        if (topClipPlane.IntegerValue > 0)
        {
            Element levelAbove = doc.GetElement(topClipPlane);
            TaskDialog.Show(view.Name, "Top Clip Plane: " + levelAbove.Name + "\r\nTop Offset: " + dOffset + " ft");
        }
    }
}

平面図ビューの下敷参照図

上部レベルや基準レベルの下敷参照図の範囲を、ViewPlan から取得、設定することができます。基準レベルを下敷参照図の範囲に使用するには、GetUnderlayBaseLevel() メソッドと SetUnderlayBaseLevel() メソッドを使用します。基準レベル ID が InvalidElementId である場合は、基準レベルは下敷参照図として設定されず、いかなる要素も下敷参照図として表示されることはありません。基準レベルを下敷参照図の範囲として設定すると、隣接する最高レベルの高さが下敷参照図の範囲の上限を決定するのに使用されます。前述の最高レベルが基準レベルとして指定されている場合は、下敷参照図の範囲は制限解除され、指定されたレベルの上にあるすべてのレベルが下敷参照図の範囲として設定されます。

上部レベルを下敷参照図の範囲に使用するには、GetUnderlayTopLevel() と SetUnderlayRange() メソッドを使用します。GetUnderlayTopLevel() メソッドが InvalidElementId を返し、下敷参照図の基準レベルが無効なレベルである場合は、下敷参照図の範囲は制限解除され、下敷参照図の基準レベルの上にあるすべてのレベルが下敷参照図の範囲として設定されます。上部レベルを設定するには SetUnderlayRange() メソッドを使用する必要があります。このメソッドは、基準レベルと上部レベル両方の ElementId を使用します。このメソッドでは、上部レベルの高さが基準レベルの高さを上回らない場合に例外が発生します。

下敷参照図内の要素の表示方法をコントロールするには、GetUnderlayOrientation() メソッドと SetUnderlayOrientation() メソッドを使用します。UnderlayOrientation の値は、LookingDown か LookingUp のいずれかです。前者では、下敷参照図の要素は上方から見下ろしているかのように表示され、後者では、下方から見上げているかのように表示されます。

次のコードでは、現在の UnderlayOrientation が LookingDown に設定されており、上部レベルの ID が新しい値とは異なる場合に、下敷参照図の範囲が設定され、UnderlayOrientation が LookingUP に変更されます。

コードの領域: ビューの下敷参照図の範囲を変更

private void ViewUnderlay(ViewPlan planView, ElementId topLevelId, ElementId baseLevelId)
{
    if (planView.GetUnderlayOrientation() == UnderlayOrientation.LookingDown)
    {
        if (planView.GetUnderlayTopLevel() != topLevelId)
        {
            planView.SetUnderlayRange(baseLevelId, topLevelId);
        }

        planView.SetUnderlayOrientation(UnderlayOrientation.LookingUp);
    }
}