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

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

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

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

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

Выкладываю 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:
Просмотров: 450816
 
Непрочитано 04.03.2014, 21:29
#681
gomer

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


Цитата:
тоже присваивает почему-то "0".
Активный слой совсем-совсем не "0".
Да неужели?
gomer вне форума  
 
Непрочитано 05.03.2014, 02:49
1 | #682
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно ли в макросе запомнить текущее состояние параметров черчения (цвет, слой, вес, тип линий, ширину, масштаб типа линий), ...
А нельзя ли начертить что бы то ни было и присвоить последнему объекту (доступному по опции _last) нужные свойства, например, командой _CHANGE?
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
... а также значение параметров черчения (AUTOSNAP), а после выполнения каких-то действий восстановить их?
А вот тут-то и...
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
... возникнет проблема с обратным восстановлением значений).
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В чем там засада с восстановлением?
Засада в том, что если пользователь нажмет ESC или произойдет еще какая-нибудь ошибка (нет слоя, не подгружен тип линии, объект не создался и т.д.), то ничего не восстановится. В этом, на мой взгляд, одно из основных ограничений языка макрокоманд. Второе ограничение - макрос нельзя повторить ни по Enter, ни по стрелке вверх.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если нельзя или не стоит командами, то, значит, программно?
Если мы упираемся в необходимость изменения системных переменных, лучше программно, только если AutoCAD не LT.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Поищи функцию универсального обработчика ошибок (уж поминали такие вещи миллион раз)
Обработка ошибок решает проблему восстановления переменных.
skkkk вне форума  
 
Непрочитано 05.03.2014, 03:00
#683
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Цитата:
тоже присваивает почему-то "0".
Активный слой совсем-совсем не "0".
Да неужели?
Гм... Кажется, понял почему у меня не получалось - я вставлял Ваше и kpblc выражения в макрос в Tool Palette, а там отдельно определяется и слой, и цвет и пр. Видимо, вмешиваются эти определения из Tool Palette.
Попробовал вставить в отдельную кнопку - работает! Спасибо.
Жаль, что пробовать макрос на кнопке неудобно, дольше, чем в палитре. Вы как макросы проверяете?
Но как же быть, если я планирую использовать эти макросы в палитрах?
И не подскажете, что такое $M?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 05.03.2014, 08:45
#684
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Жаль, что пробовать макрос на кнопке неудобно, дольше, чем в палитре. Вы как макросы проверяете?
ну у меня есть отдельное меню для макросов
gomer вне форума  
 
Непрочитано 05.03.2014, 08:55
#685
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Обработка ошибок решает проблему восстановления переменных.
Дополнительно: http://autolisp.ru/2009/09/13/error-catch/
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
в макрос в Tool Palette, а там отдельно определяется и слой, и цвет и пр
В свойствах инструмента установи "Использовать слой" - "Текущий". Возможно, поможет.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Но как же быть, если я планирую использовать эти макросы в палитрах?
А надо ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 18:42
#686
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А надо ли?
А что делать, если нужно определить параметры черчения нескольких сотен объектов? Для ускорения черчения и исключения ошибок назначения параметров. Нужно меню объектов, где для каждого объекта все прописано.
Есть готовые альтернативы Tool Palette?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 05.03.2014, 20:56
#687
Кулик Алексей aka kpblc
Moderator

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


Я про то, что макросы в палитрах лучше не использовать. Это неэффективно. Я бы делал ставку на лисп-приложения - они и гибче будут, и проще в поддержке (естественно, при соблюдении некоторых условий).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 21:05
#688
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я про то, что макросы в палитрах лучше не использовать. Это неэффективно. Я бы делал ставку на лисп-приложения - они и гибче будут, и проще в поддержке (естественно, при соблюдении некоторых условий).
С лиспами в #631-661 уперся в тупик. Нужно, чтобы можно было после черчения полилиний и пр. выполнять команду Autocad Map 3D, а из лиспа она не запускалась. Или я ее не умею правильно готовить.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.03.2014, 08:06
#689
Astartes

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


Приветствую. Кто сможет помочь.
Хоть это и не макрос, но был выложен в этой теме.
Вот лисп для быстрого выделения мультивыносок по диапазону.
Скажите что нужно поменять, чтобы также по диапазону выделялся мтекст?
Пробовал в коде MULTILEADER заменить на MTEXT или MULTITEXT, но не лисп не работает.
Код:
[Выделить все]
 (defun c:qsel()
  (vl-load-com)
  ((lambda(range)
     (if (not (vl-catch-all-error-p range))
       (sssetfirst nil (ssget "_X" (list (cons 0 "MULTILEADER") (cons 304 range))))
       )
     )
    (vl-catch-all-apply 'getstring
      (list t "\nВведите диапазон в формате [начало-конец]: ")
      )
    )
  (princ)
  ); end c:qsel
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 09:54
#690
Кулик Алексей aka kpblc
Moderator

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


Astartes, а "диапазон" - это что? Применительно к MTEXT.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2014, 10:11
#691
Astartes

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


Кулик Алексей aka kpblc, Тоже что и для мультивыносок.
Диапазон чисел (числовые значения мтекста).
В спецификации номера позиций забиты мтекстом.
Если стандартным методом. то КвикСелект-Мтекст-Содержимое-Оператор (поиск с глобальными символами) - Значение [0-9],[0-9][0-9].
В общем все тоже самое что и для мвыносок, только нужно чтобы выбирался мтекст.
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 10:14
#692
Кулик Алексей aka kpblc
Moderator

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


Кхм... А как бы учесть вариант принудительного форматирования текста?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2014, 11:02
#693
Astartes

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


Кулик Алексей aka kpblc, Если это ко мне вопрос то я не знаю.
А как он учтен в вышевыложенном лиспе для мвыноски? Ведь мвыноска это по сути тот же мтекст. Или нет?
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 17:24
#694
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


(list (cons 0 "MTEXT") (cons 1 range))
kakt00z вне форума  
 
Непрочитано 18.03.2014, 05:07
#695
Astartes

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


kakt00z, Спасибо, заработало.
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 30.04.2014, 04:28
#696
АлексЮстасу

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


Как сделать обработку в макросе и предварительно выбранного, и выбранного после запуска макроса?
Например, нужно заменить типы линий на непрерывный (не важно на какой):
^C^C_chprop;_lt;Continuous;; - заменит типы линий у предварительно выбранного. Если нет предварительно выбранного, то не сработает.
^C^C_chprop;\;_lt;Continuous;; - заменит типы линий только у одного элемента, выбранного после вызова макроса . Для предварительно выбранного не сработает.
^C^C_chprop;\\;_lt;Continuous;; - заменит типы линий только у двух элементов, выбранных после вызова макроса, или у всех элементов, выбранных рамкой. Для предварительно выбранного не сработает.
Как делается это нормально - чтобы для обработки выбрать все нужное как до, так и после запуска?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 30.04.2014, 05:33
1 | #697
Krieger

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как сделать обработку в макросе и предварительно выбранного, и выбранного после запуска макроса?
Например, нужно заменить типы линий на непрерывный (не важно на какой):
^C^C_chprop;_lt;Continuous;; - заменит типы линий у предварительно выбранного. Если нет предварительно выбранного, то не сработает.
^C^C_chprop;\;_lt;Continuous;; - заменит типы линий только у одного элемента, выбранного после вызова макроса . Для предварительно выбранного не сработает.
^C^C_chprop;\\;_lt;Continuous;; - заменит типы линий только у двух элементов, выбранных после вызова макроса, или у всех элементов, выбранных рамкой. Для предварительно выбранного не сработает.
Как делается это нормально - чтобы для обработки выбрать все нужное как до, так и после запуска?
Попробуй так, без ^C^C:
Код:
[Выделить все]
(if (setq ss (ssget)) (command "_chprop" ss "" "_lt" "Continuous" "")) (setq ss nil)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.04.2014, 06:28
1 | #698
gomer

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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Попробуй так, без ^C^C:
Зачэм?
^C^C((lambda (ss) (if ss (command "_chprop" ss "" "_lt" "Continuous" ""))) (ssget))
усе работает, хотя это идеологически не макрос, стопиццот раз уже повторял
gomer вне форума  
 
Непрочитано 30.04.2014, 07:53
#699
Krieger

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Зачэм?
^C^C((lambda (ss) (if ss (command "_chprop" ss "" "_lt" "Continuous" ""))) (ssget))
усе работает, хотя это идеологически не макрос, стопиццот раз уже повторял
Ну да, работает. Что то подумалось что выделение должно сняться.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.04.2014, 17:15
#700
АлексЮстасу

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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Попробуй так
Цитата:
Сообщение от gomer Посмотреть сообщение
усе работает
Спасибо!
Вы писали не командами, а на лиспе (?), потому что написать чисто макрос, учитывающий выбор и до, и после, нельзя?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
Ответ
Вернуться   Форум 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