ViewSheet

ViewSheet

シートにはビューとタイトル ブロックが含まれます。ViewSheet.Create()メソッドを使用してシートビューを作成する場合は、タイトル ブロック ファミリ記号 ID はメソッドに必要なパラメータです。タイトル ブロック ファミリ記号は、FilteredElementCollector を使用して検索することができます。

コード領域: ViewSheet.Create()

public static ViewSheet ViewSheet.Create(Document document, ElementId titleBlockTypeId);

新しく作成されたシートにはビューがありません。Viewport.Create()メソッドを使用してビューを追加します。Viewport クラスを使用して、ビュー シートに通常のビュー、つまり平面図ビュー、立面図ビュー、3 次元ビューを追加します。ビューに集計表を追加するには、代わりに ScheduleSheetInstance.Create()を使用します。

コード領域: 左コーナーに位置合わせした 2 つのビューを追加

public static void PlaceAlignedViewsAtLeftCorner(Document doc)
{
    FilteredElementCollector fec = new FilteredElementCollector(doc);
    fec.OfClass(typeof(ViewPlan));
    var viewPlans = fec.Cast<ViewPlan>().Where<ViewPlan>(vp => !vp.IsTemplate && vp.ViewType == ViewType.CeilingPlan);

    ViewPlan vp1 = viewPlans.ElementAt(0);
    ViewPlan vp2 = viewPlans.ElementAt(1);

    using (Transaction t = new Transaction(doc, "Place on sheet"))
    {
        t.Start();

        // Add two viewports distinct from one another
        ViewSheet vs = ViewSheet.Create(doc, ElementId.InvalidElementId);
        Viewport viewport1 = Viewport.Create(doc, vs.Id, vp1.Id, new XYZ(0, 0, 0));
        Viewport viewport2 = Viewport.Create(doc, vs.Id, vp2.Id, new XYZ(0, 5, 0));

        doc.Regenerate();

        // Calculate the necessary move vector to align the lower left corner
        Outline outline1 = viewport1.GetBoxOutline();
        Outline outline2 = viewport2.GetBoxOutline();
        XYZ boxCenter = viewport2.GetBoxCenter();
        XYZ vectorToCenter = boxCenter - outline2.MinimumPoint;
        XYZ newCenter = outline1.MinimumPoint + vectorToCenter;

        // Move the viewport to the new location
        viewport2.SetBoxCenter(newCenter);

        t.Commit();
    }
}

各シートには、完全な図面セットに一意のシート番号があります。番号は、プロジェクト ブラウザのシート名の前に表示されます。図面セットのシートをクロスリファレンスするには、ビュー タイトルのシート番号を使用すると便利です。SheetNumber プロパティを使用して番号を取得または修正できます。番号は一意である必要があります。そうではなく重複した値に設定した場合には例外がスローされます。

次の例では、シート ビューを作成、印刷する方法を示しています。まず、(この場合はフィルタを使用して)ドキュメントの使用可能なタイトル ブロックを検索して、これを使用してシート ビューを作成します。次に、3D ビューを追加します。このビューは、シートの中央の左下側隅に配置されます。最後に、View.Print()メソッドを呼び出してシートを印刷します。

コード領域: シート ビューを作成

private void CreateSheetView(Autodesk.Revit.DB.Document document, View3D view3D)
{

    // Get an available title block from document
    FilteredElementCollector collector = new FilteredElementCollector(document);
    collector.OfClass(typeof(FamilySymbol));
    collector.OfCategory(BuiltInCategory.OST_TitleBlocks);

    FamilySymbol fs = collector.FirstElement() as FamilySymbol;
    if (fs != null)
    {
        using (Transaction t = new Transaction(document, "Create a new ViewSheet"))
        {
            t.Start();
            try
            {
                // Create a sheet view
                ViewSheet viewSheet = ViewSheet.Create(document, fs.Id);
                if (null == viewSheet)
                {
                    throw new Exception("Failed to create new ViewSheet.");
                }

                // Add passed in view onto the center of the sheet
                UV location = new UV((viewSheet.Outline.Max.U - viewSheet.Outline.Min.U) / 2,
                                        (viewSheet.Outline.Max.V - viewSheet.Outline.Min.V) / 2);

                //viewSheet.AddView(view3D, location);
                Viewport.Create(document, viewSheet.Id, view3D.Id, new XYZ(location.U, location.V, 0));

                // Print the sheet out
                if (viewSheet.CanBePrinted)
                {
                    TaskDialog taskDialog = new TaskDialog("Revit");
                    taskDialog.MainContent = "Print the sheet?";
                    TaskDialogCommonButtons buttons = TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No;
                    taskDialog.CommonButtons = buttons;
                    TaskDialogResult result = taskDialog.Show();

                    if (result == TaskDialogResult.Yes)
                    {
                        viewSheet.Print();
                    }
                }

                t.Commit();
            }
            catch
            {
                t.RollBack();
            }
        }
    }
}
注: 他のシートにシート ビューを追加することも、複数のシートにビューを追加することもできません。追加した場合は引数の例外が発生します。

シートの改訂

ViewSheet クラスには、シートの改訂および改訂雲マークで作業するためのメソッドがいくつか用意されています。
  • GetAllRevisionIds() - シートの改訂表に組み込む改訂の順序配列を取得します。
  • GetAdditionalRevisionIds() - シートの改訂表に追加で含める改訂を取得します。
  • SetAdditionalRevisionIds()- シートの改訂表に追加で含める改訂を設定します。
  • GetCurrentRevision() - この ViewSheet に示されている最新の改訂番号を返します。
  • GetRevisionCloudNumberOnSheet() - プロジェクトの番号付けがシートごとに行われている場合に、このシートの RevisionCloud の改訂番号を取得します。
  • GetRevisionNumberOnSheet() - プロジェクトの番号付けがシートごとに行われている場合に、シートに表示されている特定の改訂の改訂番号を取得します。

改訂は、プロジェクト内の改訂順番に並べられます。追加される改訂は、常にシートの改訂表に組み込まれます。関連付けられている RevisionClouds がシート上にあるため、通常、改訂は改訂表に集計されます。

次のコード サンプルは、特定の基準に一致するシートに改訂を追加する方法を示しています。

コード領域: シートに改訂を追加

public static void AddAdditionalRevisionsToSheet(ViewSheet viewSheet, String toMatch)
{
    Document doc = viewSheet.Document;

    ICollection<ElementId> revisions = viewSheet.GetAdditionalRevisionIds();

    // Find revisions whose description matches input string
    FilteredElementCollector collector = new FilteredElementCollector(doc);
    collector.OfCategory(BuiltInCategory.OST_Revisions);
    collector.WhereElementIsNotElementType();
    if (revisions.Count > 0)
        collector.Excluding(revisions);

    // Check if revision should be added
    foreach (Element revision in collector)
    {
        Parameter descriptionParam = revision.get_Parameter(BuiltInParameter.PROJECT_REVISION_REVISION_DESCRIPTION);
        String description = descriptionParam.AsString();
        if (description.Contains(toMatch))
            revisions.Add(revision.Id);
    }

    if (revisions.Count > 0)
    {
        // Apply the new list of revisions
        using (Transaction t = new Transaction(doc, "Add revisions to sheet"))
        {
            t.Start();
            viewSheet.SetAdditionalRevisionIds(revisions);
            t.Commit();
        }
    }
}

プリンタの設定

シートを印刷する前に、プリンタの設定を変更することができます。API は、PrintManager クラス、および関連する Autodesk.Revit.DB クラスを使用して、プリンタの設定を表示します。

クラス

機能

Autodesk.Revit.DB.PrintManager

Revit UI の[印刷]ダイアログ([ファイル] > [印刷])の印刷情報を表します。

Autodesk.Revit.DB.PrintParameters

ドキュメントの印刷に使用する設定を含むオブジェクトです。

Autodesk.Revit.DB.PrintSetup

Revit の印刷設定([ファイル] > [印刷設定])を表します。

Autodesk.Revit.DB.PaperSize

Autodesk Revit プロジェクトの印刷設定の用紙サイズを表すオブジェクトです。

Autodesk.Revit.DB.PaperSizeSet

任意の数の用紙サイズオブジェクトを含めることができるセットです。

Autodesk.Revit.DB.PaperSource

Autodesk Revit プロジェクト内の印刷設定の用紙供給元を表すオブジェクトです。

Autodesk.Revit.DB.PaperSourceSet

任意の数の用紙供給元オブジェクトを含めることができるセットです。

Autodesk.Revit.DB.ViewSheetSetting

Revit UI のビュー/シート セット([ファイル] > [印刷])を表します。

Autodesk.Revit.DB.PrintSetting

Revit の印刷設定([ファイル] > [印刷設定])を表します。

これらのオブジェクトを使用しているコードの例については、Revit プラットフォーム SDK に含まれる 「ViewPrinter サンプル アプリケーション」を参照してください。