Выполнять несколько команд в LISP последовательно
Я запускаю приложение.arx в AutoCAD. Когда мы нажимаем на настраиваемую вкладку в AutoCAD, она запускает программу в командной строке AutoCAD. Функция LISP, которую мы выполняем, выглядит следующим образом;
(defun c:XYZ_program()
(command)
(command)
(arxload "C:/ABC/XYZ.arx")
(command "XYZ_program")
(arxunload "XYZ.arx"))
Мне нужно выполнить процесс "ЗАГРУЗИТЬ.arx" -> "Выполнить его полностью" -> "РАЗГРУЗИТЬ.arx"
Теперь, когда я запускаю это для ввода-вывода на основе меню.arx, он работает нормально, но когда некоторым программам требуется ввод из командной строки AutoCAD, выдается сообщение об ошибке "unload fail".
Я полагаю, что происходящий здесь процесс - "Загрузить arx" -> "ЗАПУСК через командную строку" -> "ЗАПУСК до полного выполнения arx. И поэтому выдает ошибку".
Любая помощь с этим будет высоко ценится.
2 ответа
Я получил ответ от еще нескольких исследований и помощи.
В LISP способ выполнения команд последовательно, мы можем использовать (progn expr ....)
Однако, если некоторые программы принимают ввод из командной строки, это может не помочь. Вышеуказанная проблема была конкретно с приложениями AutoCAD и.arx, поэтому мы можем включить следующую строку в программу VC++.
ads_queueexpr(_T("(arxunload \"XYZ\")") );
Надеюсь это поможет.
Вам нужно разместить на http://www.cadtutor.net/ больше гадов там.
Lisp высоко поддерживается и хорошо документирован на этом сайте.