Мои макрокоманды - Страница 15
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Мои макрокоманды

Мои макрокоманды

Ответ
Поиск в этой теме
Непрочитано 19.05.2008, 15:20 1 |
Мои макрокоманды
zenon
 
Остекляем!!! Алюминим!!!
 
Москва
Регистрация: 21.02.2005
Сообщений: 3,917

Предлагаю в данной теме выкладывать используемые макрокоманды.
Выкладывать прошу с описанием, что данная макрокоманда выполняет и как. Если можно, то и рисунки к кнопкам соотвественно.

Выкладываю 4 своих макрокоманды.

Улучшенная команда _Break, разрыв в одной точке с повтором по правой клавише мышки.
Цитата:
^C^C^P(defun c:break2 () (vl-cmdf "_break" pause "f" pause "@")(princ));break2;
ps. Макрокоманда не моя. Рисунок со старой кнопки.


Объект Xline строится горизонтально
Цитата:
^C^C_xline;_h;
Объект Xline строится вертикально
Цитата:
^C^C_xline;_v;

Объект Xline строится по объекту (не работает по примитивам блока и arx объектов сторонних навесок на автокад).
Цитата:
*^C^C_xline;_offset;_Through;_nea;\_none;@;;
Макрокоманда зациклена, выход по Esc.
ps. Макрокоманда не моя.


Объект Xline строится по объекту, с поворотом в указанной точке на 90 градусов (не работает по примитивам блока и arx объектов сторонних навесок на автокад)
Цитата:
^C^C_xline;_offset;_Through;_nea;\_none;@;^C^C_rotate;_last;;\90;
ps. Макрокоманда доработана из предыдущей.

Соотвественно и кнопочки
Button.rar

__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
Просмотров: 482277
 
Непрочитано 17.01.2010, 22:00
#281
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Код:
[Выделить все]
^C^C^P(defun selectobjects( / ss )(setq ss "_A" (ssget '((0 . "LINE")))) (sssetfirst ss ss));selectobjects
А DXF-коды и их смысл смотри в справке
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.03.2010, 01:15
#282
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


подскажите уважаемые:
1.сделал команду ^C^C_маскировка;к;в
2.повесил ее на кнопку
собственно вопрос, как сделать, что бы ее можно было вызывать клавиатурным сокрацением (не ctrl+, а типа мскв???
пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
doctorraz вне форума  
 
Непрочитано 27.03.2010, 09:27
#283
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от doctorraz Посмотреть сообщение
подскажите уважаемые:
1.сделал команду ^C^C_маскировка;к;в
2.повесил ее на кнопку
собственно вопрос, как сделать, что бы ее можно было вызывать клавиатурным сокрацением (не ctrl+, а типа мскв???
пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
А может попробовать создать такой макрос?
Код:
[Выделить все]
^C^C(defun C:МСКВ () (command "МАСКИРОВКА" "к" "в" ) (princ));МСКВ;
 
 
Непрочитано 27.03.2010, 12:36
#284
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


AlphaGeo, спасибо работает, только надо по кнопкам команды разок мышкой нажать, потом работает с клавиатуры.
не знаю правильно или нет сделал так:
Код:
[Выделить все]
(defun C:1 () (command "МАСКИРОВКА" "к" "в" ) (princ));1;
(defun C:2 () (command "МАСКИРОВКА" "к" "о" ) (princ));2;
файл обозвал *.lsp и добавил в автозагрузку.
doctorraz вне форума  
 
Непрочитано 27.03.2010, 15:22
#285
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от doctorraz Посмотреть сообщение
не знаю правильно или нет сделал так:
Код:
[Выделить все]
(defun C:1 () (command "МАСКИРОВКА" "к" "в" ) (princ));1;
(defun C:2 () (command "МАСКИРОВКА" "к" "о" ) (princ));2;
файл обозвал *.lsp и добавил в автозагрузку.
Конечно, правильно!
Я просто не подумал, что "именованные" макросы AutoCAD "помнит" только после одного запуска самого макроса и до завершения работы в текущем сеансе программы. А чтобы команды загружались сразу - это только через создание файла *.lsp и добавление его в автозагрузку.
 
 
Непрочитано 28.03.2010, 01:01
#286
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


подскажите пожалуйста уважаемые:
есть макрос который поворачивает атрибут в ноль
Код:
[Выделить все]
*^C^C_-Attedit;;;;;\;_Angle;0;;
пытаюсь то же сделать на лиспе...
Код:
[Выделить все]
(defun C:АТО ()
  (command "-АТРЕД" "д" "*" "*" "*" pause "у" "0")
  (princ)
);крутим атрибут в 0
то что красным бред, а как правильно?
doctorraz вне форума  
 
Непрочитано 28.03.2010, 03:17
#287
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Ну можно вот так:
Код:
[Выделить все]
(defun C:AT0 ( / *error* ocmde )
  (defun *error* (msg) (setvar 'cmdecho ocmde) (princ))
  (setq ocmde (getvar 'cmdecho))
  (setvar 'cmdecho 0)
  (prompt "\nТкни атрибут: ")
  (command "_.-attedit" "_y" "*" "*" "*" pause "" "_a" "0" "")
  (C:AT0)
);крутим атрибут в 0 - Выход по [Esc]

Последний раз редактировалось gomer, 28.03.2010 в 14:39.
gomer вне форума  
 
Непрочитано 28.03.2010, 11:26
#288
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


gomer, Спасибо!
Offtop:
то что надо работает.
особенно
Код:
я все думал, как зациклить

только вот поправил :
Код:
[Выделить все]
 (command "_-attedit" "_y" "*" "*" "*" pause "" "_a" "0" "")
_____________________________
Обновление атрибутов, работает криво:
Код:
[Выделить все]
(defun C:ОА ()
  (vl-cmdf "_.ATTSYNC" "_S" Pause "_Y")
  (C:ОА)
);Обновить атрибуты с запросом указания блока.;
невозможно отменить команду никак!!
AUTOCAD 2010

Последний раз редактировалось doctorraz, 28.03.2010 в 12:10.
doctorraz вне форума  
 
Непрочитано 06.04.2010, 14:27
#289
victor.m4


 
Регистрация: 22.12.2008
Сообщений: 17


А ответа на вопрос faeto1982 про именованный фильтр нет? (пост 280)

Тоже интересует, чтобы не появлялось диалоговое окно "фильтры выбора объектов", а сразу нужная опция из этого окна автоматически подставлялась в макросе. Как это делается?
victor.m4 вне форума  
 
Непрочитано 06.04.2010, 16:05
#290
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Пост #281 дает загадочный (для неподготовленного) и вполне исчерпывающий (для людей опытных) ответ
Вообще, как мне кажется, активировать именованный фильтр без запуска диалогового окна невозможно. А в посте #281 дается альтернативный вариант - все необходимые параметры (по которым фильтруем) указываются при помощи DXF-кодов.
Do$ вне форума  
 
Непрочитано 06.04.2010, 16:39
#291
acyxou


 
Регистрация: 12.07.2008
Сообщений: 211


Цитата:
Сообщение от doctorraz Посмотреть сообщение
подскажите уважаемые:
<...>пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
Это есть красиво! Записанные макросы (файлы *.actm) складывайте в папку с лиспами и добавьте ее в пути поиска Автокада (OPTIONS -> Files -> Action Recorder Settings -> Additional Actions Reading File Locations). От туда макросы будут работать во всех файлах
__________________
Users are not stupid, they are busy.
acyxou вне форума  
 
Непрочитано 06.04.2010, 17:51
#292
victor.m4


 
Регистрация: 22.12.2008
Сообщений: 17


Цитата:
Сообщение от Do$ Посмотреть сообщение
Пост #281 дает загадочный (для неподготовленного) и вполне исчерпывающий (для людей опытных) ответ
Вообще, как мне кажется, активировать именованный фильтр без запуска диалогового окна невозможно. А в посте #281 дается альтернативный вариант - все необходимые параметры (по которым фильтруем) указываются при помощи DXF-кодов.
Я и есть тот самый неподготовленный. Если не трудно объясните подробнее чайнику.
Создав свою кнопку и в свойствах вставив макрос:
^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.
victor.m4 вне форума  
 
Непрочитано 06.04.2010, 21:35
#293
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
рамкой выбираю объекты. В результате выбираются только размеры, нажимаю enter. Так вот как написать макрос к отдельной кнопке
Попробуйте:
^C^C(sssetfirst nil (ssget '((0 . "DIMENSION"))));
Do$ вне форума  
 
Непрочитано 07.04.2010, 00:12
#294
victor.m4


 
Регистрация: 22.12.2008
Сообщений: 17


Do$, спасибо большое. Ваш вариант работает, но только как отдельная команда. А мне нужен аналог именно ком. для прозрачного вызова, т.е. 'фильтр "размер" должен выполняться во время выполнения основной команды.

Объясню полнее. У меня была своя кнопка с макросом:

^C^C(km_dimsreda) km_dimord_base X;\'фильтр;

- это в программе 3D-Constructor 3.5 (мебельное приложение к Автокаду)..Вот вместо прозрачной 'фильтр и нужно подставить ещё макрос выбора размеров (без диалогового окна "Фильтры выбора объектов").
Если подставляю ваш макрос, то основная команда прерывается. А этого быть не должно. Т.е. фильтр по размеру является дополнением основной команды. Как это реализовать?
victor.m4 вне форума  
 
Непрочитано 07.04.2010, 00:27
#295
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


1. Прочитать книгу В.Света "AutoCAD : Язык макрокоманд и создание кнопок" (по-моему, даже в Download была).
2. Попытаться снять ^C^C перед началом макроса.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.04.2010, 10:26
#296
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
^C^C(km_dimsreda) km_dimord_base X;\'фильтр;
Здесь, похоже, недоработка разработчиков приложения. Если программа предназначена для обработки размеров (судя по названию), то кроме размеров ничего не должно выбираться.
"Фильтр без диалога" при помощи autolisp-функции ssget можно применять для стандартных команд autocad, например, для удаления только размеров:
Код:
[Выделить все]
 
^C^C(vl-cmdf "_.erase" (ssget (quote ((0 . "DIMENSION")))) "");
Причем команды и опции задавать через vl-cmdf, а не на языке макрокоманд.
Для приложений от сторонних разработчиков такие конструкции нужно пробовать медотом "тыка" и не факт, что удастся заставить работать.
Пробуйте. Если не получится - попытайтесь достучаться до разработчиков приложения, чтобы они добавили фильтр в тело программы. Или не задумывайтесь и работайте как раньше
Do$ вне форума  
 
Непрочитано 07.04.2010, 23:00
#297
victor.m4


 
Регистрация: 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.
victor.m4 вне форума  
 
Непрочитано 08.04.2010, 11:17
#298
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
"Повторный вход в LISP невозможен ".
Так правильно же! Выполняется пользовательская LISP-функция km_dimsreda. В этом случае можно запускать только функции, работающие в "прозрачном" режиме.
Попробуйте загрузить файлик с таким кодом:
Код:
[Выделить все]
(vl-load-com)
(vlax-add-cmd
  "Dimfl"
  (defun dim_filter ()
    (sssetfirst nil (ssget (quote ((0 . "DIMENSION")))))
  ) ;_ end of defun
  "Dimfl"
  1
) ;_ end of vlax-add-cmd
И в макросе вместо 'фильтр подставьте 'dimfl.
Вложения
Тип файла: lsp dimfl.lsp (188 байт, 118 просмотров)
Do$ вне форума  
 
Непрочитано 09.04.2010, 11:46
#299
victor.m4


 
Регистрация: 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;Предыдущий;
то результат как в первом случае.
victor.m4 вне форума  
 
Непрочитано 09.04.2010, 13:29
#300
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Да, действительно... Не пойму почему, но выбор сбрасывается . У меня пока нет мыслей, как это исправить
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Мои макрокоманды



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мои динамические блоки 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