Итерация системных переменных AutoCAD через .NET, часть 1

Просматривая документацию по .NET API AutoCAD (раздел "Что нового"), можно увидеть новый класс SystemVariableEnumerator.

Это очень интересно, поскольку уже есть способ получить системные переменные AutoCAD'a, используя коллекции Autodesk.AutoCAD.Runtime.SystemObjects.Variables. В качестве первого приближения сравнения этих классов был использован код, реализующий пару простых команд-итераторов системных переменных. Эти команды используют одну и ту же функцию, выводящую некоторую информацию о переменной.

Вот код самих команд:

Поскольку лог выполнения очень большой, приводить его здесь не имеет смысла. В принципе формат выводимых данных должен быть понятен из кода.

Большой кусок предствленного кода на самом деле всего лишь "декодирует" информацию о типе, возвращая объект System.Type, когда он может быть приведен к осмысленному числовому представлению (в зависимости от способа записи это либо число 50хх, либо более короткое значение).

Хотелось бы отметить, что использовать foreach в новом API не представилось возможным: похоже, что метод GetEnumerator() попросту отсутствует, поэтому и пришлось использовать подход с MoveNext().

Новый счетчик пропускает из обработки т.н. "скрытые" переменные (т.е. начинающиеся с символа "*" (звездочка). Эти переменные возвращаются коллекцией SystemObjects.

Коллекция SystemObjects позволяет установить значение системной переменной, что достаточно интересно. В следующей статье мы посмотрим на эту возможность и сравним скорость работы каждой из команд.

Источник: http://through-the-interface.typepad.com/through_the_interface/2014/06/iterating-autocad-system-variables-using-net-part-1.html

Размещено в .NET, AutoCAD, Новости · Метки: , ,



Поделитесь своим мнением


Я не робот.