Программно управлять параметрами в окне "Печать" на вкладках Листы

Автор Тема: Программно управлять параметрами в окне "Печать" на вкладках Листы  (Прочитано 5775 раз)

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

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

  • ADN OPEN
  • Сообщений: 47
  • Карма: 1
Здравствуйте! Подскажите пожалуйста какими методами можно программно управлять параметрами в окне "Печать" на вкладках Листы?
Интересует управление параметрами, которые выделены на рисунке красными рамками.


Оффлайн alz

  • ADN OPEN
  • **
  • Сообщений: 95
  • Карма: 11
Это все параметры класса Autodesk.AutoCAD.DatabaseServices.PlotSettingsValidator
вот мой пример использования для распечатки в пдф:

Код - C# [Выбрать]
  1. private string plot_pdf(string file_name, string out_path, Layout lay, Extents2d window, double x, double y, string stamp_handle, bool monochrome)
  2.         {
  3.             //название напечатанной страницы
  4.             string plot_list = "";
  5.  
  6.             //если ничего не печатается то начинаем печать
  7.             if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
  8.             {
  9.                 using (PlotEngine pe = PlotFactory.CreatePublishEngine())
  10.                 {
  11.                     PlotProgressDialog ppd = new PlotProgressDialog(false, 1, true);
  12.                     using (ppd)
  13.                     {
  14.                         //устанавливавем параметры для печати
  15.                         PlotInfo pi = new PlotInfo();
  16.                         PlotInfoValidator piv = new PlotInfoValidator();
  17.                         piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
  18.                         ObjectId layoutId = lay.Id;
  19.                         LayoutManager.Current.CurrentLayout = lay.LayoutName;
  20.                         PlotSettings ps = new PlotSettings(lay.ModelType);
  21.                         ps.CopyFrom(lay);
  22.                         try
  23.                         {
  24.                             ps.ShowPlotStyles = true;
  25.                             ps.PrintLineweights = true;
  26.                             ps.PlotTransparency = true;
  27.                         }
  28.                         catch
  29.                         { }
  30.                         using (PlotSettingsValidator psv = PlotSettingsValidator.Current)
  31.                         {
  32.                             //в каких границах печатаем
  33.                             psv.SetPlotWindowArea(ps, window);
  34.                             //область печати
  35.                             psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
  36.                             //поворот
  37.                             psv.SetPlotRotation(ps, PlotRotation.Degrees090);
  38.                             //масштабирование и расположение
  39.                             psv.SetUseStandardScale(ps, true);                            
  40.                             psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
  41.                             psv.SetPlotCentered(ps, true);
  42.                             //выбираем принтер
  43.                             psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", null);
  44.                             psv.RefreshLists(ps);
  45.                             //считываем форматы печати
  46.                             StringCollection strings = psv.GetCanonicalMediaNameList(ps);
  47.                             //создаем переменную для выходного формата
  48.                             string format = "";
  49.                             //проходим по форматам
  50.                             foreach (String s in strings)
  51.                             {
  52.                                 //ищем формат соответствующий габаритам штампа
  53.                                 if (
  54.                                     s.Contains(Math.Round(y).ToString() + ".00" + "_x_" + Math.Round(x).ToString() + ".00") |
  55.                                     s.Contains(Math.Round(y).ToString() + ".00" + " x " + Math.Round(x).ToString() + ".00")
  56.                                     )
  57.                                 {
  58.                                     if (s.Contains("full_bleed") | s.Contains("UserDefinedMetric"))
  59.                                     {
  60.                                         //если находим то записываем его
  61.                                         format = s;
  62.                                         break;
  63.                                     }
  64.                                 }
  65.                             }
  66.                             //если формат не найден записываем в лог ошибку и пропускаем эту страницу
  67.                             if (format == "")
  68.                             {
  69.                                 using (StreamWriter writer = new StreamWriter("C:\\ProgramData\\My_catalog\\print_log.txt", true))
  70.                                 {
  71.                                     writer.WriteLine("_error1___" + "\t" + stamp_handle);
  72.                                     writer.Close();
  73.                                 }
  74.                                 return plot_list;
  75.                             }
  76.                             //устанавливаем найденный формат для печати
  77.                             psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", format);
  78.  
  79.                             try
  80.                             {
  81.                                 if (monochrome)
  82.                                 {
  83.                                     psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
  84.                                 }
  85.                                 else
  86.                                 {
  87.                                     psv.SetCurrentStyleSheet(ps, "acad.ctb");
  88.                                 }
  89.                             }
  90.                             catch
  91.                             { }
  92.  
  93.                             psv.RefreshLists(ps);
  94.                             try
  95.                             {
  96.                                 ps.PlotPlotStyles = true;
  97.                                 //ps.ShowPlotStyles = true;
  98.                                 ps.PrintLineweights = true;
  99.                                 ps.PlotTransparency = true;
  100.                             }
  101.                             catch
  102.                             { }
  103.  
  104.  
  105.                             pi.Layout = lay.Id;
  106.                             pi.OverrideSettings = ps;
  107.                             piv.Validate(pi);
  108.  
  109.                             //получаем название напечатанного листа и печатаем
  110.                             int list = 1;
  111.                             string page = out_path + "\\" + list + ".pdf";
  112.                             while (System.IO.File.Exists(page))
  113.                             {
  114.                                 list++;
  115.                                 page = out_path + "\\" + list + ".pdf";
  116.                             }
  117.  
  118.                             //печатаем
  119.                             pe.BeginPlot(ppd, null);
  120.                             pe.BeginDocument(pi, file_name, null, 1, true, page);
  121.  
  122.                             PlotPageInfo ppi = new PlotPageInfo();
  123.  
  124.                             pe.BeginPage(ppi, pi, true, null);
  125.                             pe.BeginGenerateGraphics(null);
  126.                             pe.EndGenerateGraphics(null);
  127.                             pe.EndPage(null);
  128.                             pe.EndDocument(null);
  129.                             pe.EndPlot(null);
  130.  
  131.                             //если досюда дошло то по идее все распечатано, записываем в файл лога
  132.                             using (StreamWriter writer = new StreamWriter("C:\\ProgramData\\My_catalog\\print_log.txt", true))
  133.                             {
  134.                                 writer.WriteLine("_norm_____" + "\t" + stamp_handle);
  135.                                 writer.Close();
  136.                             }
  137.                             return page;
  138.                         }
  139.                     }
  140.                 }
  141.             }
  142.             return plot_list;
  143.         }
  144.