|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как переопределить команду Mirror?
проектировщик ОВ и ТМ
Ростов-на-Дону
Регистрация: 16.08.2005
Сообщений: 106
|
||
Просмотров: 4893
|
|
||||
проектировщик ОВ и ТМ Регистрация: 16.08.2005
Ростов-на-Дону
Сообщений: 106
|
Поставил макрос на существующyю кнопку. При первом нажатии выполняет вообще не спрашивая,но исходный объект валит нафиг, при повторном нажатии на правую кнопку (повтор последней команды) команда выполняется в обычном режиме, т.е по умолчанию "N".
|
|||
![]() |
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
![]() |
Вешай на кнопку лисп выполняется по ЕНТЕРу последняя команда и только, поэтому макрос надо загнать в скобки - сделать как единую команду
|
|||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
Вот вариант с опциям, о которых вы спрашивали. Он, правда, немного "шумный"
![]() Код:
ps исправился - добавил в первую троку кода / a |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Попробуй такой макрос, будет повторять покеда не прервешь ескейпом
Код:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Всем привет!
Осталось только заменить встроенную команду на переопределенную и будет полное счастье :-) Для этого есть команды _undefine (НЕТКОМ) и ее антипод _redefine (ДАКОМ) Тогда и менюшки переделывать не придется...
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
проектировщик ОВ и ТМ Регистрация: 16.08.2005
Ростов-на-Дону
Сообщений: 106
|
Всем большое спасибо!
Немножко о том,что получается: Макросы работают безусловно, т.е исходный объект eras'ится без всяких "Y"/"N".Это все-таки не совсем комфортно. А вот лисп с вариантами - это как раз то,что нужно. Загрузил его в Startup Suite,а в макросе на кнопке заменил mirror на mirror2. Единственное (не считайте это хамством ![]() Еще раз большое спасибо. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
> AY : замени строку (initget "_Yes _No") на (initget "Да Нет _ Yes No"). Возвращаться будет в любом варианте Yes или No. Тогда в (command) надо будет писать... В общем, вот твой код:
Код:
Добавлено (и исправлено): P.S. Для гарантии работы желательно при вызове команд использовать не "_", а "_."
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
>>kpblc
А зачем мне "Да Нет" если я их не использую это может вести к ошибке если юзер нажмет в руcской раскладке Н думая, что нажимает Y в английской и функция вернет _No , а в остальном ты прав, конечно. Я вот пробовал сделать, что б все запросы были в таком же виде как в mirror получилось не совсем идентично. Код:
|
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Привет!
Попробуй (initget "Да Yes Нет No _ Yes Yes No No") Где-то как-то что-то подобное обсуждалось, забыл только, где и что. Так что играться надо с (initget), возможно, и мой вариант окажется не универсальным - так, слепил "на скорую руку"...
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
>>===AAA===
Это не решает проблему все равно если нажимать Y при включенной руской раскладке (а такое будет сучаться гораздо чаще, чем можно подумать) функция будет возвращать _No. Если подходить серьезно то, наверное, надо писать отдельно вызовы "удалить да/нет" -для русской локализации и отдельно английский вариант и запускать необходимый вариант в соответствии с локализацией. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Привет!
Так-то оно так, но во-первых, на экране отражается символ, который вводит пользователь, а во-вторых, зачем ему давить "Y" (да еще и на русской раскладке!), если "Y" стоит по-умолчанию и достаточно нажать Enter? Хотя, в принципе, ты прав - программа _может_ отработать не так, как об этом _подумал_ пользователь :-) В любом случае - это не смертельно, т.к. есть команда "Отмени". А юзеров надо воспитывать, а не пытаться додумывать все за них :-)))
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
проектировщик ОВ и ТМ Регистрация: 16.08.2005
Ростов-на-Дону
Сообщений: 106
|
$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_mirror,^C^C_mirror)
Вот это макрос на кнопке MIRROR в 2006 Каде. Я только начинаю учить функции лиспа, поэтому еще не все понимаю. Может здесь зарыта собака? А две кнопки - хорошо, только на 6-м часу работы в каде уже COPY с MOVE путаешь, не то что 2 MIRRORa. |
|||
![]() |