Revit API создать лист - документы - содержат устаревшие "view3d - PullRequest
1 голос
/ 25 января 2020

Я работаю с документами, пытаясь создать лист с видом на него с помощью Revit API в C#

, вот URL-ссылка на документацию . Вы можете найти код внизу в первом C# блоке.

Я получаю красный волнистый знак под view3D.Id:

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

Я могу не могу найти, что это устарело, и я не могу понять, как это решить. Я немного озадачен тем, почему он пытается получить свой собственный elementID. Также попадаю в revit-API. похоже, что "виды" в Revit называются "окнами просмотра" в API. Мне нужно прочитать больше об этом.

вот весь блок кода:

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));
                ^ERROR HAPPENS IN LINE ABOVE AT view3D.Id


                // 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();
            }
        }
    }
}

1 Ответ

1 голос
/ 25 января 2020

Обсуждение Building Coder точного позиционирования в окне просмотра включает некоторые пробные вызовы для ViewSheet.Create и Viewport.Create.

...