ViewPlan

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 を表します。

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

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

// Find a floor plan view type
IEnumerable<ViewFamilyType> viewFamilyTypes = from elem in new FilteredElementCollector(document).OfClass(typeof(ViewFamilyType)) 
let type = elem as ViewFamilyType 
where type.ViewFamily == ViewFamily.FloorPlan 
select type;

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

// Create another Level and a Ceiling Plan based on it
// Find a ceiling plan view type
viewFamilyTypes = from elem in new FilteredElementCollector(document).OfClass(typeof(ViewFamilyType))
let type = elem as ViewFamilyType
where type.ViewFamily == ViewFamily.CeilingPlan
select type;

elevation += 10.0;
Level level2 = document.Create.NewLevel(elevation);
ViewPlan ceilingView = ViewPlan.Create(document, viewFamilyTypes.First().Id, 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");
        }
    }
}