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

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

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

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

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

Выкладываю 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:
Просмотров: 451244
 
Непрочитано 22.11.2010, 21:08
#341
Vova

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


Попробуй так
^C^C_filletrad;0;_fillet;u;\\
Vova вне форума  
 
Непрочитано 23.11.2010, 08:42
#342
Do$

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


Цитата:
Сообщение от Vova Посмотреть сообщение
^C^C_filletrad;0;_fillet;u;\\
Зачем так сложно?
Этого достаточно:
Код:
[Выделить все]
^C^C_.filletrad;0.0;_.fillet;
Do$ вне форума  
 
Непрочитано 23.11.2010, 09:02
#343
Profan


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


Зачем так сложно? Сообщение 340 проглядели сослепу?
Profan вне форума  
 
Непрочитано 23.11.2010, 09:03
#344
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Работает и так
Цитата:
Сообщение от Profan Посмотреть сообщение
Код:
[Выделить все]
^C^C_fillet;_R;0.0;;
и так
Цитата:
Сообщение от Vova Посмотреть сообщение
Код:
[Выделить все]
^C^C_filletrad;0;_fillet;u;\\
. Спасибо.
Вопрос. Почему не работал самый первый вариант?
Код:
[Выделить все]
^C^C_fillet;_R;0.0;
99xt1 вне форума  
 
Непрочитано 23.11.2010, 12:05
#345
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,268


По моему мнению проще всего:
Код:
[Выделить все]
^C^C(setvar "filletrad" 0)
Но если принципиально не хочется использовать лисп-выражения - то другое дело.

Последний раз редактировалось Pilot, 23.11.2010 в 12:14.
Pilot на форуме  
 
Непрочитано 23.11.2010, 12:51
#346
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Не принципиально, просто интересно, почему не работает:
^C^C_fillet; - вызов команды
_R; - вызов параметра "радиус сопряжения"
0.0; - установка радиус в 0, после которой, по идее, Автокад должен предлагать сделать выбор объектов. Если делать последовательно "руками", то предлагает, а в макросе не предлагает. Вот и возникает вопрос: ПОЧЕМУ?
99xt1 вне форума  
 
Непрочитано 23.11.2010, 12:54
#347
Do$

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


Глюкобаг
Do$ вне форума  
 
Непрочитано 23.11.2010, 15:59
#348
Vova

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


Есть две интересные посылки для обсуждения.
1. В моем вариянте 341 буква "U" поставлена для того, чтобы команда работала многоразово. ЗАметьте, "u' а не "m", как предписывается опциями команды англ автокада. Буква "U" была в прежних версиях, но с успехом работает в новых, в отличие от "M".
2. Вижу во многих макросах подчерк перед опциями в английском (чтобы работали в русском). А подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Vova вне форума  
 
Непрочитано 23.11.2010, 16:28
#349
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,268


Цитата:
Сообщение от Vova Посмотреть сообщение
... подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Да. Сейчас работаю в русскоязычном локализованном Акаде (умник сисадмин "удружил"). Так алиасы пришлось переписывать русскими командами.
Еще один недостаток алиасов - невозможность прописывать макросы прямо там. А было бы здорово. (Но об этом на форуме, кажется, когда-то уже говорилось)
Pilot на форуме  
 
Непрочитано 24.11.2010, 00:37
#350
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Vova Посмотреть сообщение
А подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Я думаю - особенности локализации. Которые определяются Autodesk.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2010, 05:46
#351
Profan


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


Это не особенности локализации, а особенности рудимента. Файл acad.pgp появился еще тогда, когда подчерк "_" в AutoCAD'е не использовался. И в русском AutoCAD R10, например, приходилось даже команды в программах на AutoLisp записывать на русском языке.
Profan вне форума  
 
Непрочитано 06.12.2010, 22:42 Замена сообщений, выдаваемых командной строкой:
#352
Pavel23


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


Всем привет!
Хочу проконсультироваться, надеюсь, тема еще кем-то просматривается.
У меня есть макрокоманда для отрисовки мультилиний:
^C^C_cmlstyle st1;_cmljust 1;_cmlscale;\;_mline;
однако во время выполнения, в командной строке выдается сообщение:
"Новое значение CMLSCALE <1,000>:", а хочется, чтобы при запросе ввода в командную строку выдавалось немного другое: "Укажите смещение от опорных точек <1,000>:". Вопрос, как это можно реализовать в макросе кнопки, с помощью лисп выражения или diesel, может кто подскажет. Сам я не силен не в лиспе, не в diesel. Заранее очень благодарен, ну очень нужна такая фигня.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 07:56
#353
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


В макросе не получится, надо хоть и маленькую, но программку писать. Например такую:
Код:
[Выделить все]
;|функция kr_mlinedraw
Параметры:
style - стиль мультилинии "cmlstyle"
just - выравнивание "cmljust"

Пример вызова:
(kr_mlinedraw "STANDARD" 1)
|;
(defun kr_mlinedraw (style just)
  (if (setq scale (getreal (strcat "\nУкажите смещение от опорных точек <"(rtos (getvar "cmlscale") 2 4)">:")))
    (setvar "cmlscale" scale)
    );if
  (setvar "cmlstyle" style)
  (setvar "cmljust" just)
  (command "_mline")
  );defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 08:43
#354
Pavel23


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


Спасибо за код, но правда не успел попробовать.
У меня вчера примерно так получилось:
^C^C_cmlstyle st1;_cmljust 1;(setvar "cmlscale" (getint "Укажите смещение от опорных точек:")) \");_mline;
Работает вроде, на моем 2011 каде, не знаю правильно это или нет, подобрал методом научного тыка. Интересно будет ли работать у других, и в других версиях, а вот с <???>: текущим значением переменной пока никак. Может можно дополнить?

Попробовал лисп, конечно это круче, а можно добавить в код еще и функции создания нового слоя с выбором цвета для слоя из окна палитры?
У меня было: ^C^C_-layer;_unlo;st1;_t;st1;_on;st1;_m;st1;_c;\;;_lwe;0.3;;;_cmlstyle;st1;_cmljust;1;(setvar "cmlscale" (getint "Укажите смещение от опорных точек:")) \");_mline;, но цвет приходится вводить в ком. строке, а хочется выбрать в окне палитры. Это было бы ваще круто...

Последний раз редактировалось Pavel23, 07.12.2010 в 09:57.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 11:20
#355
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


И что, ты каждый раз нажимая кнопку переопределяешь цвет у слоя?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 11:50
#356
Pavel23


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


Нет конечно, только при первом создании слоя и отрисовки млинии, потом просто жму [Enter], если не нужно менять цвет. У меня много кнопочек таких, каждая создает млинию по определенному шаблону в определенном слое, тобишь если десять млиний в чертеже - то десять слоев и каждая из них со своим шаблоном. Смысл в этом следующий, рисуется плиния (как бы опорная), затем рисуется млиния по контрточкам плинии (в шаблоне млинии всего одна линия с отступом -1 от средней точки), то есть опорные точки смещены на милиметр, рисуем вторую линию со смещением например 2, затем объединяем это дело в группу. Когда я изменяю плинию, двигая контрточки - меняются все три синхронно, так как конрточки общие. Слои нужны, что-бы редактировать млинии отдельно друг от друга (добавить вершины, изменить цвет и прочее). Вобщем цель этой затеи - получить псевдомультилинию, в которой можно не редактируя шаблона раздвигать относительно друг друга линии между собой, менять их цвет, менять независимо масштаб самих линий с определенным типом, вобщем модификация небольшая, дающая возможность хоть как-то редактировать млинию размещенную в чертеже.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 16:50
#357
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Как вызвать палитру цветов я не знаю. Можно ведь определиться с каким то одним цветом и забить его на кнопке, каждому типу млинии по своему цвету.
Вообще, можно рисовать ведь сразу несколько млиний одновременно и автоматом кидать их в группу. Т.е. алгоритм проги такой:
1. Жмем на кнопку.
2. Вводим значения между линиями в комстроку (т.е. по очереди масштаб будущих млиний).
3. Создаем один стиль млинии объединяющий в себе обе линии.
4. Отрисовываем вручную трассу (или что там у тебя). Попутно (или потом) создаем список точек трассы.
5. Удаляем все что нарисовали и создали.
6. Создаем новые 2 млинии, которые должны быть в группе.
7. Отрисовываем автоматом их по ранее созданному списку точек. Каждую в своем слое.
8. Объединяем в группу.

Здесь можешь взять проги для создания стиля млинии вместо их импорта из шаблона:
http://forum.dwg.ru/showthread.php?t...EC%EB%E8%ED%2A
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 19:12
#358
Pavel23


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


С шаблонами стилей млиний, как раз проблем нету, я вояю типа Tools для своей конторы, и шаблоны у меня загружаются из базы (файл.dwg), вместе с типами линий, кучей блоков, слоями и прочее. Кнопочка _-insert;"Файл.dwg";0,0;;;;_eras;_last;, в конце работы с чертежом двойное _purge, чтоб удалить лишние блоки. База лежит на серваке, это очень удобно, если я че-то там правлю или добавляю, при загрузке это все прилетает к пользователям. Шаблонов не так много, каждый со своим типом линий, ну штук десять, больше не пользуем, а вот кол-во линий каждый раз разное и 3, и по 7 бывает, как это воплотить в твоем предложении пока плохо представляю. Еще по возможности стараюсь кнопки переводить на скрипты, ложу их на сервак, тоже очень удобно модифицировать. К стати, лиспы тоже можно пихать в скрипты...
Предлагаю для решения проблем с цветом, тоже сделать на лиспе, а ком. строке при запросе цвета выводить подсказки "Укажите цвет линии [1-красный];[2-желтый];[3-зеленый]; ... основные цвета до 7-го подсказать;[1-255]:" думаю этого будет вполне достаточно. Правда в лиспе ваще не шарю, и как это реализовать не знаю. Если поможешь, огромное спасибо, если нет, так нет, у всех свои заботы...

Последний раз редактировалось Pavel23, 07.12.2010 в 22:10.
Pavel23 вне форума  
 
Непрочитано 14.12.2010, 09:55 Циклические кнопки на DIESEL
#359
Pavel23


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


Всем привет, замострячил тут кнопочку, которая блокирует и при повторном нажатии разблокирует нужные слои. Может кому пригодиться такой опыт.
У меня было много кнопочек управления определенными слоями проекта, теперь их стало в два раза меньше, одна кнопка и вкл и выкл. Для более стабильной работы, в конце кода можно добавить обнуление переменных.

Код:
[Выделить все]
^C^C_USERS3 _-layer _u;USERS4 _-layer _lo;'_setvar;USERI3;$M=$(if,$(=,$(getvar,USERI3),2),1,2);$M=$(if,$(=,$(getvar,USERI3),2),$(getvar,USERS3),$(getvar,USERS4));Слои_для_блокировки_через_запятую;;
Pavel23 вне форума  
 
Непрочитано 14.12.2010, 14:49
#360
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Цитата:
Сообщение от Pavel23 Посмотреть сообщение
С шаблонами стилей млиний, как раз проблем нету, я вояю типа Tools для своей конторы, и шаблоны у меня загружаются из базы (файл.dwg), вместе с типами линий, кучей блоков, слоями и прочее. Кнопочка _-insert;"Файл.dwg";0,0;;;;_eras;_last;
Лучше так:
Код:
[Выделить все]
^C^C_-insert;"Файл.dwg";^C_-purge;_Blocks;Файл;_n;
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум 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