ADN Club > AutoLisp / VisualLISP и DCL

программа снимается по непонятной причине

(1/4) > >>

altver:
Добрый всем день!
столкнулся со следующей проблемой:
приложенный лисп (не важно, что он выполняет) в самом начале должен подправить экран, а именно:
- включить MENUBAR,
- вкючить COMMANDLINE
- сделать фон экрана черным.
Порядок такой: я выключаю руками MENUBAR, COMMANDLINE и делаю фон экрана НЕ черным.
лисп все чинит и снимается. и только со второго раза (когда все починено) начинает работать...
ПОЧЕМУ???
Прошу помощи!
Спасибо заранее!

altver:

--- Код - Auto/Visual Lisp [Выбрать] ---(defun c:BGblack ()  (vl-load-com) (setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object)))) (setq drafting (vla-get-drafting (vla-get-preferences (vlax-get-acad-object)))) (vla-put-GraphicsWinModelBackgrndColor disp 0) (vla-put-ModelCrosshairColor disp 16777215) (vla-put-AutoSnapMarkerColor drafting 2) (princ))(defun Quick ( / )                                      (command "commandLine")                                      (c:BGblack)                                      (if (getvar "MENUBAR")(setvar "MENUBAR" 1))                                       (command "_.addselected"  pause)                                   (while (= (getvar "cmdactive") 1)                                         (command pause)                                   )                                         )(quick)

Алексей Кулик:
Код рушится на команде _.addselected (достатчно поставить точку останова на (command "_.commandline"). Почему ломается - я пока не знаю.

Алексей Кулик:
Вот такой код вроде бы срабатывает плюс-минус нормально:

--- Код - Auto/Visual Lisp [Выбрать] ---(vl-load-com) (defun c:bgblack ()  (bgblack)  (princ)) ;_ end of defun (defun bgblack (/ disp drafting)  (setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object))))  (setq drafting (vla-get-drafting (vla-get-preferences (vlax-get-acad-object))))  (vla-put-graphicswinmodelbackgrndcolor disp 0)  (vla-put-modelcrosshaircolor disp 16777215)  (vla-put-autosnapmarkercolor drafting 2)) ;_ end of defun (defun quick (/ err)  (command "_.commandLine")  (bgblack)  (if (getvar "MENUBAR")    (setvar "MENUBAR" 1)  ) ;_ end of if  (if (vl-catch-all-error-p        (setq err (vl-catch-all-apply                    (function (lambda ()                                (command "_.addselected" pause)                                (while (= (getvar "cmdactive") 1)                                  (command pause)                                ) ;_ end of while                              ) ;_ end of lambda                    ) ;_ end of function                  ) ;_ end of vl-catch-all-apply        ) ;_ end of setq      ) ;_ end of VL-CATCH-ALL-ERROR-P    (princ (strcat "\n" (vl-catch-all-error-message err)))  ) ;_ end of if) ;_ end of defun(quick)---
Добавлено:
И вот еще - постарайся либо вместо command использовать vl-cmdf, либо проверяй доступность command-s и при первой же возможности используй command-s

altver:
Спасибо большое, Алекей, однако и Ваш код снимается, аналогично моему... не вижу разницы к сожалению...Еще идеи есть?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии