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

Вернуться   Форум 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:
Просмотров: 482143
 
Непрочитано 22.02.2013, 11:42
#561
Кулик Алексей aka kpblc
Moderator

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


roaa, попробуй поставить peditaccept в 0 и снова запусти макрос. Получишь на выходе ошибку.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2013, 11:48
#562
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Autocad 2008 - русский, peditaccept равен 0... ошибок нет...
roaa вне форума  
 
Непрочитано 22.02.2013, 12:40
#563
Кулик Алексей aka kpblc
Moderator

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


Тьфу, блин, переклинило Поставь в 1.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2013, 14:13
#564
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тьфу, блин, переклинило Поставь в 1.
И так попробывал, и сяк...ошибок не возникает...команда отрабатывает свое полностью...Дома на 13 каде проверю.

Проверил. Все в норме...работает.

Последний раз редактировалось roaa, 22.02.2013 в 20:46.
roaa вне форума  
 
Непрочитано 24.02.2013, 13:32
#565
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Зацикленное перемещение объектов. Выход по второму клику ПКМ.
^C^C(while (ssget) (vl-cmdf "._move" "_p" "" pause pause))
roaa вне форума  
 
Непрочитано 26.02.2013, 11:39
#566
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Прошу помощи в реализации макроса динамического блока (ДБ).
Есть файл "dwgRele_03.dwg" с единственным блоком "Rele_N"
Напомню, что имя файла и имя блока должны быть разными, иначе AutoCAD выдаст ошибку: "Блок ... ссылается сам на себя". После вставки в чертеж по кнопке вставляется простой блок с именем "dwgRele_03" из чертежа "dwgRele_03.dwg" содержащий ДБ "Rele_N". Блок "dwgRele_03" нужно расчленить чтобы он "превратился" в ДБ "Rele_N". Других путей я не знаю.

ДБ вставляется в чертежи по кнопке с макросом:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;
Во время вставки в чертеж вставляется два ДБ. Один с именем "dwgRele_03.dwg", другой "Rele_N". После вставики "dwgRele_03.dwg" пуржится макросом и остается только "Rele_N".
Но есть одно "волосатое НО"... При повторном нажатии идет значительная задержка вставки блока (минута) при этом в командной строке пишет: "Повторное определение блока Rele_N пропущено.", AutoCAD виснет на минуту, потом отвисает и вроде как работает как обычно дальше. Экспериментами удалось обнаружить, что проблемы тормозов проявляют себя только если в чертеже нет вхождения блока dwgRele_03.
т.е. если макрос написать так:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;
то тормозов не будет. Но хочется же чтобы блока "dwgRele_03" в чертеже небыло.

Поэтому может кто подскажет как реализовать такое:
1. Вставляем блок по старому макросу с удалением блока "dwgRele_03"
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;
2. Если в чертеже есть блок "Rele_N" то выполнить макрос
Код:
[Выделить все]
^C^C_-insert;Rele_N;\1;1;0;;;;;;;
если нет, то выполнить макрос:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;

Offtop: Перелопачивал свои блоки... нашел блок с именем "dwgRU" - Выравниватель
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 26.02.2013 в 11:58.
Shoorup вне форума  
 
Автор темы   Непрочитано 26.02.2013, 12:18
#567
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Shoorup, когда-то напарывался на файл в котором описание динамики блока было описано непосредственно в самом файле, а не в реакторе блока. После вставки его как блока получался динамический блок. Вот только не могу вспомнить где это видел.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 26.02.2013, 14:13
#568
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Цитата:
Сообщение от zenon Посмотреть сообщение
описание динамики блока было описано непосредственно в самом файле...
zenon, спасибо за наводку!
Почему-то сразу до этого не додумался. Нужно описывать ДБ не отдельным блоком в чертеже, а заходить в редактор блоков и выбирать там <Текущий чертеж> и там все описывать. Ну а макрос простая вставка блока.
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;1;0;;;;;;;;;;
Только все переделывать накорню... скопировать описание блока в чертеж не получится. Работы на день-два точно...
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 26.02.2013 в 15:54.
Shoorup вне форума  
 
Непрочитано 27.02.2013, 12:45
#569
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Люди, а как в макрос записать путь к блоку в DWG-файле?
Мой блок Т1 определен в файле tables_draw_new в папке d:\st_functions\add_st.
Я прописываю в макрос команду
Код:
[Выделить все]
^C^C(defun C:inscommand () (command "_.-INSERT" "d:\st_functions\add_st\tables_draw_new\T1" pause "" "" "") (command "_explode" entlast ""));inscommand
На что товарищ автокад мне говорит
Код:
[Выделить все]
(defun C:inscommand () (command "_.-INSERT" "d:
и не желает выполнять вставку блока.
ps: (двойные слэши "\\" пробовал, не катит)

Что же я не так делаю?
__________________
Боишься - не делай. Делаешь - не бойся.
Xara вне форума  
 
Непрочитано 27.02.2013, 12:51
#570
Кулик Алексей aka kpblc
Moderator

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


Попробуй обратные слеши.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.02.2013, 12:59
#571
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй обратные слеши.
Код:
[Выделить все]
Command: inscommand _.-insert Enter block name or [?] <T11>: 
d://st_functions//add_st//tables_draw_new//T1
Invalid block name.
; error: Function cancelled
Этот вариант тоже не прокатил (с любыми слешами):
Код:
[Выделить все]
^C^C_-insert;d:\st_functions\add_st\tables_draw_new;\T1;;;_.explode;_last

АП: Попробовал вариант ^C^C_-insert;"d:\st_functions\add_st\tables_draw_new.dwg";\T1;;;_.explode;_last
Акад сначала запросил имя блока:
Код:
[Выделить все]
-INSERT Enter block name or [?] <T1>:
Потом вывел окошко выбора блока, я нажал отмену.
Потом он мне построчно просил ввести путь и вставил блок, причем вручную пришлось добивать параметры вставки.
Полный код из ком.строки:
Код:
[Выделить все]
Command: _-insert
Enter block name or [?] <T1>: "d:

Command: st_functions
Unknown command "ST_FUNCTIONS".  Press F1 for help.

Command: add_st
Unknown command "ADD_ST".  Press F1 for help.

Command: tables_draw_new.dwg"
Unknown command "DWG"".  Press F1 for help.

Command:
-INSERT Enter block name or [?] <T1>: T1

Units: Millimeters   Conversion:    1.0000
Specify insertion point or [Basepoint/Scale/Rotate]:

Point or option keyword required.
Specify insertion point or [Basepoint/Scale/Rotate]: Specify scale factor <1>:

Specify rotation angle <0>:
__________________
Боишься - не делай. Делаешь - не бойся.

Последний раз редактировалось Xara, 27.02.2013 в 13:35.
Xara вне форума  
 
Непрочитано 27.02.2013, 18:17
#572
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Xara Посмотреть сообщение
Люди, а как в макрос записать путь к блоку в DWG-файле?
Мой блок Т1 определен в файле tables_draw_new в папке d:\st_functions\add_st.
Если не ошибаюсь, ежели определение блока Т1 в чертеже отсутствует, то выдернуть его из файла так не получится.
Почитайте
http://forum.dwg.ru/showthread.php?t=55898
roaa вне форума  
 
Непрочитано 10.03.2013, 12:26
#573
Inventor_S

конструктор
 
Регистрация: 04.06.2010
г. Минск
Сообщений: 30


Может кто знает как сделать макрос мультивыноски (_mleader) с выравниванием мтекста по центру ? Что-то пробовал, не получается.
Inventor_S вне форума  
 
Непрочитано 10.03.2013, 15:30
#574
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Inventor_S, макросом - никак. Только лиспом. Offtop: Чтоб не оффтопить тут, ответил в наиболее близкой по смыслу теме
skkkk на форуме  
 
Непрочитано 13.06.2013, 17:18
#575
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


Подскажите пожалуйста, как бы сделать, чтобы вызывалась команда filter, но без диалога, с настройками на выбор объектов с цветом 131?
__________________
Грызи гранит науки. Не можешь грызть - соси!
Cosinus вне форума  
 
Непрочитано 13.06.2013, 17:26
#576
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Если я правильно понял, то для выбора всех объектов цветом 131 я бы использовал _qselect, а не _filter. А если бы хотел без диалогового окна, то повесил бы на кнопку такой макрос:
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((62 . 131)))) (sssetfirst selset selset)));(mfunc);
skkkk на форуме  
 
Непрочитано 13.06.2013, 17:53
#577
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


skkk Благодарю, то что я хотел
__________________
Грызи гранит науки. Не можешь грызть - соси!
Cosinus вне форума  
 
Непрочитано 15.06.2013, 03:35
#578
GGarry


 
Регистрация: 06.06.2007
Il
Сообщений: 88


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если я правильно понял, то для выбора всех объектов цветом 131 я бы использовал _qselect, а не _filter. А если бы хотел без диалогового окна, то повесил бы на кнопку такой макрос:
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((62 . 131)))) (sssetfirst selset selset)));(mfunc);
Привет!!!
А можно было бы здесь выделить несколько параметров у примивов?
1. line center 2
2. line continue
3. dim
__________________
Пьер был светский человек и поэтому мочился духами.
GGarry вне форума  
 
Непрочитано 15.06.2013, 09:52
#579
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Ничего не понял. Хочется намного более чёткой постановки вопроса.
1. Что значит "line center 2"?
2. "Line continue" - рискну предположить, что нужно выбрать все линии с типом линии Continuous.
3. "Dim" - это выбрать все размеры?
skkkk на форуме  
 
Непрочитано 19.06.2013, 15:28
#580
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от PSG Посмотреть сообщение
Еще вопрос -
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode
^C^C(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
по отдельности они работают, а если их объединить вместе
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode;(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
то не работают. В чем моя ошибка?
Это из #436, два года назад
Та же проблема. Если после _explode ничего делать не нужно, то макрос работает нормально. А если после него что-то нужно еще сделать, то _explode не выполняется, и далее соответственно.
Правда, это для Автокадов 2006-2008. В 2012 удается победить. Но у людей - участников процесса - есть только 2006-2008.
Моя задача: разметить полилинию блоками в виде поперечных полилиний, разбить эти блоки, чтобы на пересечениях выбранных полилиний расставить точки.
Мой макрос:
Код:
[Выделить все]
^C^C_measure;\_b;"поперечник";_y;40;_SelectSimilar;_l;;_explode\POLYPOINT
"поперечник" - имя блока, ориентируем вдоль указанной полилинии, ставим через 40 единиц.
POLYPOINT - команда расстановки точек на всех пересечениях указанных полилиний к программке из http://forum.dwg.ru/showpost.php?p=1108065&postcount=37
Если убрать это "\POLYPOINT", то в Акадах 2006-2008 _explode выполняется. А полностью - нет.
Миниатюры
Нажмите на изображение для увеличения
Название: Расставить_поперечники_вдоль_красной_линии.png
Просмотров: 73
Размер:	10.7 Кб
ID:	105908  Нажмите на изображение для увеличения
Название: Вставить_точки_в_пересечения_линий.png
Просмотров: 75
Размер:	13.5 Кб
ID:	105909  

Последний раз редактировалось АлексЮстасу, 19.06.2013 в 16:04.
АлексЮстасу вне форума  
Ответ
Вернуться   Форум 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