Выбор цвета поверхности через стандартное меню 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)

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

  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
Похожие ответы