| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.09.2012, 19:20 | #1 | |
Autocad 2012. Почему макрос подавляет диалоговое окно?
Регистрация: 15.08.2011
Сообщений: 48
|
||
Просмотров: 10116
|
|
||||
Цитата:
2. Кто/что мешает/запрещает посмотреть макрос, прописанный в кнопке, обозначенной в п.1?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Регистрация: 15.08.2011
Сообщений: 48
|
hwd,
1. Мне не нужна функция этой кнопки по умолчанию - отключение слоя по выбираемому объекту, а для перехода к диалоговому окну нужно совершать пару "лишних" нажатий клавиш. Вот и захотелось написать простенький макрос, заодно и поупражняться. 2. Ну и что это даст? там написано: ^C^C_laydel Пока мне удалось написать так: ^C^C_laydel\_name; но тогда при выполнении макроса надо лишний раз вручную нажать Enter... |
|||
|
||||
А я тебе не про эту кнопку говорю. "Родная" кнопка, открывающая диалоговое окно со слоями такая: ^C^C_layer. Открывается то самое окно. Поэтому и спрашиваю - чем не подошла кнопка?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Регистрация: 15.08.2011
Сообщений: 48
|
hwd,
в таком случае ты вообще не о том говоришь. Командой _layer вызывается окно диспетчера слоев. оно для меня в данном случае вовсе не желанное. Я же говорю о диалоговом окне выбора слоёв для удаления команды _laydel. Это две большие разницы. В диспетчере слоев нельзя удалить слои с "хвостами" - ссылки на несуществующие блоки, например. А команда _laydel решает эту проблему. Последний раз редактировалось vovkaf, 07.09.2012 в 20:10. |
|||
|
||||
Цитата:
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 07.09.2012 в 20:28. |
||||
|
||||
Регистрация: 15.08.2011
Сообщений: 48
|
hwd,
ну зачем столько флудить, не давая себе труда разобраться в предмете вопроса? 1) какие слои нельзя удалить в предлагаемом тобой Диспетчере, я уже написал постом выше. 2) команда _laydel открывает диалоговое окно, если после ее вызова ввести параметр _name в командной строке. Насчет "примера в студию", таковы слои -VIS, -HID, -HAT и -DIM создаваемые Автокадом при использовании команды Т-Рисование. Давай не будем больше уходить от сути. Последний раз редактировалось vovkaf, 07.09.2012 в 20:23. |
|||
|
||||
да, я тебя неверно понял сначала.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Цитата:
vovkaf, попробуй так ^C^C_laydel _name; (т. е. вместо ; пробел после _laydel) хотя у меня и ^C^C_laydel;_name; работает
__________________
cadtools |
|||
|
||||
Регистрация: 15.08.2011
Сообщений: 48
|
TararykovDG,
Пробовал, не получается Странно, что у вас работает... Позже попробую на других компах. hwd, не страшно, бывает... но я попробовал извлечь пользу из твоего совета (сначала ведь тоже не понял о чем ты): Цитата:
$M=$(if,$(and,$(>,$(getvar,LayerManagerState),0)),^C^C'_LayerClose,^C^C'_Layer) Честно говоря, я только начинаю разбираться с макросами, но по-моему это уже на Дизеле... Это навело меня на мысль, что для работы с диалоговыми окнами простых макросов не достаточно. Но тут же для сравнения попробовал команду _LAYERSTATE, которая тоже вызывает диалоговое окно. Так там простой макрос: ^C^C_LAYERSTATE Вобщем, пока ответ не найден. ... Попробовал на другом компе - эффект тот же, увы. TararykovDG, у вас автокад 12-й? и действительно сразу после нажатия кнопки появляется диалоговое окно, а не запрос в командной строке? Зато про макрос на Дизеле догадался Он только потому сложный, что одной кнопкой окно и открывается и закрывается. Последний раз редактировалось vovkaf, 07.09.2012 в 22:09. |
|||
|
||||
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
|
vovkaf, да, это действительно с использованием дизеля. кнопка в данном случае служит переключателем, если LayerManager включён (LayerManagerState>0), тогда выполняется команда LayerClose, иначе Layer. Я так же подправил кнопку менеджера внешних ссылок в 2010 автокаде, а то она умеет только открывать менеджер (ну и повесил это на горячую клавишу)
ХЫ. в следующий раз буду обновлять пост перед коментом Последний раз редактировалось bargool, 07.09.2012 в 22:13. Причина: в следующий раз буду обновлять пост перед коментом |
|||
|
||||
Я так понимаю, что идёт проверка значения системной переменной LayerManagerState: если оно равно 0 - значит диалоговое окно Layer Properties Manager закрыто. Если 1 - значит открыто и в этом случае вызывается команда _LayerClose, закрывающая это окно. В завершении вызывается _Layer.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
|
|||
|
||||
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
vovkaf, прошу меня извинить, я не внимательно прочила заголовок темы . Пропустил, что речь идет о AutoCAD 2012, пробовал в 2008, там все работает, сейчас попробовал в 2012, тот же макрос, но результат действительно другой, окна нет
__________________
cadtools |
|||
|
||||
У меня идеи закончились. Если бы можно было найти и посмотреть исходники команды _LAYDEL - то, то наверняка можно было бы по коду понять причину такого поведения...
Примечательно, что за то же время, что я различными способами пытался запустить злополучное окошко, ведь мог бы уже несколько и раз сам написать программу, делающую то же самое и даже лучше: например предоставить юзеру возможность указать с какого из удаляемых слоёв на какой другой переместить все расположенные на нём примитивы (если это нужно), прежде чем слой будет удалён... Но дома у меня только 2013-й, а .NET-приложения компилируются индивидуально для каждой версии AutoCAD, т.е. то, что я соберу для 2013-й, без перекомпиляции не запустится в 2012-м. Имхо - если обозначенная кнопка настолько нужна, то применительно к указанной задаче, наверное быстрее будет самому написать решение, чем продолжать безуспешные попытки.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 08.09.2012 в 09:08. |
||||
|
||||
Регистрация: 15.08.2011
Сообщений: 48
|
Увы, у меня тоже ничего не получилось
Одно понятно, что автокад всё-таки различает ручной ввод команды и её запуск посредством макроса. И контроль этот происходит в момент нажатия Enter или пробела после команды _laydel. И символы ";" или "^M" или " " не вполне заменяют эти действия. Ведь макрос ^C^C_laydel\_name; работает как надо (с промежуточным нажатием Enter). Но hwd прав: в данном случае цель уже не оправдывает средства. Эффект от искомой кнопки не настолько велик, чтоб писать программу или просить об этом кого-то ещё. Задача изначально носила более познавательный, чем практический характер. Пожалуй, на этом тему можно закрывать. Спасибо всем, кто откликнулся. И отдельное спасибо hwd, мне неловко, что "украл" у вас немало времени и усилий. |
|||
|
||||
Под руками нет 12 Автокада. Для ранних версий автокада диалоговое окно в запросе (например при слетевшей Filedia) можно было принудительно вызвать тильдой (~). Попробуй добавь ее после _name
^C^C_laydel;_name;~
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.09.2012 в 10:25. |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Привязка внешней ссылки (файл civil 2012) к файлу autocad 2007 | koca | AutoCAD | 1 | 26.05.2012 21:07 |
Запуск AutoCAD 2012, Inventor 2012 под пользователем | DonVik | AutoCAD | 7 | 28.02.2012 01:57 |
Настройки AutoCAD 2011 в AutoCAD 2012 | Fedorino | AutoCAD | 1 | 09.11.2011 09:11 |
AutoCAD 2009: создание массива по траектории как AutoCAD 2012 | Dimitriy | AutoCAD | 8 | 05.11.2011 21:41 |