Выбор цвета поверхности через стандартное меню AutoCAD - Lisp
Формулировка задачи:
БЕсть кнопка в диалоговом окне при нажатии на которую должно открываться стандартное окно выбора цвета в автокад.
Как реализовать это?
Команда color при вызове через лисп просит ввести в консоль код цвета, а не открывает окно.
(command "color")
Решение задачи: «Выбор цвета поверхности через стандартное меню AutoCAD»
textual
Листинг программы
(defun c:hello () (setq dcl_id (load_dialog "d:\\gleb\\hello.dcl")) (setq what_next 2) (while (>= what_next 2) (if (null (new_dialog "hello" dcl_id)) (exit) ) (action_tile "color" "(done_dialog 3)") (action_tile "accept" "(done_dialog 1)") (action_tile "point" "(done_dialog 4)") (setq what_next (start_dialog)); (cond ((= what_next 4) (setq p (getpoint "\npick a point")) ) ((= what_next 3) (acad_colordlg 256) ) ((= what_next 0) (prompt "\nuser cancelled dialog") ) ) ) (while (< 2 what_next) (action_tile "X" "(setq on_ed1 $value)") (action_tile "Y" "(setq on_ed2 $value)") (action_tile "accept" "(done_dialog 1) (ok_tab)") (setq what_next (start_dialog)) ) (unload_dialog dcl_id) ) (c:hello)
Объяснение кода листинга программы
- Создание функции с именем hello.
- Загрузка диалогового файла с помощью функции load_dialog.
- Установка значения переменной what_next равным 2.
- Запуск цикла while, который выполняется до тех пор, пока значение переменной what_next больше или равно 2.
- Проверка, является ли null значение, возвращаемое функцией new_dialog. Если это так, то выполнение программы завершается с помощью функции exit.
- Вызов функции action_tile для отображения кнопок
color
,accept
иpoint
. - Установка значения переменной what_next равным 4.
- Проверка, является ли null значение, возвращаемое функцией start_dialog. Если это так, то выполнение программы завершается с помощью функции exit.
- Проверка условия, что значение переменной what_next равно 4.
- Вызов функции getpoint для запроса выбора точки.
- Установка значения переменной what_next равным 3.
- Вызов функции acad_colordlg для отображения диалога выбора цвета.
- Установка значения переменной what_next равным 0.
- Вывод сообщения об отмене пользователем диалога с помощью функции prompt.
- Проверка условия, что значение переменной what_next равно 0.
- Вызов функции action_tile для отображения кнопок
X
иY
. - Вызов функции done_dialog для завершения текущего диалога.
- Вызов функции ok_tab для переключения на следующий диалоговый экран.
- Выгрузка загруженного диалогового файла с помощью функции unload_dialog.
- Вызов функции done_dialog для завершения последнего диалога.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д