3D модель фундамента в acad - второй раз программа не запускается - Lisp

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

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

Не знаю, в чем дело. Прога может запуститься один раз (и то не всегда), потом перестает. Что не так, кто подскажет? код прикрепил во вложения

Решение задачи: «3D модель фундамента в acad - второй раз программа не запускается»

textual
Листинг программы
(defun c:FrontDraw ( / id *error* res
                       DEEP1 COLUMN_B1 HEIGHT1 BASE1GHT1 WIDTH1 DIST1 ARNI1 )
                       
  (defun *error* (msg)
    (alert msg)
    (princ)
  )
 
  (if (< (setq id (load_dialog "mywindow45.dcl")) 0)
    (exit)
  )
 
  (if (not (new_dialog "prog45" id))
    (exit)
  )
 
  (action_tile "DEEP" "(setq DEEP1 $value)")
  (action_tile "COLUMN_B" "(setq COLUMN_B1 $value)")
  (action_tile "HEIGHT" "(setq HEIGHT1 $value)")
  (action_tile "BASE" "(setq BASE1GHT1 $value)")
  (action_tile "WIDTH" "(setq WIDTH1 $value)")
  (action_tile "DIST" "(setq DIST1 $value)")
  (action_tile "ARNI" "(setq ARNI1 $value)")
 
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  
  (setq res (start_dialog))
  (unload_dialog id)
 
  (if (= res 1)
    (progn
      (command "_-layer" "_s" "0" "" "")
      (DrawFront DEEP1 COLUMN_B1 BASE1 HEIGHT1 WIDTH1 DIST1 ARNI1)
    )
  )
 
  (*error* nil)
 
)

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

  1. Определение функции c:FrontDraw.
  2. Определение функции *error*.
  3. Проверка: была ли загружена диалоговая панель mywindow45.dcl.
  4. Проверка: создана ли диалоговая панель prog45.
  5. Ввод значений переменных DEEP, COLUMN_B, HEIGHT, BASE, WIDTH, DIST, ARNI с помощью команды action_tile.
  6. Вызов функции done_dialog для сохранения введенных значений.
  7. Запуск функции start_dialog для отображения диалоговой панели prog45.
  8. Проверка: был ли нажат кнопка accept в диалоговой панели prog45.
  9. Если кнопка accept была нажата, то вызов функции DrawFront с введенными значениями переменных.
  10. Если кнопка cancel была нажата, то выход из программы.
  11. Выгрузка диалоговой панели mywindow45.dcl.
  12. Вызов функции command для создания слоя 0 и его активации.
  13. Вызов функции DrawFront с введенными значениями переменных.
  14. Вызов функции alert с сообщением об ошибке.
  15. Вызов функции princ для очистки консоли.
  16. Вызов функции unload_dialog для выгрузки диалоговой панели prog45.
  17. Выход из программы.

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


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

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

9   голосов , оценка 4.222 из 5