|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
подскажите уважаемые:
1.сделал команду ^C^C_маскировка;к;в 2.повесил ее на кнопку собственно вопрос, как сделать, что бы ее можно было вызывать клавиатурным сокрацением (не ctrl+, а типа мскв??? пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво |
||||
![]() |
|
||||
Сообщений: n/a
|
Цитата:
Код:
|
|||
|
||||
Сообщений: n/a
|
Цитата:
Я просто не подумал, что "именованные" макросы AutoCAD "помнит" только после одного запуска самого макроса и до завершения работы в текущем сеансе программы. А чтобы команды загружались сразу - это только через создание файла *.lsp и добавление его в автозагрузку. ![]() |
|||
|
||||
gomer, Спасибо!
Offtop: то что надо работает. особенно Код:
![]() только вот поправил ![]() Код:
Обновление атрибутов, работает криво: Код:
AUTOCAD 2010 Последний раз редактировалось doctorraz, 28.03.2010 в 12:10. |
||||
![]() |
|
||||
Регистрация: 22.12.2008
Сообщений: 17
|
А ответа на вопрос faeto1982 про именованный фильтр нет? (пост 280)
Тоже интересует, чтобы не появлялось диалоговое окно "фильтры выбора объектов", а сразу нужная опция из этого окна автоматически подставлялась в макросе. Как это делается? |
|||
![]() |
|
||||
Пост #281 дает загадочный (для неподготовленного) и вполне исчерпывающий (для людей опытных) ответ
![]() Вообще, как мне кажется, активировать именованный фильтр без запуска диалогового окна невозможно. А в посте #281 дается альтернативный вариант - все необходимые параметры (по которым фильтруем) указываются при помощи DXF-кодов. |
||||
![]() |
|
||||
Регистрация: 12.07.2008
Сообщений: 211
|
Цитата:
![]()
__________________
Users are not stupid, they are busy. |
|||
![]() |
|
||||
Регистрация: 22.12.2008
Сообщений: 17
|
Цитата:
Создав свою кнопку и в свойствах вставив макрос: ^C^C^P(defun selectobjects( / ss )(setq ss "_A" (ssget '((0 . "LINE")))) (sssetfirst ss ss));selectobjects -AutoCAD 2006 выдаёт ошибку. О DXF-кодах в справке к Автокаду ничего нет. Где смотреть то? Чтобы не гадать, вот что мне нужно: К примеру, в командной строке ввожу 'фильтр. Выскакивает окно "Фильтры выбора объектов". Выбираю фильтр "Размер", добавляю его в список. Нажимаю кнопку "Применить". Окно закрывается и рамкой выбираю объекты. В результате выбираются только размеры, нажимаю enter. Так вот как написать макрос к отдельной кнопке, чтобы не выскакивало окно "Фильтры выбора объектов" (и не нужно было выбирать конкретный фильтр), а сразу пользователь перемещался к шагу выбора объектов рамкой? Т.е. критерий ("Размер") сразу прописать в макросе. Как это сделать, подскажите, пожалуйса? Последний раз редактировалось victor.m4, 06.04.2010 в 18:49. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 22.12.2008
Сообщений: 17
|
Do$, спасибо большое. Ваш вариант работает, но только как отдельная команда. А мне нужен аналог именно ком. для прозрачного вызова, т.е. 'фильтр "размер" должен выполняться во время выполнения основной команды.
Объясню полнее. У меня была своя кнопка с макросом: ^C^C(km_dimsreda) km_dimord_base X;\'фильтр; - это в программе 3D-Constructor 3.5 (мебельное приложение к Автокаду)..Вот вместо прозрачной 'фильтр и нужно подставить ещё макрос выбора размеров (без диалогового окна "Фильтры выбора объектов"). Если подставляю ваш макрос, то основная команда прерывается. А этого быть не должно. Т.е. фильтр по размеру является дополнением основной команды. Как это реализовать? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
1. Прочитать книгу В.Света "AutoCAD : Язык макрокоманд и создание кнопок" (по-моему, даже в Download была).
2. Попытаться снять ^C^C перед началом макроса.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Здесь, похоже, недоработка разработчиков приложения. Если программа предназначена для обработки размеров (судя по названию), то кроме размеров ничего не должно выбираться.
"Фильтр без диалога" при помощи autolisp-функции ssget можно применять для стандартных команд autocad, например, для удаления только размеров: Код:
Для приложений от сторонних разработчиков такие конструкции нужно пробовать медотом "тыка" и не факт, что удастся заставить работать. Пробуйте. Если не получится - попытайтесь достучаться до разработчиков приложения, чтобы они добавили фильтр в тело программы. Или не задумывайтесь и работайте как раньше ![]() |
||||
![]() |
|
||||
Регистрация: 22.12.2008
Сообщений: 17
|
Do$, спасибо за участие. Но увы, пока мне не удаётся реализовать команду.
Попробую поискать литературу по LISP'у, может что вычитаю. P.S. У разработчиков 3D-Constructor в команде всё правильно. Просто в ней есть ещё разные опции (но вот для "подопции" опции выделения сразу всех размеров нет). Это я сделал отдельные кнопки под конкретные опции, в которых требуется выделение размеров. Но пока кликов мыши многовато. Хотелось бы сократить. P.P.S. По-моему дописывать в мою исходную команду: ^C^C(km_dimsreda) km_dimord_base X;\'фильтр; вместо "'фильтр" ещё какой-нибудь именно LISP - это вообще нельзя!... Обратил внимание в командной строке выскакивает: "Повторный вход в LISP невозможен ". Может как раз наоборот можно только на языке макрокоманд... Засада... Надо бы почитать правила. Последний раз редактировалось victor.m4, 08.04.2010 в 00:53. |
|||
![]() |
|
||||
Так правильно же! Выполняется пользовательская LISP-функция km_dimsreda. В этом случае можно запускать только функции, работающие в "прозрачном" режиме.
Попробуйте загрузить файлик с таким кодом: Код:
|
||||
![]() |
|
||||
Регистрация: 22.12.2008
Сообщений: 17
|
Do$, сохранил ваш лисп, прописал к нему путь, загрузил в программу.
Затем подставил вместо 'фильтр 'dimfl. Нет, что-то не то. Не воспринимает исходная программа 'dimfl также как 'фильтр. Если ^C^C(km_dimsreda) km_dimord_base X;\'dimfl; то размеры выделяются, но снова следует запрос "выберите объекты", как будто и не было выделения. Если ^C^C(km_dimsreda) km_dimord_base X;\'dimfl;; то этап выбора "только размеров" вообще пропускается. Если ^C^C(km_dimsreda) km_dimord_base X;\'dimfl;Последний; ^C^C(km_dimsreda) km_dimord_base X;\'dimfl;Предыдущий; то результат как в первом случае. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мои динамические блоки | 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 |