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

Вернуться   Форум 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:
Просмотров: 451050
 
Непрочитано 09.09.2008, 15:17
#61
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


последняя измеренная площадь сохраняется в переменной area, видимо у тебя не сохраняется, видимо по причине того, что кака-нибудь другая переменная это запрещает.
stas_org вне форума  
 
Непрочитано 11.09.2008, 16:22
#62
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Вопрос - есть некий макрос печати в файл
ну например вида

Код:
[Выделить все]
^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;
и есть некий макрос печати в файл
вида

Код:
[Выделить все]
^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;
первый выводит на печать в пространстве модели - второй в пространстве бумаги.
Есть переменная tilemode по состоянию которой можно узнать о пространстве.
НО - вот как сделать ветвление при использовании макросов?
HELP....
Diman111 вне форума  
 
Непрочитано 11.09.2008, 17:00
#63
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Diman111, Можно DIESEL'ом
Вариант меню
Код:
[Выделить все]
$M=$(if,$(eq,$(getvar,tilemode),1),^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;,^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;)
Проверить правильность работы дизеля можно в MODEMACRO (см. строку режимов) так
Код:
[Выделить все]
(setvar "MODEMACRO" "$M=$(if,$(eq,$(getvar,tilemode),1),^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;,^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;)")
Посмотри, нужный ли макрос остается в строке режимов
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.09.2008 в 11:16.
VVA вне форума  
 
Непрочитано 12.09.2008, 09:18
#64
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Спасибо - печатает верно

а вот вариант с записью в трей не сработал

Код:
[Выделить все]
Command: (setvar "MODEMACRO" "$M=755CM_A1
("_> User A1
("_> m
("_> l
("_> n
("_> e
("_> f
("_> c
("_> y
("_> A1_mono
("_> y
("_> w
("_> y
("_> ~
("_> y
("_> y
("_> ,*Cancel*
; error: Function cancelled
Diman111 вне форума  
 
Непрочитано 12.09.2008, 11:11
#65
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Это у тебя криво скопировалось в командную строку.
Попробуй так
Код:
[Выделить все]
(defun C:TEST ()
(setvar
  "MODEMACRO"
  (strcat
    "$M=$(if,$(eq,$(getvar,tilemode),1),"
    "^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;"
    ","
    "^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;"
    ")")
  )
  (princ)
  )
Команда TEST. Смотреть в район отображения координат курсора. Чтобы понятно было синим выделили элементы DIESEL. Черные соответственно твои макросы
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.09.2008, 13:08
#66
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Спасибо.
По дизелю не подскажите ссылочки на родном языке форума? с пояснением синтаксиса и операторов и примерами .
Пожалуйста
Diman111 вне форума  
 
Непрочитано 12.09.2008, 13:37
#67
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Книги Н.Полещука + берешь acad.mns от 2004 и в блокноте смотришь.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.10.2008, 17:17
#68
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


помогите с командой,не догоняю что не так-^C^C-overkill;_all;;;_audit;_y;_purge;
после overkill застревает- в ком строке следущее-Command: -overkill
Select objects: _all
1136 found
Select objects:
2 objects were not in the current space.
IGNORE=none
Fuzz=0.000001, Optimize PLINES=Y, combine PARTIAL overlap=Y, combine ENDTOEND=Y
Enter an option to change [Ignore/Fuzz/Plines/parTial/Endtoend] <done>:
0 object(s) deleted.
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 27.10.2008, 17:34
#69
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


В общем до Аудита не доходит,а если один ентер убрать то выползает окно диалоговое,где надо ентер жать
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 27.10.2008, 18:16
#70
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Оказался востребованным вариант для Автокада 2008 и выше, сбрасывающий ScaleLIST (см Зараза в 2008) вычищающий список масштабов от дюймов (можно перенастроить на метрические единицы)
Код:
[Выделить все]
(vl-load-com)
(command "_-scalelistedit" "_r" "_y" "_exit")
(foreach sc (dictsearch (namedobjdict) "acad_scalelist")
  (if (and (= (car sc) 350)
           (vl-string-search "\"" (cdr(assoc 300 (entget (cdr sc)))))
           )
    (vl-catch-all-apply 'vla-delete (list (vlax-ename->vla-object (cdr sc))))
    )
  )
Можно поместить в автозагрузку (mnl файл) либо сделать команду и повесить на кнопку
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.10.2008, 18:47
#71
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а мой чем плох?


Код:
[Выделить все]
(defun restore-scale-list ()
  (command "_.-scalelistedit" "_r" "_y" "_e")
  ) ;_ end of defun

(restore-scale-list)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 27.10.2008, 22:08
#72
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


dextron3, Твой не уберает дюймы в перечне масштабов
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 05:07
#73
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а как там могут дюймы появиться если я исключительно в мм черчу, или это для наших западных коллег?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 08:18
#74
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


VVA, mnl-файл ИМХО загружается 1 раз при загрузке CUI. При открытии, например, 2-го файла косяк с масштабами не решится. Так что я думаю лучше запихать это в acaddoc.lsp.

Добавлено:
А вот бы ещё это же, да без командных методов - вообще было бы замечательно...
Makswell вне форума  
 
Непрочитано 28.10.2008, 09:57
#75
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Makswell Посмотреть сообщение
VVA, mnl-файл ИМХО загружается 1 раз при загрузке CUI...
А cui грузится в каждый чертеж. У меня этот код как раз и находится в моем mnl файле
Цитата:
Добавлено:
А вот бы ещё это же, да без командных методов - вообще было бы замечательно...
ТОгда можно пойти от противного. Перечислить желаемые масштабы, а остальные на месте без суда и следствия.
Оформил ввиде функции, хотя в загружаемом файле можно оставить только цикл foreach
Код:
[Выделить все]
;;;Удаляем  все масштабы (scalelist) не перечисленные в списке-шаблоне
(defun restore-scale-list ()
  (vl-load-com)
  (foreach sc (dictsearch (namedobjdict) "acad_scalelist")
    (if (and (= (car sc) 350)
             (not (member (cdr (assoc 300 (entget (cdr sc))))
                          '("1:1" "1:2" "1:10" "1:50" "1:100" "2:1") ;_Здесь перечисляем нужные масштабы
                  ) ;_ end of member
             ) ;_ end of not
        ) ;_ end of and
      (vl-catch-all-apply
        'vla-delete
        (list (vlax-ename->vla-object (cdr sc)))
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of if
  ) ;_ end of foreach
) ;_ end of defun
(restore-scale-list)


Фукнция и команда
Код:
[Выделить все]
(defun SetScale( / lst pat tmp)
;;; pat - шаблон маштабов состоит из списков вида
;;;  (("имя в списке масштабов1" Масштаб_единицы_листа1 Масштаб_единицы_чертежа1)
;;;   ("имя в списке масштабов2"  Масштаб_единицы_листа2 Масштаб_единицы_чертежа2)
;;;   ...
;;;   )
  (setq pat '(("1:1" 1 1)("1:2" 1 2)("1:10" 1 10)
	      ("1:50" 1 50)("1:100" 1 100)("2:1" 2 1)
	      ("1:11" 1 11)("Мой" 21.5 8.133)))
  ;;;Удаляем не входящие в шаблон масштаб
  (setq tmp (mapcar 'car pat))
(if (GETCNAME "_SCALELISTEDIT")
  (progn
    (COMMAND "_-SCALELISTEDIT" "_R" "_Y" "_E")
    (setq lst nil)
    (foreach item (dictsearch (namedobjdict) "ACAD_SCALELIST")
      (if (= 350 (car item))
     (setq lst (cons (cdr(assoc 300 (entget(cdr item)))) lst))
    ) ;_ end of if
  )
  (while (> (getvar "CMDACTIVE") 0) (command))
    (command "_.-SCALELISTEDIT")
  (foreach item lst
    (command "_D" item)
    )
    (command "_E")
   (setq lst nil) 
  ;;;Список оставшихся масштабов
   (foreach item (dictsearch (namedobjdict) "ACAD_SCALELIST")
    (if	(= 350 (car item))
      (setq lst (cons (cdr(assoc 300 (entget (cdr item)))) lst))
    ) ;_ end of if
  ) ;_ end of foreach
)
  )
    
  ;;;Список не созданных масштабов из шаблона pat
   (if (and lst (setq pat (vl-remove-if '(lambda(x)(member (car x) lst)) pat)))
     (progn
       (while (> (getvar "CMDACTIVE") 0)(command))
       (command "_.-scalelistedit")
       (foreach item pat
	 (command "_Add" (car item) (strcat (rtos (cadr item)) ":" (rtos (caddr item))))
	 ) ;_ end of foreach
       (command "_Exit")
       (while (> (getvar "CMDACTIVE") 0)(command))
       )
     )
  (princ)
   )
(defun C:SetScale ()(SetScale))

Код:
[Выделить все]
;;;======================================================
;;; СПИСОК МАСШТАБОВ SCALELIST SCALE
;;;======================================================

(vl-catch-all-apply
  '(lambda ()
     ((lambda (lst / dict dn)
;;; Purge excess scales
;;; gile
;;; http://www.theswamp.org/index.php?topic=29663.0 
;;;lst - шаблон маштабов состоит из списков вида
;;;  (("имя в списке масштабов1" "Масштаб единицы листа1" "Масштаб единицы чертежа1")
;;;   ("имя в списке масштабов2" "Масштаб единицы листа2" "Масштаб единицы чертежа2")
;;;   ...
;;;   )
;;; lst - the pattern scale is made up of lists of species 
;;; (("Name of the Scale 1" Scale_paper_unit_1 Scale_drawing_unit_1) 
;;; ("Name of the Scale 2"  Scale_paper_unit_2 Scale_drawing_unit_2) 
;;; ... 
;;;)
;;; Usage (SetScale)
;;;  (setq pat '(("1:1" 1 1)("1:2" 1 2)("1:10" 1 10) ;_Correct scale here
;;;	      ("1:50" 1 50)("1:100" 1 100)("2:1" 2 1)
;;;	      ))
	(setq dn "A")
        (if (setq dict (dictsearch (namedobjdict) "ACAD_SCALELIST"))
          (progn
            (entmod (vl-remove-if
                      '(lambda (x) (or (= (car x) 3) (= (car x) 350)))
                      dict
                    ) ;_ end of vl-remove-if
            ) ;_ end of entmod
            (setq dict (cdr (assoc -1 dict))
                  n    -1
            ) ;_ end of setq
            (foreach s lst
              (dictadd dict
		       (progn
			 (if (= n 9)
			 (setq dn (chr(1+ (ascii dn)))
			       n -1
			       )
			 )
			 (terpri)
			 (princ
			   (strcat dn (itoa (setq n (1+ n))))
			   )
			 )
                       (entmakex
                         (list
                           '(0 . "SCALE")
                           '(100 . "AcDbScale")
                           (cons 300 (car s))
                           (cons 140 (cadr s))
                           (cons 141 (caddr s))
               		  '(70 . 0) ;_ kpblc http://forum.dwg.ru/showthread.php?t=73416
	                  '(290 . 1);_ kpblc http://forum.dwg.ru/showthread.php?t=73416
                         ) ;_ end of list
                       ) ;_ end of entmakex
              ) ;_ end of dictadd
            ) ;_ end of foreach
          ) ;_ end of progn
        ) ;_ end of if
      )
       '(("1:1" 1 1)
	 ("1:2" 1 2)
	 ("1:10" 1 10)
	 ("1:50" 1 50)
	 ("1:100" 1 100)
	 ("2:1" 2 1)
	)
     )
   )
)

PS Это все справедливо для Автокада с версии 2008 и выше
PPS Еще тема про масштабы LISP. Как программно создавать масштабы аннотаций
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 04.10.2011 в 09:41. Причина: Новый вариант
VVA вне форума  
 
Непрочитано 28.10.2008, 10:14
#76
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от VVA Посмотреть сообщение
А cui грузится в каждый чертеж. У меня этот код как раз и находится в моем mnl файле
Пардон, был неправ

Добавлено:
За код - спасибо!
Makswell вне форума  
 
Непрочитано 28.10.2008, 11:06
#77
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, А у меня бывало такое что масштаб 1:100, ставлю он совсем не тот выдает, другой совсем непонятный масштаб, а когда 1:101 ставлю то вроде как 1:100 но естественно не точный, как это вылечить?

Буду благодарен!
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 12:40
#78
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


dextron3, Лечи так: Меню Формат/Список масштабов/Изменить
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 15:27
#79
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, нет это уже сложно мне бы народное лекарство, ваш лисп может мне помочь?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 16:28
#80
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Лисп масштабы не правит, только удаляет или оставляет в живых
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум 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