|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Нерешаемая задача?
Черт с ним, с Map 3D. Может быть так: как в макросе после лиспа типа (progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)) от VVA или т.п. выполнить обычные консольные команды? Не встраивать действия внутрь лиспа (поскольку из него не все запускается), а записать после него? У меня такие команды воспринимаются как параметры для команд из лиспа, а не как команды, которые нужно выполнить после.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Попробуй нечто типа
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Спасибо! Но вопрос немного в другом.
Скрупулезно старый лисп VVA я не проверял, но в целом, допустим, он устраивает. Вопрос не только и не столько в подходящем лиспе. Вопрос в том, как в одном макросе после лиспа выполнить консольную команду? Или - как завершить выполнение лиспа, чтобы сработала команда послеработы лиспа? Дописать после лиспа перед командой что-нибудь вроде ;_ end of progn?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
АлексЮстасу, консольная команда и так сработает: (command "_.-layer" "_create" и т.д. Вопрос, насколько я понял, был в обработке команды, имеющей только режим диалогового окна. Я тебе пример и показал (тот факт, что я использовал _.arrayclassic, на принцип не влияет никоим образом).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Например, после ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)) (command "_EXPLODE" "_L") Разбивание не производится, а пишется: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 12.02.2014 в 16:41. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
АлексЮстасу, во-первых, у тебя не проверяется корректность срабатывания команды _.pline. Во-вторых, ты сравниваешь cmdactive с 1, а я с 0. Попробуй прогнать либо #642, либо такой:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Вопрос сейчас не только про лисп... Или в первую очередь не про сам лисп. Вопрос про то, как в одном макросе соединить лисп и консольные команды. Не вызвать лиспом команду, не встроить в лисп команду, а выполнить в макросе сначала лисп, а потом, после, независимо от лиспа выполнить команду?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Почему нет?
Для меня это путь был бы самым простым. В том числе и потому, что лиспера, разбирающегося в Map 3D здесь пока не обнаружилось, а команды Map 3D из этих лиспов не идут: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 12.02.2014 в 18:56. |
||||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Потому, что нельзя объять необъятное и не стоит делать плохо, когда можно сделать хорошо. А во=вторых, чтобы нарисовать замкнутый контур из отрезков не обязательно рисовать полилинию замыкать ее, а потом разбивать, достаточно просто нарисовать отрезки и замкнуть последний
|
|||
|
||||
Цитата:
Замкнутый контур, контур из отрезков, рисование полилиний, разбивание и пр. - это лишь примеры. Для простоты. Без конкретного смысла. О чем я с первого своего сообщения на эту тему писал. Не столько прошу помощи написать мне лиспы или макросы, сколько прошу научить, как это писать, чтобы работало. В частности, как собирать макросы из готовых, допустим, лиспов и команд вертикального приложения.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 12.02.2014 в 20:17. |
||||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
просто поймите, что макросы не предназначены выполнять всю рутинную работу за вас, это делают приложения на разных языках, а макросы просто склеивают это воедино или выполняют мелкие операции, как-то ткнуть пару опций в команде или засветить пимпочку в менюшке
|
|||
|
||||
Посмотрите - ровно такую задачу и решаю: соединить, например, черчение полилинии с каким-то действием над ней. Как раз для макроса.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
|
||||
Цитата:
А вне лиспа эти команды срабатывают.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 13.02.2014 в 01:59. |
||||
|
||||
Намекните что-нибудь.
Уже раза три здесь писал, что, например, на Map 3D команду _.adeattachdata;имя_ОД;_a;_n;_l;; или (command "_.adeattachdata" "имя_ОД" "_a" "_n" "_l") пишется: Цитата:
Это если ее вставить в лисп VVA вместо штрихования: ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_-bhatch" "_P" "_SOLID" "_S" (entlast) "" "")) Например, так: ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_.adeattachdata" "Apron" "_a" "_n" "_l")) или ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)((command "_cmddia" "0")(command "_.adeattachdata" "Apron" "_a" "_n" "_l")(command "_cmddia" "1"))) то неизменно сообщают: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мои динамические блоки | Shoorup | Динамические блоки | 2713 | 21.04.2011 23:34 |
Повторение выполнения макрокоманды по циклу. КАК? | Kostinok | AutoCAD | 12 | 05.12.2007 15:40 |
Мои проекты | Vova | Разное | 10 | 08.10.2007 23:18 |
Мои палитры инструментов на соседний компьютер | Pave1 | AutoCAD | 4 | 27.06.2006 09:45 |