Не применяются параметры печати

Автор Тема: Не применяются параметры печати  (Прочитано 3944 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Добрый день!
Реализую плагин для пакетной печати, устанавливаю параметры печати, но они не применяются:
Код - C# [Выбрать]
  1. PrintManager printManager = m_doc.PrintManager;
  2. printManager.SelectNewPrintDriver("PDFCreator");
  3. printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = PageOrientationType.Portrait;
  4. printManager.Apply();
  5. foreach (ViewSheet viewSheet in new FilteredElementCollector(m_doc).OfClass(typeof(ViewSheet)).WhereElementIsViewIndependent()) {
  6.     printManager.SubmitPrint(viewSheet);
  7. }
  8.  

Пытался использовать SaveAs("print") в транзакции, но результат тот же.
Использую Revit 2015.

Спасибо

Отмечено как Решение shss 09-03-2017, 18:52:45

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Не применяются параметры печати
« Ответ #1 : 09-03-2017, 18:50:49 »
Разобрался.
В целом пришлось создавать свои настройки печати, перебирать их и назначать на текущие настройки, а потом удалять.
Как-то так:
Код - C# [Выбрать]
  1. ElementId userSettingsId = null;
  2. //print settings creation
  3. PrintManager printManager = m_doc.PrintManager;
  4. using (Transaction tr = new Transaction(m_doc, "PrintSettingsCreation")) {
  5.     tr.Start();
  6.     IPrintSetting printSettings = printManager.PrintSetup.CurrentPrintSetting;
  7.     printSettings.PrintParameters.PageOrientation = PageOrientationType.Portrait;
  8.     printManager.PrintSetup.SaveAs("UserSettings");
  9.     printManager.PrintSetup.Apply();
  10.    
  11.     foreach (PrintSetting printSettings in new FilteredElementCollector(m_doc).OfClass(typeof(Autodesk.Revit.DB.PrintSetting))) {
  12.         if (printSettings.Name.Equals("UserSetting")) {
  13.             m_doc.PrintManager.PrintSetup.CurrentPrintSetting = printSettings;
  14.             userSettingsId  = printSettings.Id;
  15.             break;
  16.         }
  17.     }
  18.     tr.Commit();
  19. }
  20.  
  21. //print
  22. printManager.SubmitPrint(viewSchedule);
  23.  
  24. //delete settings
  25. using (Transaction tr = new Transaction(m_doc, "DeleteUserSettings")) {
  26.     tr.Start();
  27.     foreach (PrintSetting printSettings in  new FilteredElementCollector(m_doc).OfClass(typeof(Autodesk.Revit.DB.PrintSetting))) {
  28.         if (printSettings.Name.Equals("UserSetting")) {
  29.            m_doc.Delete(printSettings.Id);
  30.            break;
  31.          }
  32.       }
  33.       tr.Commit();
  34. }
  35.  

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Не применяются параметры печати
« Ответ #2 : 09-03-2017, 19:55:05 »
Кстати для удобства можно использовать.
Код - C# [Выбрать]
  1. foreach (ElementId elementId in m_doc.GetPrintSettingIds()){
  2.     PrintSetting printSetting =  m_doc.GetElement(eid) as PrintSettings;
  3.     if (printSetting.Name.Equals("UserSetting")){
  4.         m_printMgr.PrintSetup.CurrentPrintSetting = m_doc.GetElement(eid) as PrintSettings;
  5.         break;
  6.     }
  7. }
  8.  

вместо
Код - C# [Выбрать]
  1. foreach (PrintSetting printSettings in new FilteredElementCollector(m_doc).OfClass(typeof(Autodesk.Revit.DB.PrintSetting))) {
  2.     if (printSettings.Name.Equals("UserSetting")) {
  3.             m_doc.PrintManager.PrintSetup.CurrentPrintSetting = printSettings;
  4.             userSettingsId  = printSettings.Id;
  5.             break;
  6.         }
  7. }
  8.