Мар 242009
 

Для получения данных был написан  ARX модуль. Он содержит Lisp функцию acad_field_update, которая принимает два параметра (в примерах использую свой частный случай):

  1. Полный путь к файлу (содержит GUID объекта из TDMS).
  2. Имя листа для которого получаются данные.

(acad_field_update «T:\{1DE036E3-1084-4FD2-90C8-D4AD391649E5}\test.dwg» «1»)

При вызове этой функции модуль проверяет наличие команды ACAD_FIELD_UPDATE, если такой не существует то пытается создать ее (поэтому первый раз следует запустить TDMS под SYSDMINом, будет создана команда и пример скрипта).

Если команда найдена то модуль записывает полученные данные в словарь ACADFIELDUPDATEв, в два поля с ключами ACDOCFILE и ACLAYOUT.

После чего выполняет команду ACAD_FIELD_UPDATE и при удачном ее окончании записывает данные в DocData (это было сделано для сведения к минимуму работы с COM объектами, а Словарь в TDMS использует «Scripting.IDictionsry») .

При обновлении филдов в AutoCAD AcFdFieldEvaluator обрабатывает наши филды с кодом tdmsvalue согласно алгоритму описанному в модуле. Если произойдет ошибка или TDMS не запущен, то филды не обновятся, сохранив прежние значения.

Для ввода кодов значения в редактор полей добавлен раздел TDMS.

TDMS Field

Так же можно (например в многострочное поле) просто добавить в качестве текста %<\tdmsvalue fileName;layoutName;TEST_CODE>%

Остальные вычисления производятся на ваше усмотрение путем редактирования команды ACAD_FIELD_UPDATE в TDMS.

Использовался ObjectARX2008.

Сылка на ARX

 Posted by at 13:01

  4 Responses to “Заполнение филдов в AutoCAD данными из TDMS”

  1. Очень неплохо, интересно, хорошо читается.

  2. Да таков наш современный мир и боюсь наверное с этим ни чего не поделать:)

  3. Хм… что-то у меня ссылка не открывается, которую указали. Это у всех так, или только у меня?

  4. Конечно, автор блога молодец! Пишите еще!

 Leave a Reply

(required)

(required)


− один = 6

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>