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

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

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

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

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

Выкладываю 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:
Просмотров: 452737
 
Непрочитано 15.01.2011, 01:26
#381
skkkk


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


Offtop: И только? Ну я, в общем, так и думал. Это же DIMZINчик! Действительно, ты прав, добавил в #364. Хотя, может, Antonu_Br так и не надо... ведь, по умолчанию DIMZIN имеет значение 8, то есть, судя по всему, у него нулей-то и нет, как и у меня не было... Только вот зачем такой большой код? Anton_Br же просил макрос по аналогии с _aidimprec, а эти диалоги уже и превращают макрос в лисп
skkkk вне форума  
 
Непрочитано 15.01.2011, 01:58
#382
gomer

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


ну, я считаю, что макросы должны запускать лисп команды, а не создавать...по определению... Тогда пользователю будет приятнее работать и понятнее...
gomer вне форума  
 
Непрочитано 15.01.2011, 05:24
#383
skkkk


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


Offtop: Дело каждого... А если макрос содержит, например, и команды и опции, но не определен функцией defun, то его не повторить по правой кнопке или Enter'у, что часто неудобно. А я это так, ради интереса тренируюсь, без претензии на награды и почет. Это, к сведению - мой первый серьезный макролисп. Учусь. Практикуюсь. Здорово же, когда от этого еще и польза кому-то есть
skkkk вне форума  
 
Непрочитано 15.01.2011, 14:36
#384
gomer

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
А если макрос содержит, например, и команды и опции, но не определен функцией defun, то его не повторить по правой кнопке или Enter'у, что часто неудобно.
В чем проблема-то? Лиспу подцепить к файлу настройки или вставить в *.mnl или загружать из библиотеки... или на худой конец в портфель отправить, а определять как ^c^cCHDIMRND

Макрос по определению служит для вызова нескольких команд с опциями
gomer вне форума  
 
Непрочитано 08.02.2011, 16:09
#385
gyani


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


Здравствуйте, подскажите

имея точку полученную ^C^C(setq pt1 (getpoint)); как pt1 сместить по х?

Последний раз редактировалось gyani, 08.02.2011 в 17:50.
gyani вне форума  
 
Непрочитано 09.02.2011, 02:21
#386
skkkk


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


Сместить точку как объект? или получить новую х-координату этой точки? Ничего не ясно из постановки вопроса. Лучше сразу подробней и толково объясни, чего нужно добиться от макроса. А переменная pt1 из твоего примера - это список, содержащий х- и y-координаты точки
skkkk вне форума  
 
Непрочитано 09.02.2011, 08:27
1 | #387
Do$

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Здравствуйте, подскажите

имея точку полученную ^C^C(setq pt1 (getpoint)); как pt1 сместить по х?
Как-то так наверное:
Код:
[Выделить все]
(mapcar '+ pt1 '(<тут вписать смещение по X> <тут вписать смещение по Y> <тут вписать смещение по Z>))
;;Например: (mapcar '+ pt1 '(1.0 0.0 0.0))
Do$ вне форума  
 
Непрочитано 09.02.2011, 10:12
#388
gyani


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


спасибо сделал так
^C^C(setq pt1 (getpoint));\(setq pt2 (mapcar '+ pt1 '(6.0 0.0 0.0)));_break;!A;!pt1;_non;!pt2;

Вопрос, можно ли добавить подсказку при вводе mtext? чтобы вместо mtext было что то полезное? как например при рисоавнии линии пишется укажите первую точку.

Последний раз редактировалось gyani, 09.02.2011 в 14:47.
gyani вне форума  
 
Непрочитано 09.02.2011, 16:28
#389
Volv


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


Привет. Народ, подскажите пож как прописать макрос на поворот копии обьекта с опорным углом. Я порылся в этой темке и нашол макрос на поворот с опорным углом -
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr.
Пытался сам его ковырять, дабы реализовать поворт копии с опорным углом, но у меня ничего не выходит... Зарание спасибо...
Volv вне форума  
 
Непрочитано 09.02.2011, 16:45
#390
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Volv Посмотреть сообщение
Привет. Народ, подскажите пож как прописать макрос на поворот копии обьекта с опорным углом. Я порылся в этой темке и нашол макрос на поворот с опорным углом -
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr.
Пытался сам его ковырять, дабы реализовать поворт копии с опорным углом, но у меня ничего не выходит... Зарание спасибо...
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr.
?
 
 
Непрочитано 09.02.2011, 16:49
#391
Volv


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr.
?
что-то подобное пытался делать, но выдает такого рода сообщение

Код:
[Выделить все]
Command: (defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" 
"_r" (getvar "lastpoint") pause))
C:KR
Command:     kr. Unknown command "KR.".  Press F1 for help.
Volv вне форума  
 
Непрочитано 09.02.2011, 18:50
#392
AlphaGeo


 
Сообщений: n/a


Volv, а ты попробуй сохранить эту строку в файл *.lsp и загрузить в AutoCAD, как приложение. Подробней можно прочитать здесь: Как использовать лисп, опубликованный на форуме. В таком случае можно будет и в автозагрузку этот макрос добавить.

Добавлено:
Можно еще попробовать упрощенный вариант (не тестировал) именно в качестве макроса. а не приложения.
Код:
[Выделить все]
^C^C_rotate;\\_c;_r;@;\

Последний раз редактировалось AlphaGeo, 09.02.2011 в 19:11.
 
 
Непрочитано 09.02.2011, 19:37
#393
Volv


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Volv, а ты попробуй сохранить эту строку в файл *.lsp и загрузить в AutoCAD, как приложение. Подробней можно прочитать здесь: Как использовать лисп, опубликованный на форуме. В таком случае можно будет и в автозагрузку этот макрос добавить.

Добавлено:
Можно еще попробовать упрощенный вариант (не тестировал) именно в качестве макроса. а не приложения.
Код:
[Выделить все]
^C^C_rotate;\\_c;_r;@;\
указаный упрощенный макрос не работает..., но спасибо за подсказку. Что касается лиспа то нада сесть разобратся.
Volv вне форума  
 
Непрочитано 09.02.2011, 21:01
#394
Vova

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


*^C^CROTATE;\\;\90
Здесь угол задается путем изменения макроса (который удобнее расположить на палете) и предназначен для множественного использования подряд. Выбор объектов обязательно и только двумя кликами (можно рамкой).
Vova вне форума  
 
Непрочитано 10.02.2011, 08:36
#395
Do$

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


Цитата:
Сообщение от Volv Посмотреть сообщение
что-то подобное пытался делать, но выдает такого рода сообщение

Код:
[Выделить все]
Command: (defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" 
"_r" (getvar "lastpoint") pause))
C:KR
Command:     kr. Unknown command "KR.".  Press F1 for help.
Тоже когда-то сперва сделал макрос, потом написал такой лисп:
Код:
[Выделить все]
(defun c:rotateplus (/ *adoc* ss bpt opt nopt var_lst rec_var_lst)
  (vl-load-com)
  (vla-StartUndoMark (setq *adoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
  (vl-catch-all-apply
    (function (lambda ()
		(sssetfirst nil (setq ss (ssget)))
		(setq bpt  (getpoint "\nBase point:")
		      opt  (getpoint bpt "\nOrientation point:")
		      nopt (getpoint bpt "\nNew position for orientation point:")
		) ;_ end of setq
	      ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of vl-catch-all-apply
  (setq	rec_var_lst
	 (mapcar (function getvar)
		 (setq var_lst (list "osmode" "cmdecho"))
	 ) ;_ end of mapcar
  ) ;_ end of setq
  (mapcar (function setvar) var_lst (list 0 0))
  (sssetfirst nil nil)
  (vl-cmdf "_.rotate"
	   ss
	   ""
	   bpt
	   "_r"
	   bpt
	   opt
	   nopt
  ) ;_ end of vl-cmdf
  (mapcar (function setvar) var_lst rec_var_lst)
  (vla-EndUndoMark *adoc*)
  (princ)
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 10.02.2011, 08:59
#396
Volv


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


Do$, в твоем посте приведено два варианта лиспа на поворот копии с рефрентной ссылкой, первый, написаный AlphaGeo, будет как бы попроще да и его работоспособность я уже проверил (только его нада постоянно подгружать), что касается твоего предложения, то его я не тестил, вот только мне не охота юзать лиспы, хочу юзать команду при помощи макроса....
Volv вне форума  
 
Непрочитано 10.02.2011, 09:44
#397
Do$

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


Цитата:
Сообщение от Volv Посмотреть сообщение
первый, написаный AlphaGeo, будет как бы попроще
Испорчен я напрочь этим форумом - не могу просто писать, обязательно всякие проверки, подстраховки и прочие излишества применяю
Цитата:
Сообщение от Volv Посмотреть сообщение
вот только мне не охота юзать лиспы, хочу юзать команду при помощи макроса....
Хозяин - барин
Do$ вне форума  
 
Непрочитано 10.02.2011, 09:56
#398
Volv


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


а какую литературу лутше почитать по написани макросов, вернее по описанию каманда применяющихся в макросах. и что-то для чайников о лиспе, связаном непосредственно с автокадом, основаное на примерах и их разборе...?
Volv вне форума  
 
Непрочитано 10.02.2011, 10:00
#399
Лиспер


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


В.Свет "Язык макрокоманд AutoCAD и написание макросов". По-моему, так. Была в Download.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 10.02.2011, 15:52
#400
Volv


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


Всем кто делал подсказки спасибо. Отдельное спасибо AlphaGeo.
В итоге вышло сделать кнопку, которая отвечает за поворот копии елемента с опорным углом

Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr
Volv вне форума  
Ответ
Вернуться   Форум 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