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

06/03/2015

Получение информации обо всех системных переменных .NET

В AutoCAD 2015 появилось новое API для получения системных переменных – AcEdSysVarIterator в ObjectARX и SystemVariableEnumerator в AutoCAD .

Как использовать AcEdSysVarIterator мы показали в предыдущей статье. Здесь мы покажем как тоже самое можно сделать при помощи AutoCAD .NET API:

Код - C#: [Выделить]
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Reflection;
  4. using Autodesk.AutoCAD.Runtime;
  5. using Autodesk.AutoCAD.ApplicationServices;
  6. using Autodesk.AutoCAD.DatabaseServices;
  7. using Autodesk.AutoCAD.Geometry;
  8. using Autodesk.AutoCAD.EditorInput;
  9. using AcRx = Autodesk.AutoCAD.Runtime;
  10. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  11. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  12. using AcGe = Autodesk.AutoCAD.Geometry;
  13. using AcEd = Autodesk.AutoCAD.EditorInput;
  14.  
  15. [assembly: CommandClass(typeof(Rivilis.SysVars))]
  16.  
  17. namespace Rivilis
  18. {
  19.   public class SysVars
  20.   {
  21.     [CommandMethod("EnumVars")]
  22.     public void EnumVars()
  23.     {
  24.       AcEd.Editor ed = AcAp.Application.DocumentManager.MdiActiveDocument.Editor;
  25.       using (AcRx.SystemVariableEnumerator iter = new AcRx.SystemVariableEnumerator())
  26.       {
  27.         iter.Reset(); // Устанавливаем в начало
  28.         ed.WriteMessage("\n******** Информация о системной переменной *************");
  29.         while (iter.MoveNext())
  30.         {
  31.           AcRx.Variable v = iter.Current;
  32.           ed.WriteMessage("\nИмя переменной: {0}", v.Name);
  33.           switch (v.Storage)
  34.           {
  35.             case AcRx.Variable.StorageType.PerSession:
  36.               ed.WriteMessage("\nТип хранения: Приложение, не сохраняется");
  37.               break;
  38.             case AcRx.Variable.StorageType.PerUser:
  39.               ed.WriteMessage("\nТип хранения: Приложение, сохраняется для каждого пользователя");
  40.               break;
  41.             case AcRx.Variable.StorageType.PerProfile:
  42.               ed.WriteMessage("\nТип хранения: Приложение, сохраняется в каждом профиле");
  43.               break;
  44.             case AcRx.Variable.StorageType.PerDatabase:
  45.               ed.WriteMessage("\nТип хранения: Чертеж");
  46.               break;
  47.             case AcRx.Variable.StorageType.PerViewport:
  48.               ed.WriteMessage("\nТип хранения: Для каждого вида в чертеже");
  49.               break;
  50.           }
  51.           ed.WriteMessage("\nТип переменной: {0}", v.PrimaryType);
  52.           ed.WriteMessage("\nФлаги: {0}", v.TypeFlags);
  53.           if (v.Range != null)
  54.           {
  55.             ed.WriteMessage("\nДиапазон: от {0} до {1}", v.Range.LowerBound, v.Range.UpperBound);
  56.           }
  57.           // ed.WriteMessage("\nЗначение переменной: {0}", v.Value); // <- В AutoCAD 2015 не реализовано
  58.           ed.WriteMessage("\nВторичный тип: {0}", v.SecondaryType);
  59.         }
  60.       }
  61.     }
  62.   }
  63. }
  64.  

 

Информация о системных переменных в командной строке:

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

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

Опубликовано 06.03.2015
Отредактировано 07.03.2015 в 14:09:02