Группы пользователей Autodesk


Назначение действий элементам окна


Создание проекта и добавление элементов интерфейса

 

Создание проекта и добавление элементов интерфейса  

Назначение действий элементам окна

В файле DCL описывается только статическая внешняя форма диалогового окна. Теперь свяжем это описание с кодом AutoLISP, «оживляющим» окно. Используем для этого функцию action_tile, как показано в следующем фрагменте:

;; Assign actions (the functions to be invoked) to dialog buttons

(action_tile

"gp_lw"

"(setq plineStyle \"Light\")"

)

(action_tile

"gp_hw"

"(setq plineStyle \"Pline\")"

)

(action_tile

"gp_actx"

"(setq objectCreateMethod \"ActiveX\")"

)

(action_tile

"gp_emake"

"(setq objectCreateMethod \"Entmake\")"

)

(action_tile

"gp_cmd"

"(setq objectCreateMethod \"Command\")"

)

(action_tile "cancel" "(done_dialog) (setq UserClick nil)")

(action_tile

"accept"

(strcat "(progn (setq tileRad (atof (get_tile \"gp_trad\")))"

"(setq tileSpace (atof (get_tile \"gp_spac\")))"

"(done_dialog) (setq UserClick T))"

)

)

Обратим внимание на кавычки вокруг кода AutoLISP. Функция AutoLISP action_tile сообщает элементу окна строку в кавычках, которую элемент должен будет вернуть при его выборе. Строка (все, что находится внутри кавычек) бездействует до тех пор, пока пользователь не выберет элемент окна. Именно тогда элемент окна передает строку в AutoCAD, где строка преобразуется в рабочий код AutoLISP и выполняется.

Например, рассмотрим следующее выражение action_tile, которое связано с положением переключателя для компактной полилинии:

(action_tile

"gp_lw"

"(setq plineStyle \"Light\")"

)

Код присваивает положению переключателя строку «(setq plineStyle \"Light\")». Когда пользователь переводит переключатель в данное положение, строка передается в AutoCAD и преобразуется непосредственно в следующее выражение AutoLISP:




Начало  Назад  Вперед