<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Revit Print pdf error in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9230905#M37702</link>
    <description>&lt;P&gt;Try to print after making view as the &lt;STRONG&gt;Active View&lt;/STRONG&gt;&lt;/P&gt;</description>
    <pubDate>Sat, 04 Jan 2020 14:58:20 GMT</pubDate>
    <dc:creator>gopinathrbe</dc:creator>
    <dc:date>2020-01-04T14:58:20Z</dc:date>
    <item>
      <title>Revit Print pdf error</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9218288#M37701</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Revit批量打印错误.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/710763i8C972B21292237FA/image-size/large?v=v2&amp;amp;px=999" role="button" title="Revit批量打印错误.jpg" alt="Revit批量打印错误.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Has anyone ever encountered such a problem?&lt;/P&gt;&lt;P&gt;I used revit2017 API to write a function of printing&amp;nbsp; sheets to PDF in batch.But sometimes there's a mistake like this.&lt;/P&gt;&lt;P&gt;Revit2017 crash after clicking close button.&lt;/P&gt;&lt;P&gt;Here is My Code:&lt;/P&gt;&lt;P&gt;Tips:Adobe PDF used.&lt;/P&gt;&lt;PRE&gt;using (RevitDB.Transaction transaction = new RevitDB.Transaction(revitDoc, "PrintPdf"))
            {
                transaction.Start();

                RevitDB.PrintManager printManager = doc.PrintManager;
                printManager.PrintRange = RevitDB.PrintRange.Select;
                RevitDB.ViewSheetSetting viewSheetSetting = printManager.ViewSheetSetting;
                viewSheetSetting.CurrentViewSheetSet.Views = printableViews;
                viewSheetSetting.SaveAs("MyViewSet");          
                                                                
                if (printManager.IsVirtual == RevitDB.VirtualPrinterType.AdobePDF)
                    printManager.CombinedFile = false;
               
                int IndexFlag = 0;

                foreach (RevitDB.View view in printableViews)
                {
                    printManager.PrintToFile = true;
                    printManager.CombinedFile = false;

                    RevitDB.FilteredElementCollector InnerCollector = new RevitDB.FilteredElementCollector(doc, view.Id);
                    RevitDB.ElementClassFilter classFilter = new RevitDB.ElementClassFilter(typeof(RevitDB.FamilyInstance));
                    InnerCollector.WherePasses(classFilter);
                    RevitDB.Element tukuang = null;
                                                 
                    string curFrameName = string.Empty;
                    foreach (RevitDB.Element ele in InnerCollector)
                    {
                        if (ele.Name.Contains("Cam"))
                        {
                            tukuang = ele;
                            curFrameName = ele.Name.Substring(3);
                            break;
                        }
                    }
                    
                    bool IsFindSetting = false;//是否在打印机中找到对应的设置
                    printManager.PrintSetup.CurrentPrintSetting = printManager.PrintSetup.InSession;
                    RevitDB.PaperSize Ps = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize;
                    RevitDB.PaperSizeSet PsSet = printManager.PaperSizes;
                    if (curFrameName.Contains("A4"))
                    {
                        foreach (RevitDB.PaperSize p in PsSet)
                        {
                            if (p.Name.ToString() == "A4")
                            {
                                printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize = p;
                                printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = RevitDB.PageOrientationType.Portrait;
                                //printManager.PrintSetup.Save();
                                IsFindSetting = true;
                                break;
                            }
                        }
                    }
                    else
                    {
                        foreach (RevitDB.PaperSize p in PsSet)
                        {
                            if (p.Name.ToString() == curFrameName)
                            {
                                printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize = p;
                                printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = RevitDB.PageOrientationType.Landscape;
                                //printManager.PrintSetup.Save();
                                IsFindSetting = true;
                                break;
                            }
                        }
                    }
                    if (!IsFindSetting)
                    {
                        if (tukuang == null)
                            FailedPrintName.Add(view.Name);
                        else
                            FailedPrintName.Add(tukuang.Name);
                        continue;
                    }
                    printManager.PrintSetup.SaveAs((IndexFlag++).ToString());
                    printManager.Apply();
                   
                    printManager.SubmitPrint(view);
                    
                    RevitDB.Element TitleBlock = null;
                    string SheetCode = string.Empty;
                    foreach (RevitDB.Element ele in InnerCollector)
                    {
                        if (ele.Name.Equals("标准"))
                        {
                            TitleBlock = ele;
                            break;
                        }
                    }
                    if (TitleBlock != null)
                    {
                        SheetCode = TitleBlock.GetParameters("图号")[0].AsString();
                        if (!string.IsNullOrEmpty(SheetCode))
                        {
                            SuccessPrintSheetNames.Add(SheetCode);
                        }
                        else
                        {
                            SuccessPrintSheetNames.Add(view.Name);
                        }
                    }
                }
                transaction.RollBack();
                //提示失败的图纸，并且在这里用对话框卡主进程，防止移动图纸时正处于打开状态
                if (FailedPrintName.Count() != 0)
                {
                    string Msg = string.Empty;
                    foreach (string str in FailedPrintName)
                    {
                        Msg += str + ".  ";
                    }
                    RevitUI.TaskDialog Dlg = new RevitUI.TaskDialog("提示");
                    Dlg.MainInstruction = "未打印图纸";
                    Dlg.MainContent = Msg;
                    Dlg.Show();
                }
                else
                {
                    RevitUI.TaskDialog Dlg = new RevitUI.TaskDialog("提示");
                    Dlg.MainInstruction = "已完成所有打印图纸！";
                    //Dlg.MainContent = Msg;
                    Dlg.Show();
                }
                Application.DoEvents();//等待执行，防止系统打印机未完成就开始移动图纸报错
                //移动pdf图纸，并重命名
                MovePdfFile(SuccessPrintSheetNames, SheetNames);
            }&lt;/PRE&gt;</description>
      <pubDate>Tue, 24 Dec 2019 07:44:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9218288#M37701</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-12-24T07:44:58Z</dc:date>
    </item>
    <item>
      <title>Re: Revit Print pdf error</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9230905#M37702</link>
      <description>&lt;P&gt;Try to print after making view as the &lt;STRONG&gt;Active View&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Jan 2020 14:58:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9230905#M37702</guid>
      <dc:creator>gopinathrbe</dc:creator>
      <dc:date>2020-01-04T14:58:20Z</dc:date>
    </item>
    <item>
      <title>Re: Revit Print pdf error</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9251753#M37703</link>
      <description>&lt;P&gt;Thank you very much.It's actually works！&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jan 2020 10:29:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revit-print-pdf-error/m-p/9251753#M37703</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2020-01-15T10:29:06Z</dc:date>
    </item>
  </channel>
</rss>

