使用 Design Automation API 打印 Revit 平面图查看 PDF

问题描述 投票:0回答:1

我开发了一个 Revit 插件,使用平面图视图作为 PDF 背景。 使用 SubmitPrint 方法和 PrintManager 配置,可以使用 PDF995/Adobe Acrobat 虚拟打印机驱动程序将视图打印为 PDF,并在 Xyicon 应用程序中用作背景。

using (var tr = new Transaction(document, "Xyicon printer settings creation"))
{
    tr.Start();
    document.PrintManager.SelectNewPrintDriver(printer);

    var printManager = document.PrintManager;
    printManager.PrintRange = PrintRange.Select;
    ViewSheetSetting viewSheetSetting = printManager.ViewSheetSetting;
    viewSheetSetting.CurrentViewSheetSet.Views = viewSet;
    viewSheetSetting.SaveAs("Xyicon_ViewSet");
    PaperSize paperSize = null;
    foreach (PaperSize ps in printManager.PaperSizes)
    {
        if (ps.Name.Equals("ARCH E"))
        {
            paperSize = ps;
            break;
        }
    }
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize = paperSize;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement = PaperPlacementType.Center;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType = ZoomType.FitToPage;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = PageOrientationType.Landscape;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews = HiddenLineViewsType.VectorProcessing;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = RasterQualityType.High;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth = ColorDepthType.GrayScale;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideCropBoundaries = false;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideReforWorkPlanes = false;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideUnreferencedViewTags = false;

    printManager.PrintToFileName = viewPdfFilePath;
    printManager.PrintToFile = true;

    printManager.Apply();
    printManager.PrintSetup.SaveAs("Xyicon_PinterSettings");
    tr.Commit();
}

using (var tr = new Transaction(document, "Print selected view"))
{
    tr.Start();

    var printManager = document.PrintManager;
    if (elementIdListToHide.Count != 0)
        view.HideElementsTemporary(elementIdListToHide);

    document.Regenerate();
    printManager.SubmitPrint();

    while (!IsPDFHeaderExists(viewPdfFilePath))
        Thread.Sleep(1000);

    tr.Commit();
}

最近我们决定将插件开发转移到 APS(Autodesk Platform Services)并与 Xyicon 集成,但面临关键的视图打印问题。 APS 无法打印 Revit 2021 及更早版本的平面图(我们的用户仍然使用 2020 和 2019 等旧版本)。

在最新的 Revit 版本中,有一个 PDFExport 允许我们制作 PDF,但它不适用于旧版本。

我考虑了几种实现方式:

  • 在 APS WorkItem 进度期间将旧版本升级到新版本(升级需要花费大量时间,尤其是链接文件数量较多时)
  • 在APS服务器上安装虚拟打印机(不确定这是否可行)
  • 使用 DWG 导出,将视图平面图导出为 DWG,并使用 AutoCAD 的“DWG 到 PDF.pc3”打印机进行 PDF 创建(需要大量时间和令牌值将输出文件移动到不同的存储桶)
  • 使用 ForgeViewer(不适用于 2D 平面图 - 仅适用于 3D)

这个问题有什么解决办法吗?

autodesk-forge autodesk-viewer revit-api autodesk-designautomation autodesk-construction-cloud
1个回答
0
投票

是的,恐怕我无法提供比您已经列出的选项更多的建议。我很确定您无法在 APS 服务器上安装自己的虚拟打印机。因此,将 RVT 文件版本升级到较新的版本或打印到其他文件格式可能是最可行的选择。抱歉这个坏消息。

© www.soinside.com 2019 - 2024. All rights reserved.