Новое в VetCAD++ 3.15
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

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

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

zenon вне форума Вставить имя

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

Выкладываю 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:
Просмотров: 289388
 
Непрочитано 22.08.2017, 12:03
#841
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 232


Цитата:
Сообщение от Linkshunter Посмотреть сообщение
ТЕКСТПЕРПЛАН -
аннотации - ^C^C^P_texttofront _a ^P
только выноски - ^C^C^P_texttofront _l ^P
только размеры - ^C^C^P_texttofront _d ^P
только тексты - ^C^C^P_texttofront _t ^P
штриховки на задний план HATCHTOBACK
Спасибо! Новая для меня команда, поизучаю.

Цитата:
Сообщение от Linkshunter Посмотреть сообщение
ЗЫ: если работать по слоям, есть классная программа от lee-mac
http://lee-mac.com/layerdraworder.html
Этот лисп я видел. Если правильно понял, там каждый раз нужно выбирать слои, которые надо переместить. Много действий для трех слоев.
AMDen вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 13.11.2017, 09:24
#842
jkalex

геодезист
 
Регистрация: 22.12.2009
Киров
Сообщений: 22


Подскажите, пожалуйста, как написать макрокоманду: выбрать из текущего пространства все объекты фиолетового цвета и изменить им цвет на "по блоку"
jkalex вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 14.11.2017, 14:31
#843
Vladimir_Sergeevich

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


jkalex, лиспом как два пальца... выбор по фильтру и обработка набора. Макросом... мсье знает толк в извращениях (по моему никак, вроде не раз поднимали подобные вопросы в том числе совсем 10 постов назад...)
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.12.2017, 17:24
#844
boretskiy.a


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


Может кому и пригодится. В макросах можно прописать создание слоя, цвета, тип л/п, соответствующих примитиву или объекту. Разнообразить можно до невозможного если подлючить лисп.
^C^C(setvar "attdia" 0) (setvar "attreq" 1) (if (tblsearch "layer" "ОГРАЖДЕНИЯ") (command "_layer" "_set" "ОГРАЖДЕНИЯ" "") (command "_layer" "_make" "ОГРАЖДЕНИЯ" "")) Mline s 1 ST PR_12
или
^C^C(command "-linetype" "l" "475_2" "armigw.lin" "s" "475_2" "" (command "-layer" "_m" "ОГРАЖДЕНИЯ" "_s" "ОГРАЖДЕНИЯ" ""))(command "_pline")
или
^C^C^P(if (tblsearch "layer" "НАДЗЕМКА")(command "_layer" "_set" "НАДЗЕМКА" "")(command "_layer" "_make" "НАДЗЕМКА" "") );^Pl2p;
или
^C^C^P(if (not c:insert_395_2 )(load "VNEMASHT.LSP" ));^Pinsert_395_2
boretskiy.a вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.12.2017, 20:25
#845
Кулик Алексей aka kpblc
Moderator

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


boretskiy.a, в макросах можно обойтись без command, setvar etc. И ты забыл про локализацию ACAD. Теоретически должно быть так:
Код:
[Выделить все]
^C^Cattdia;0;attreq;1;_.-layer;_m;Ограждения;_,mline;_s;1;_st;_pr_12;
^C^C^_.-linetype;_l;475_2;armigw.lin;_s;475_2;;_-layer;_m;Ограждения;_pline
И т.д. Но я не уверен, что у каждого пользователя есть файл armigw.lin И лиспы - тоже )))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 11:43
#846
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Пытаюсь сделать мультивыноску с определенным текстом в виде макроса (чтобы повесить на кнопку и в два клика проставлять одинаковые надписи). Вроде все просто: команда, два пользовательских выбора на экране (положение стрелки + положение текста), далее enter.

Записал так:

Код:
[Выделить все]
^C^C_mleader;//тест;
Не работает, в Командной строке висит запрос "введите текст"... Может кто сталкивался или понимает, что ему не нравится? Подскажите пожалуйста как поправить?

Сейчас использую тоже самое, но записанное через рекордер операций. Работает, но немного подглючивает, макросом как мне кажется более стабильно должно работать.
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 11:56
#847
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 4,948


Immortal_6666, будет интересно - статья от Алексея Кулика.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 12:10
#848
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Immortal_6666, будет интересно - статья от Алексея Кулика.
Я прочитал, но видимо, этот тот случай, когда "вижу фигу" - порядок-то у меня вполне определен (значение в реестре 1) - я сначала посмотрел, что хочет Автокад - положение стрелки, положение полки, текст, а потом уже писал макрос. Вопрос в том, почему предложенный ему текст не "проглатывается" командой, а игнорируется...
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 12:31
#849
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 4,948


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
(значение в реестре 1) - я сначала посмотрел, что хочет Автокад - положение стрелки, положение полки, текст
вообще то тогда в реестре должно быть 2 согласно статье при таком порядке запроса

----- добавлено через ~11 мин. -----
хотя ошибся: для такого порядка в статье - нуль получается
Цитата:
[leader arrowHead first/leader Landing first/Options]
в любом случае лучше в виде лиспа через vla-AddMleader создавать, имхо - а не через командные методы.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:06
#850
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
вообще то тогда в реестре должно быть 2 согласно статье при таком порядке запроса

----- добавлено через ~11 мин. -----
хотя ошибся: для такого порядка в статье - нуль получается
Нет, не соглашусь. Вы почему-то рассматриваете исключительно то, что написано между [], а это уже опции команды. При этом упускаете "стандартный" порядок действий, который получается, если пользователь не выбирает опции. Именно 1 для такого порядка. И в статье это указано - там таблица даже есть в конце, где и скрин кс дан, и по-русски описано что происходит: сначала все точки, потом текст. И запрос КС начинается "Specify leader arrowhead location or" что у меня и происходит. По ветке "or" идти не обязательно. В любом случае, статья, к сожалению, никак не помогает мне решить задачу...

В виде лиспа мне знаний не хватает. Да и просто интересно, где я ошибаюсь в макросе, т.к. задача вроде примитивная...

П.С. А есть какая-то веская причина, почему так не любят "командные методы"? Я не против лисп, просто зачем изобретать каждый раз велосипед... В лисп всегда надо предусмотреть все события, все варианты, кучу всего прописать, часто "лишнего", т.к. "а вдруг что-то пойдет не так". А зачастую нужна просто последовательность обычных команд. По сути предложить программе нажать кнопки за пользователя.
Я почему макросы такие люблю - вот повесил его на палитру, в свойствах указал в какой слой помещать, для некоторых инструментов можно сразу стиль указать и готово. В а лиспе пришлось бы описывать создание стиля, создание слоя и т.п.
Я-то очень хочу в нем разобраться. Но часто получается, что это микроскоп, которым при каждом удобном случае предлагают забивать гвозди... И чтобы сделать примитивную вещь нужно ну очень много всего знать, что ставит в тупик, т.к. даже не знаешь, как подступиться к задаче.

Последний раз редактировалось Immortal_6666, 02.01.2018 в 13:19.
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:15
#851
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 4,948


лисп даст более предсказуемый результат - ищите по vla-AddMleader готовый код и разбирайтесь. А смысл статьи - что Аутодеск максимально усложнил работу с мультивыносками командными методами)
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:22
1 | 1 #852
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 4,036
Отправить сообщение для engngr с помощью Skype™


Immortal_6666, попробуйте
^C^C_mleader;\\текст
engngr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:26
#853
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
лисп даст более предсказуемый результат - ищите по vla-AddMleader готовый код и разбирайтесь. А смысл статьи - что Аутодеск максимально усложнил работу с мультивыносками командными методами)
чтобы результат стал предсказуемым нужно потратить ни одну сотню часов разбираясь в коде, что для человека без программистского бэкграунда не так просто.

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от engngr Посмотреть сообщение
Immortal_6666, попробуйте
^C^C_mleader;\\текст
engngr, спасибо огромное!!!!
Я ведь пробовал менять направление слэшей... и не помогало. А Ваш код скопировал - и работает. Еще раз спасибо за ответ по делу!!!
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:28
1 | 1 #854
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 4,036
Отправить сообщение для engngr с помощью Skype™


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
от моего метода отличается отсутствием ; в конце. К сожалению, не помогло. Он почему-то не обрабатывает //
Косая черта в другую сторону.
Ожидание ввода от пользователя - \, а не /.
engngr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 13:31
#855
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Цитата:
Сообщение от engngr Посмотреть сообщение
Косая черта в другую сторону.
Ожидание ввода от пользователя - \, а не /.
да-да, это я невнимателен. уже выше подправил свой ответ.
просто шикарно работает!!!
очень помогли!

----- добавлено через 6 сек. -----
engngr, а если нужно в текст выноски добавить 2 строки, т.е принудительный переход на новую строку. Это возможно реализовать макросом? Попробовал код \X который позволяет делать такое в текстовой строке размера и \P из Мтекста, тут не сработали. Очевидно потому, что \ трактуется как пользовательский выбор. У меня просто есть выноски, которые всегда пишутся в две строки.

----- добавлено через ~8 мин. -----
И поле таким образом засунуть не получилось
^C^C_mleader;\\%<\AcVar CustomDP.Тест>%
Может надо в какие-то символы обернуть код поля?

Последний раз редактировалось Immortal_6666, 02.01.2018 в 13:48.
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 15:14
1 | #856
Setvar

Всего понемногу
 
Регистрация: 10.02.2007
Москва
Сообщений: 540


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в любом случае лучше в виде лиспа через vla-AddMleader создавать, имхо - а не через командные методы.
Почему? Пример Immortal_6666 очень хорошо описывается простым выражением:
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст")
Естественно, должен быть настроен стиль мультивыноски.
Для Immortal_6666. А вообще, при работе с мультивыноской в более сложных случаях лучше отказаться от макросов и применять VLisp. Много разных возможностей появляется: и многострочность, и поля и др.
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 15:28
#857
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Setvar, ок, согласен на vlisp.
Можно ли малой кровью в это
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст")
добавить вторую строку и пользовательское поле?

Не одновременно, а в принципе, т.к. это две разные задачи - просто текст в две строки и 1 строка, но с полем. Причем очень важно, чтобы поле осталось именно полем.
Код поля есть: %<\AcVar CustomDP.Тест>%
Я уже весь буржуй нет облазил (на русском вообще ничего нет), книгу В.Света штудирую второй час... Научился вставлять в выноску переменные, но вот поле и вторую строку никак.. либо как-то не так ищу.

Находил только решения, где поле преобразуется в текст, сохраняется в переменную, потом переменную скармливают тексту или выноске. Но мне не подходит такое, т.к. там вставлется просто текст.

----- добавлено через ~6 мин. -----
Интуитивно мне казалось, что должно быть как-то так:

^C^C(command "_MLEADER" pause pause $M=$(%<\AcVar CustomDP.Тест>%))

но нет...

Последний раз редактировалось Immortal_6666, 02.01.2018 в 15:59.
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 16:17
#858
Setvar

Всего понемногу
 
Регистрация: 10.02.2007
Москва
Сообщений: 540


Поле - это ведь не самоцель. Поле должно быть с чем-то связано программно или вручную.
Ничего тут не выйдет "малой кровью".
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 16:24
#859
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 127


Цитата:
Сообщение от Setvar Посмотреть сообщение
Поле - это ведь не самоцель. Поле должно быть с чем-то связано программно или вручную.
Ничего тут не выйдет "малой кровью".
Не очень понял... поле как раз самоцель. Есть пользовательское поле в документе (в шаблоне даже), оно заполняется 1 раз. И именно с ним должна быть связь. Потом по всему чертежу расставляются выноски с этим полем. А поле оно потому, что содержимое может в любой момент поменяться и удобно, что изменится все везде и само.

Руками я делал так: выноска - указал точки - вставить поле - выбрал какое. Далее, записал эти шаги через рекордер операций - тоже все работает. Аналогично проделал с выносками, содержимое которых одинаково во всех проектах. Кнопки со всеми этими выносками разложены на палитре. Работает, но у рекордера есть минусы (иногда подглючивает) и нужно хранить файлы .actm.

В итоге, с Вашей помощью, удалось для выносок, где всего 1 строка использовать макрос\код. Так я избавился от части файлов рекордера операций. Хочется проделать тоже самое с выносками где 2 строки и теми, где поля.
Про поле я еще могу понять, что это может быть сложно программно. Но про вторую строку, кажется, что должно быть просто решение, вроде управляющего символа для перевода на новую строку.
Immortal_6666 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.01.2018, 16:33
#860
Setvar

Всего понемногу
 
Регистрация: 10.02.2007
Москва
Сообщений: 540


Абстрактно рассуждаете, товарищ. Никакой связи ЗДЕСЬ ни с каким полем не обозначено. Топтание на пустом месте.
Setvar вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Мои макрокоманды

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

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

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||