Выбор цвета поверхности через стандартное меню AutoCAD - Lisp

Узнай цену своей работы

Формулировка задачи:

БЕсть кнопка в диалоговом окне при нажатии на которую должно открываться стандартное окно выбора цвета в автокад. Как реализовать это? Команда color при вызове через лисп
Листинг программы
  1. (command "color")
просит ввести в консоль код цвета, а не открывает окно.

Решение задачи: «Выбор цвета поверхности через стандартное меню AutoCAD»

textual
Листинг программы
  1. (defun c:hello ()
  2.   (setq dcl_id (load_dialog "d:\\gleb\\hello.dcl"))
  3.   (setq what_next 2)
  4.   (while (>= what_next 2)
  5.     (if (null (new_dialog "hello" dcl_id))
  6.       (exit)                              
  7.     )
  8.     (action_tile "color" "(done_dialog 3)")
  9.     (action_tile "accept" "(done_dialog 1)")
  10.     (action_tile "point" "(done_dialog 4)")
  11.    
  12.     (setq what_next (start_dialog));
  13.     (cond
  14.       ((= what_next 4)
  15.         (setq p (getpoint "\npick a point"))
  16.       )
  17.       ((= what_next 3)
  18.        (acad_colordlg 256)
  19.  
  20.       )
  21.       ((= what_next 0)
  22.         (prompt "\nuser cancelled dialog")
  23.       )
  24.     )
  25.   )
  26.  
  27.     (while (< 2 what_next)
  28.     (action_tile "X" "(setq on_ed1 $value)")
  29.     (action_tile "Y" "(setq on_ed2 $value)")
  30.     (action_tile "accept" "(done_dialog 1) (ok_tab)")
  31.     (setq what_next (start_dialog))
  32.   )
  33.      
  34.   (unload_dialog dcl_id)
  35.  )
  36.  
  37.  
  38. (c:hello)

Объяснение кода листинга программы

  1. Создание функции с именем hello.
  2. Загрузка диалогового файла с помощью функции load_dialog.
  3. Установка значения переменной what_next равным 2.
  4. Запуск цикла while, который выполняется до тех пор, пока значение переменной what_next больше или равно 2.
  5. Проверка, является ли null значение, возвращаемое функцией new_dialog. Если это так, то выполнение программы завершается с помощью функции exit.
  6. Вызов функции action_tile для отображения кнопок color, accept и point.
  7. Установка значения переменной what_next равным 4.
  8. Проверка, является ли null значение, возвращаемое функцией start_dialog. Если это так, то выполнение программы завершается с помощью функции exit.
  9. Проверка условия, что значение переменной what_next равно 4.
  10. Вызов функции getpoint для запроса выбора точки.
  11. Установка значения переменной what_next равным 3.
  12. Вызов функции acad_colordlg для отображения диалога выбора цвета.
  13. Установка значения переменной what_next равным 0.
  14. Вывод сообщения об отмене пользователем диалога с помощью функции prompt.
  15. Проверка условия, что значение переменной what_next равно 0.
  16. Вызов функции action_tile для отображения кнопок X и Y.
  17. Вызов функции done_dialog для завершения текущего диалога.
  18. Вызов функции ok_tab для переключения на следующий диалоговый экран.
  19. Выгрузка загруженного диалогового файла с помощью функции unload_dialog.
  20. Вызов функции done_dialog для завершения последнего диалога.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы