我开发了一个 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 服务器上安装自己的虚拟打印机。因此,将 RVT 文件版本升级到较新的版本或打印到其他文件格式可能是最可行的选择。抱歉这个坏消息。