Тема: Почему не работает макрос

^C^C_fillet;_r;0; - так работает
*^C^C_fillet;_r;0;\\ - так не хочет, останавливается
на подтверждении радиуса и не запрашивает объекты.

Re: Почему не работает макрос

Сделай так *^C^Cfiletrad;0;_fillet;//
Написал и вижу, что ошибся, надо было обратные косые черты вместо прямых. Хотел-было исправить, да решил проверить. И, оказалось, работает! (2002) Как-бы против классики (а кто классик? хе-хе)

Re: Почему не работает макрос

> Vova
1.filletrad пишется с 2-мя f.
2. В AutoCAD 2005 макрос

*^C^C_filletrad;0;_fillet;//

не работает. Работает в таком виде:

*^C^C_filletrad;0;_fillet;\\

Re: Почему не работает макрос

Да, промахнулся со второй буквой F, спешил, когда печатал. Но все работает от 02 до 05 с палочками любой косины и даже вообще без палочек, и даже так *^C^Cfilletrad;0;_fillet; в-лесу-родилась-елочка; Потому что автокад воспринимает палочки и елочки так:

Command: в-лесу-родилась-елочка
Unknown command "В-ЛЕСУ-РОДИЛАСЬ-ЕЛОчКА".  Press F1 for help

.
Просто игнорирует но профилетила до этого. То есть нормально будет так: *^C^Cfilletrad;0;_fillet;^Z
В 2005 я поставил ^z чтобы прессечь разнос автокада, который появляется если после (;) остается незамеченный пробел, равноценный Enter. Чтобы в этом убедиться, поставьте вторую (;) ^z запретит нежелательные пробелы.

Re: Почему не работает макрос

> Vova
Вот что у меня происходит при выполнении макроса

*^C^C_filletrad;0;_fillet;//
Команда: _filletrad
Новое значение FILLETRAD <0.0000>: 0
Команда: _fillet
Текущие настройки: Режим = С ОБРЕЗКОЙ, Радиус сопряжения = 0.0000
Выберите первый объект или [полИлиния/раДиус/Обрезка/Несколько]: //
*Неверный выбор*
Требуется точка или Рамка/Последний/Секрамка/БОКС/Линия/РМн-угол/СМн-угол
Выберите первый объект или [полИлиния/раДиус/Обрезка/Несколько]: *Прервано*

Интересное дело: специально следил, чтобы в конце макроса не было пробела, но при такой записи макроса он вставляется по неизвестной причине. Точка с запятой в конце не помогает. И ^Z не помогает. AutoCAD 2005 РУС.
Зато такой (нормальный) макрос

*^C^C_filletrad;0;_fillet;\\

работает очень странно: если после выполнения очередного сопряжения нажать не  Esc, а Enter или правую кнопку мыши, то кажется, что цикл закончился корректно. Однако нажатие ЛЕВОЙ кнопки мыши опять запускает команду "_fillet".

Re: Почему не работает макрос

А шо ж вы хочете? По правому клику вызывается последняя команда. Без опций. Отсюда мораль - оформляйте как отдельную defun (если это в принципе возможно), тогда и вызываться будет она :) Например, так:

^C^C^P(defun c:myfil() (while (vl-cmdf "_.filletrad" 0 "_fillet") (princ)));myfil;

Писал без запущенного акада, и без проверок соответственно. Так что за возможные ошибки прошу не бить :)

Re: Почему не работает макрос

> Кулик Алексей aka kpblc
По правому клику - ясно. А вот почему по ЛЕВОМУ?

Re: Почему не работает макрос

Спасибо всем за ответы.
*^C^C_filletrad;0;_fillet;\\
меня устраивает (проблемы с ПРАВЫМ/ЛЕВЫМ не очень для меня существенны)
поэтому решение вопроса есть.
Но есть новый вопрос. Как сделать, чтобы после отработки этого макроса,
значение текущего радиуса вернулось на предыдущее?

Re: Почему не работает макрос

Это называется дашь палец-руку откусит. То, что ты просишь, называется программированием. Мне кажется, интереснее для тебя будет, если сделаешь сам, потому что тогда ты распространишь свои знания на многие вещи в автокаде, и тебе станут интересными такие детали, как - по какому клику что и почему происходит. Пока

проблемы с ПРАВЫМ/ЛЕВЫМ не очень для меня существенны)

Купи книжку AutoCAD Язык макрокоманд и создание кнопок, там все есть

Re: Почему не работает макрос

Ну ладно, не ругайтесь. Нет, так нет.
Все равно спасибо,
Суважением, wo!

Re: Почему не работает макрос

Стоп, ребята. WO! какой у тебя автокад? Начиная от 2004 есть опция U для множественного сопряжения. В 2006 (по-памяти) опция М. Здесь звездочка не требуется

^C^Cfilletrad;0;_fillet;_u

Re: Почему не работает макрос

Тут какая-то чертовщина. Если мы вызываем команду "_fillet" из меню или из командной строки, то надо задавать опцию "_m" исходя из запроса

Select first object or [Undo/Polyline/Radius/Trim/Multiple]:

Если же команда вызывается из макроса, то надо вводить опцию "_u" исходя из запроса

Select first object or [uNdo/Polyline/Radius/Trim/mUltiple]:

Откуда такая разница в опциях?

Re: Почему не работает макрос

Я имел в виду AutoCAD 2006 ENG.

Re: Почему не работает макрос

Прошу прощения, не указал сразу версию.
У меня 2006 рус.
А опция множественного сопряжения действительно есть.
Макрос с ней работает красивей. Я эту опцию и на стандартную кнопку приписал.
И чего так сразу не сделать? Как раньше копирование было с опцией.
Теперь слава богу догадались. На верное и до сопряжения очередь дойдет.
Спасибо
С уважением, wo!