Тема: Как сделать команду "прозрачной"?

В Acad 2006 есть макрос
$M=$(if,$(and,$(>,$(getvar,clistate),0)),^C^C_commandlinehide,^C^C_commandline)
Он открывает и закрывает командную строку. Но работает только как отдельная команда. Т.е. посреди другой команды не срабатывает. Можно ли исправить эту команду так, чтобы она срабатывала и посреди другой команды, как например 'z даёт возможность сделать zoom посреди выполнения команды вычерчивания линии.

Re: Как сделать команду "прозрачной"?

Попробуй снести в коде ^C^C, да и перед _commandlinehide поставить ': _'commandlinehide
Хотя, честно говоря, с трудом представляю себе ситуацию, когда командная строка не нужна...

Re: Как сделать команду "прозрачной"?

Не срабатывает. В 2006 автокаде коммандная строка практически не нужна, т.к. всё, что там пишется дублируется в строке появляющейся рядом с курсором.

Re: Как сделать команду "прозрачной"?

Ну тогда пас

Re: Как сделать команду "прозрачной"?

A2004 И раньше...
(textscr) и (graphscr)
переключение между "графическим" и "текстовым" окном...
Попробуйте в Help на А2006 посмотреть эти функции, может, там будут уточнения в связи с новшествами...

Re: Как сделать команду "прозрачной"?

> vig11
Добрый день!
Можно попробовать что-нибудь типа vlax-add-cmd Function.
(defun a () (princ "A"))
(vlax-add-cmd "b" 'a "b" 1)
Тогда функцию(команду) 'b можно использовать,как прозрачную.
В help по vlax-add-cmd Function есть пример.

Re: Как сделать команду "прозрачной"?

Рaя, дoбрый день. A кaк этo кoнкретнo в дaннoм случaе сделaть? Я плoхo знaю Visual Lisp.

Re: Как сделать команду "прозрачной"?

> vig11
Игаль,добрый день!
У меня нет АC2006,а только AC2005,в котором нет COMMANDLINE и COMMANDHIDELINE,но я попробовала вместо одной из этих команд,например, следующее:
(defun f2 ()
  (setvar "CMDDIA" 0);вместо COMMANDLINE
)
(vlax-add-cmd "f2" 'f2 "f2" 1)
Тогда,вызвав какую-нибудь команду,например "PLINE",можно вызвать и прозрачную 'f2.
Command: pl
PLINE
Specify start point: 'f2
Resuming PLINE command.
Specify start point:
и можно продолжать PLINE.При этом "CMDDIA" устанавливается в 0.
Однако,стоит заменить (setvar "CMDDIA" 0) на что-нибудь,содержащее слово
"command" (command "layer" "n" "la2" ""),a в вашем случае,наверное, (command "COMMANDLINE"),AС2005 с треском вываливается.
Я думаю,что можно поэкспериментировать с VLISP,но я с ним тоже не работаю,хотя,наверное,займусь,когда выдастся время.

Re: Как сделать команду "прозрачной"?

Acad 2006 тоже валится если поставить (command "commandline"). Точнее после выполнения первой команды (посреди которой мы хотели бы выполнить ещё и "прозрачную" команду) он делает нужное действие с командной строкой, но затем валится. Пишет, что нельзя делать команды более 4-ех кратной вложенности. Думаю, что мы на правильном пути, но .... как говорил классик "Чего-то в этом супе не хватает". А вопрос действительно стоит, чтобы покопаться, частенько нужна "прозрачная" команда.

Re: Как сделать команду "прозрачной"?

Цитата из AutoLISP Developer's Guide/Using AutoLISP Language/AutoLISP Basics/Symbol and Function Handling/C:XXX Functions:

A function defined in this manner can be issued transparently from within any prompt of any built-in AutoCAD command, provided the function issued transparently does not call the command function. (This is the AutoLISP function you use to issue AutoCAD commands; see the entry on command in the AutoLISP Reference.) When issuing a C:XXX defined command transparently, you must precede the XXX portion with a single quotation mark (').

То есть свою команду можно использовать "прозрачно", если внутри не используется (command).

Re: Как сделать команду "прозрачной"?

А аналог (command) - vl-cmdf ???

Re: Как сделать команду "прозрачной"?

К сожалению,для Автокада vl-cmdf - всё тот же "command"

Re: Как сделать команду "прозрачной"?

Да, я уже проверил. Автокад рухнул так же как и при написании "command"

Re: Как сделать команду "прозрачной"?

Я пользую такой вариант:
(vla-sendcommand adoc (strcat<command> " " " "))
на 2000-м работает
~'O'~

Re: Как сделать команду "прозрачной"?

А конкретнее, применительно к моему вопросу можете пояснить? Как записать?

Re: Как сделать команду "прозрачной"?

> vig11
"...применительно к моему вопросу можете пояснить?..." А вопрос в чем?
1. Сделать любую команду ACAD прозрачной? - Нет любую нельзя...
2. Скрыть "командную строку"? Откуда?
2.1 Волшебной последовательностью нажатия клавиш?
2.2 Кнопкой в "кнопочном меню"?
2.3 Горячей клавишей?
2.4 Горящим взглядом...?

Re: Как сделать команду "прозрачной"?

Command: 'commandline
** That command may not be invoked transparently **

Так что IMHO ничего сделать нельзя.