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

Вернуться   Форум 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:
Просмотров: 482299
 
Непрочитано 23.06.2011, 14:32
#441
Do$

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


Сохранить в текстовый файл, дать ему расширение LSP, файл расположить в путях поддержки автокада. Макрос для вызова:
Код:
[Выделить все]
^C^C(load <имя файла>);
Например: ^C^C(load "programma.lsp");
Do$ вне форума  
 
Непрочитано 23.06.2011, 14:42
#442
PSG


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


Все ясно.
После запуска макроса выдает ошибку
; ошибка: неверный тип аргумента: stringp nil
PSG вне форума  
 
Непрочитано 23.06.2011, 15:33
#443
Do$

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


Может при копировании вкралась ошибка? Приложу на всякий случай файлик.
Если не поможет - то надо смотреть dwg-файл, что там такое, что вызывает сбой. У меня отрабатывает нормально. правда, у меня нет загадочной команды _TEXT-, что это за зверь?
Вложения
Тип файла: lsp test.lsp (1.2 Кб, 89 просмотров)

Последний раз редактировалось Do$, 23.06.2011 в 15:45.
Do$ вне форума  
 
Непрочитано 23.06.2011, 16:04
#444
PSG


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


Спасибо, буду пробовать. _text- это программка, которая подчеркивает выбранный однострочный текст.

Красота! Все получилось. Не срабатывало, потому что не было первой строки. Еще раз спасибо. Мне до того уровня , как до Китая пешком, век живи, век учись ...

Последний раз редактировалось PSG, 24.06.2011 в 09:53.
PSG вне форума  
 
Непрочитано 30.09.2011, 11:42
#445
Vadikus


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


Добрый день уважаемые форумчане. Устроился на новую работу, думал приду настрою автокад под себя со своими любимыми лиспами, не тут то было, на рабочих компах стоят AutoCAD LT 2010 (русский). Пришлось писать макросами начали появляться вопросы. Собственно сам макрос: ^C^CСлой;С;Размеры;_c;желтый;;;_dimlinear. Макрос работает, но хотелось, что бы по его завершении слой возвращался на предыдущий (что то типа лиспа от многоуважаемого VVA), который стоял до этой команды. Если правильно понял то это делается при помощи команды предыдущее состояние слоев СЛОЙП (_LAYERP), но вот самой команды найти никак не могу. Будьте добры подскажите что дописать в конце сего творения.
И еще один вопросик: можно ли повесить на кнопку макрос с использованием БВЫБОР (_QSELECT). Например жму кнопку включается БВЫБОР, в нем автоматически выбираются все размеры (линейные, радиусы и тд.), после выбора все автоматически переносится на слой "Размеры".
Может я конечно многого хочу, но хотелось бы так.
Vadikus вне форума  
 
Непрочитано 30.09.2011, 14:53
#446
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Vadikus, для написания макросов очень поможет DIESEL (в лайте это единственная возможность хоть какую-то логику добавить)
Тестовый пример, макрос запоминает в переменной users5 имя текущего слоя, затем на слое 0 рисует линию, после чего возвращается на запомненный слой.
Код:
[Выделить все]
^C^Cusers5;$M=$(GETVAR,CLAYER);clayer;0;line;0,0;10,10;;clayer;$M=$(GETVAR,users5);

Последний раз редактировалось bargool, 30.09.2011 в 15:09.
bargool вне форума  
 
Непрочитано 30.09.2011, 15:18
#447
Vadikus


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


bargool, поставил для пробы на кнопку ваш макрос
Код:
[Выделить все]
^C^Cusers5;$M=$(GETVAR,_.CLAYER);_.clayer;0;_.line;0,0;10,10;;_.clayer;$M=$(GETVAR,users5);
я так понимаю для русского када надо еще "_." добавить.

Жму кнопку автокад хочет выполнить предыдущюю команду, слой 0 не переключается на предыдущий.

Последний раз редактировалось Vadikus, 30.09.2011 в 15:36.
Vadikus вне форума  
 
Непрочитано 30.09.2011, 15:58
#448
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Vadikus, для использования английских команд в русском каде надо добавлять только "_" без точки
При этом имена системных переменных пишутся латиницей без добавления всяких подчеркиваний (вроде бы - проверить негде, если честно. в конторе все автокады английские), CLAYER тоже системная переменная. Но у меня действительно переходит на сохраненный слой только со второго раза...
Update: похоже, дизель свои выражения вычисляет до вызова команды, поэтому в данном макросе возвращает предыдущее значение users5
Update2 из этого последовал прекрасный вывод:
Код:
[Выделить все]
$M=^C^Cclayer;0;line;0,0;10,10;;clayer;$(GETVAR,CLAYER);

Последний раз редактировалось bargool, 30.09.2011 в 17:02.
bargool вне форума  
 
Непрочитано 30.09.2011, 17:36
#449
Vadikus


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


Нашел в соседней теме такую вещь, и обошлись без дизеля
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_last;;_la;"размеры";;
но с радиусами, диаметрами и _dimcontinue что то не хочет работать. И еще вопрос, можно ли данные макросы вызывать не кликая на кнопку панели, а прописать команду в *.pgp файле и вызывать с клавиатуры (типа ^С^С Defun c:"какая-то команда" _.dimlinear;\\\_.chprop;_last;;_la;"размеры";; ) и как включить повтор по ПКМ.

С радиусами и диаметрами разобрался, была лишняя палка (\), а вот с dimcontinue что то не получается (т.к. создается несколько размерных линий).

Последний раз редактировалось Vadikus, 02.10.2011 в 13:19.
Vadikus вне форума  
 
Непрочитано 24.10.2011, 12:01
#450
Conan_w

Инженер-проектировщик
 
Регистрация: 16.05.2007
Мурманск
Сообщений: 79
<phrase 1=


Может уже было подобное, заранее извиняюсь за лень чтоб просмотреть 23 страницы.
Достойная альтернатива кнопке "Сохранить"

Код:
[Выделить все]
^C^C_regenall;_.audit;_y;'_zoom;_e;_qsave;
__________________
Нащяльника,мая AutoCAD паставиль,инсталя сделаль,сапускаю, а она ажамбех пашамбе эшельбе шайтанама!
Conan_w вне форума  
 
Непрочитано 30.10.2011, 22:14
#451
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


В одной из тем один из самых знающих автокадчиков форума назвал макросы убожеством.
У макросов есть еще одно предназначение, оно хорошо работает и значительно экономит время. Вот пример, показанный в книге Autocad Язык макрокоманд и создание кнопок.
Цитата:
Главной задачей является .... а также очень быстро, в течение нескольких минут, составить временную команду для выполнения одноразовой рутинной операции.
Как-то к автору обратился сослуживец с просьбой что-нибудь придумать для облегчения его работы. На большом чертеже в разных местах была установлена серия объектов, которую надо было изменить следующим образом: один объект удалить, а находящий здесь же блок с атрибутом перекрасить в другой цвет. То есть предстояло поочередное применение трех команд Erase (Стереть), Eattedit (Атредакт) и Properties (Окносв). Изменить цвет слоя не представлялось возможным. Надо было действовать “One by one”, то есть обрабатывать один объект за другим. Скучная работа. На выполнение операции с одной группой объектов надо было затратить 14 щелчков мыши да еще копаться в диалоговом окне Enchanced Attribute Editor (Редактор атрибутов) и в окошке Color Control (Цвета), подбирая нужный цвет.
Я поставил на одну кнопку команды Erase (Стереть) -Attedit (‑Атред), наше [3-10] и Change (Изменить), видоизмененная часть нашего [12-11], внес некоторые поправки. Теперь на всю операцию надо было затратить всего три щелчка, если считать первым вызов команды. И заняло это всего 5 минут!
А вот два моих свежих примера. Надо было выборочно заменить блоки на другие, причем атрибуты должны были остаться со старого блока. Слои, которых было много вариаций, в основном, должны были сохраниться, но не все. Кое где и они менялись. Менялось и присоединение подходяших линий. Поскольку замена производилась в очень плотном чертеже, годилась только ручная обработка с визуальным контролем. Это занимало 25 кликов на блок. Блоков было около сотни. Макрос, который я сотворил за 10 мин делал эту работу за 12 кликов.
^C^C_I;LTG-FIX-BOX;\;;;;;XXX;SELECT;SI;\M;P;;\\TTC;;\\\\;E;\;MA;\\;
Второй макрос по-проще, вставляет блок и передает ему свойства с подходящей к блоку коммуникации.
^C^C_I;z-stub-dn;\96;;;MA;\\;
Оба макроса сугубо временные, никогда в таком виде никому не пригодятся, и как только я закончу чертеж, их удалю. Макросы безо всяких изысков, можно было убить время и сэкономить клик-другой, но время было дороже. Подобные для текущей задачи может сделать любой, слегка набивший на них руку пользователь
Vova вне форума  
 
Непрочитано 30.10.2011, 22:21
#452
Кулик Алексей aka kpblc
Moderator

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


> Достойная альтернатива кнопке "Сохранить"
Я бы сделал немного по-другому:
Код:
[Выделить все]
^C^C_.-purge;_a;;_n;_.-purge;_a;;_n;_.-purge;_r;;_n;_.audit;_y;_.-scalelistedit;_r;_y;_e;_.-purge;_a;;_n;_qsave;
Цитата:
Сообщение от Vova Посмотреть сообщение
В одной из тем один из самых знающих автокадчиков форума назвал макросы убожеством.
А можно конкретную ссылку? Просто интересно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 30.10.2011 в 22:29.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.10.2011, 09:34
#453
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Заказчик в комплекте с техзаданием, требованиями и прочими инструкциями по выполнению работ предоставил надстройку для Autocad. Всё замечательно работает, но какой-то из лиспов надстройки периодически меняет настройки единиц чертежа, при этом "забывая" вернуть их в исходное после выполнения своего алгоритма.
Подскажите пожалуйста макрос для выставки линейных единиц в формат "десятичные" и угловых в формат "десятичные градусы", точность для линейных и угловых единиц одинакова "0.00".
Агент СмиТ вне форума  
 
Непрочитано 31.10.2011, 09:50
1 | #454
Кулик Алексей aka kpblc
Moderator

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


^C^C^Plunits;2;luprec;2;aunits;0;auprec;2
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.10.2011, 10:09
#455
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Вдвойне дает, кто дает скоро. Спасибо!!!
Агент СмиТ вне форума  
 
Непрочитано 04.11.2011, 10:30
#456
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 824


Здравствуйте.
Скажите, можно ли сделать макрос на создание именованного вида, без диалогового окна. Имя вида не важно, область вида, то что на экране.
Astartes вне форума  
 
Непрочитано 04.11.2011, 11:54
#457
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


^C^C-вид;сохранить;вид1; в конце если не добавть имя вида то с клавы его вводить и enter
п.с. незнаю по английски звучат команды
mamuk вне форума  
 
Непрочитано 04.11.2011, 13:06
#458
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 824


mamuk, Спасибо, то что нужно.

Еще вопрос. На всякий случай )). Можно ли добавить в эту макрокоманду выбор нужной области рамкой.

Последний раз редактировалось Astartes, 05.11.2011 в 07:55.
Astartes вне форума  
 
Непрочитано 09.11.2011, 11:18
#459
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


существет кнопка перемещающие объекты на задний план: ^C^C^P_ai_draworder _Back ^P
пробовал переделать её как в первом посте
Цитата:
^C^C^P(defun c:break2 () (vl-cmdf "_break" pause "f" pause "@")(princ));break2;
Выдает что неизвестная команда _ai_draworder
Есть ли способ реализовать то что хотел или с этой командой не прокатит?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.11.2011, 11:21
#460
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А где сам переделанный макрос с _ai_draworder?
Profan вне форума  
Ответ
Вернуться   Форум 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