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

В предыдущей части был предоставлен код, показывающий реализацию двух доступных механизмов итерации по системным переменным AutoCAD: SystemObects.Variables и новый класс SystemVariableEnumerator.

Сегодня мы посмотрим внимательнее на оба эти механизма, кратко сопоставив их возможности и результаты работы. За основу взят код из предыдущей части статьи. Код упрощен, удалены "проходы" по БД чертежа - все для улучшения сопоставимости результатов.

Ниже представлен код C# с обновленными вариантами команд ESV и ESV2, которые создают соответствующие txt-файлы в каталоге c:\temp. Это получается быстрее, чем вывод в командную строку Windows. Кроме того, игнорируется информация Primary/SecondaryType - все только ради того, чтобы получить сопоставимые результаты.

После запуска кода мы увидим, что команда ESV (использующая SystemObject.Variables) отработала быстрее, но нашла только 274 (при установленном SP1 для AutoCAD 2015 будет найдено 275 - включая CURSORBADGE) системные переменные. В то же время ESV2 обнаружит 912 (соответственно при установленном SP1 - 913) за сопоставимое время. Так что вопрос производительности можно сбросить со счетов.

Весьма интересно (и, можно сказать, даже обнадеживает), что новый механизм находит настолько больше системных переменных. С одной стороны, старый механизм (SystemObjects.Variables) позволяет менять значение системной переменной через возвращаемый объект:

Но, с другой стороны, это работает только для подмножества системных переменных (и пока автор еще не выяснил, какие именно... Известно, что новый счетчик пропускает анонимные системные переменные, и все равно находит втрое больше переменных).

Если есть желание, можно рассмотреть подробнее результаты работы как команды ESV, так и команды ESV2.

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

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



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


Я не робот.