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

24/02/2014

Как получить список канонических имен для плоттера?

Следующий код позволяет получить правильный размер листа, определенный в диалоге параметров листа. Чтобы проверить код будем подразумевать что страница “PlotSetName_HP” для плоттера  HP LaserJet 8150 PCL 5e доступна.

Код - C#: [Выделить]
  1. [CommandMethod("getCanName")]
  2. public void getCanName()
  3. {
  4.     // assume a plot setting exists
  5.     string strPlotSetName = "PlotSetName_HP";
  6.     bool PlotSettingExists = false;
  7.  
  8.     StringCollection strMediaNameList = null;
  9.  
  10.     Editor editor =
  11.         Autodesk.AutoCAD.ApplicationServices.
  12.         Application.DocumentManager.MdiActiveDocument.Editor;
  13.     Database db = editor.Document.Database;
  14.  
  15.     using (Transaction t = 
  16.                 db.TransactionManager.StartTransaction())
  17.     {
  18.         try
  19.         {
  20.             // Получаем словарь PlotSettings
  21.             DBDictionary psDicts =
  22.                 (DBDictionary)t.GetObject(
  23.                 db.PlotSettingsDictionaryId,
  24.                 OpenMode.ForRead);
  25.             foreach (
  26.                 System.Collections.DictionaryEntry psDict
  27.                 in psDicts)
  28.             {
  29.                 object o = psDict.Value;
  30.                 string key = (string)psDict.Key;
  31.                 if (key == strPlotSetName)
  32.                 {
  33.                     // Находим установки плоттера
  34.                     PlotSettingExists = true;
  35.                 }
  36.             }
  37.  
  38.             if (PlotSettingExists)
  39.             {
  40.                 // открываем словарь настроек плоттера
  41.                 DBDictionary plotsettingdic =
  42.                     (DBDictionary)t.GetObject(
  43.                     db.PlotSettingsDictionaryId,
  44.                     OpenMode.ForRead);
  45.  
  46.                 // открываем настройки
  47.                 PlotSettings setting =
  48.                     (PlotSettings)t.GetObject(
  49.                     plotsettingdic.GetAt(strPlotSetName),
  50.                     OpenMode.ForWrite);
  51.  
  52.                 // получаем объект PlotSettingsValidator
  53.                 PlotSettingsValidator psv =
  54.                     Autodesk.AutoCAD.DatabaseServices.
  55.                     PlotSettingsValidator.Current;
  56.  
  57.                 psv.RefreshLists(setting);
  58.  
  59.                 // получаем список имен
  60.                 strMediaNameList =
  61.                     psv.GetCanonicalMediaNameList(setting);
  62.                 editor.WriteMessage("Список имен:\n");
  63.                 foreach (String str in strMediaNameList)
  64.                 {
  65.                     editor.WriteMessage(str + "\n");
  66.                 }
  67.  
  68.             }
  69.             t.Commit();
  70.  
  71.         }
  72.         catch (System.Exception ex)
  73.         {
  74.             editor.WriteMessage(ex.Message);
  75.         }
  76.         ///////------------------------------
  77.     }
  78.  
  79. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/05/how-to-list-the-canonical-media-names-of-a-ploter.html

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

Опубликовано 24.02.2014