QAFLAGS bitcode 0 – 32767* R11 bit 0 (1) : ^C in menu macro cancels grips (acts like keyboard ).
bit 1 (2) : no pause during text screen listings.
bit 2 (4) : no “alert” dialogs (text display instead).
bit 7 (128) : accepts “screen picks” (point lists) via (command) function.
*Note that this was an integer with range -32768 – 32767 in R11, then it changed to 0 – 32767 in R12.[2]

Вольный перевод:•QAFLAGS = 1. При вызове команд из меню или панелей генерируется нажатие клавиши ESC (снимаются грипсы)
•QAFLAGS = 2. В текстовом экране AutoCAD (F2), при выводе длинных списков (например командами LIST или MASSPROP), предотвращается пауза с предложением ” Press ENTER to continue: “, т.е. предотвращается генерация списков страниц.
•QAFLAGS = 4. Это предотвратит вывод диалогового окна предупреждений (Alert) в AutoCAD. Вместо этого предупреждение будет выведено в командной строке.

Небольшие пояснения. QAFLAGS=1
Команды, требующие выбора объектов (например _MOVE) перестают “обращать внимание” на значение системной переменной PICKFIRST.
Т.е. при вызове команды из меню или панели сначала генерируется нажатие ESC (снимаются если есть грипсы предварительного выбора).
Пример.
1. Устанавливаем QAFLAGS в 1
2. Предварительно выбираем объекты на экране
3. Вызываем из панели команды _MOVE
Эффект: Команда всегда запрашивает “Выберите объекты”
В то же время если PICKFIRST=1 и выполнить пункты 1 и 2, а в п.3 набрать _MOVE в командной строке, то предварительный выбор будет “съеден

qaflags=2 полезная вещь, если надо распечатать список переменных. В книге Н.Н. Полещука (2004) сказано: Точного описания нет. Влияет на режим работы некоторых LISP-функций, выводящих сообщения (например, alert). Хорошо-бы он прочитал тему

“главное” – что в нормальном случае QAFLAGS = 0

Обнаружился еще один интересный нюанс использования QAFLAGS. Это касаестя использования команды _EXPLODE при вызове из Lisp-функций и Lisp-скриптов.

Примечание:Если используется какой-либо пакет или функция ObjectARX®, то за один раз можно выполнить расчленение только одного объекта.


(defun c:440 ( / *error* ss qf )
;; © Lee Mac 2010
(defun *error* ( msg )
(and qf (setvar 'QAFLAGS qf))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ)
)
(if (setq ss (ssget "_X" '((0 . "INSERT"))))
(progn
(setq qf (getvar 'QAFLAGS))
(setvar 'QAFLAGS 5)
(command "_.explode" ss "")
(setvar 'QAFLAGS qf)
)
)
(princ)
)

 

Advertisements