ADN Open CIS
Сообщество программистов Autodesk в СНГ

03/05/2017

Как получить список доступных плоттеров/форматов в AutoCAD?

Вопрос:  Как получить список доступных плоттеров в AutoCAD и список канонических имён форматов для каждого из доступных плоттеров?

Ответ: Для получения списка доступных плоттеров нужно воспользоваться методом PlotSettingsValidator.GetPlotDeviceList, а для получения канонических имён форматов – PlotSettingsValidator.GetCanonicalMediaNameList

Ниже пример того, как можно выбрать только плоттеры, в имени которых есть строка «PDF», и получить список канонических имён их форматов:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.EditorInput;
  5. using Autodesk.AutoCAD.Internal;
  6.  
  7. [assembly: CommandClass(typeof(Rivilis.Plotters))]
  8.  
  9. namespace Rivilis
  10. {
  11.   public class Plotters
  12.   {
  13.     [CommandMethod("GetCanonicalNames")]
  14.     public void GetCanonicalNames()
  15.     {
  16.       Document doc = Application.DocumentManager.MdiActiveDocument;
  17.       if (doc == null) return;
  18.       Editor ed = doc.Editor;
  19.       PlotSettingsValidator psv = PlotSettingsValidator.Current;
  20.       using (PlotSettings settings = new PlotSettings(true))
  21.       {
  22.         foreach (string plotterDevice in psv.GetPlotDeviceList())
  23.         {
  24.           // Нас будут интересовать только плоттеры,
  25.           // в имени которых есть строка PDF
  26.           if (Utils.WcMatchEx(plotterDevice,"*pdf*",true))
  27.           {
  28.             ed.WriteMessage("\nПлоттер: \'{0}\'", plotterDevice);
  29.             psv.SetPlotConfigurationName(settings, plotterDevice, null);
  30.             psv.RefreshLists(settings);
  31.             foreach (string canonocalName in psv.GetCanonicalMediaNameList(settings))
  32.             {
  33.               ed.WriteMessage("\n  Каноническое имя: \'{0}\'", canonocalName);
  34.             }
  35.           }
  36.         }
  37.       }
  38.     }
  39.   }
  40. }


Результат работы:

Автор: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=7774

Опубликовано 03.05.2017
Отредактировано 03.05.2017 в 17:11:00