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

Вернуться   Форум 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:
Просмотров: 451166
 
Непрочитано 10.02.2011, 16:08
#401
Vova

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
В.Свет "Язык макрокоманд AutoCAD и написание макросов". По-моему, так.
AutoCAD Язык макрокоманд и создание кнопок
Устарела та часть, где применен калькулятор (не все работает начиная от 2006). Также глава про меню, вместо нее читай статью на главной странице
Vova вне форума  
 
Непрочитано 17.02.2011, 12:39
#402
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Неподскажете как макрокоманду превратить в команду...что бы присвоить её псевдоимя в acad.pgp... ?
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 12:46
#403
Krieger

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


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Неподскажете как макрокоманду превратить в команду...что бы присвоить её псевдоимя в acad.pgp... ?
Переписать её на лиспе.
__________________
Делай хорошо, плохо само получится.
Krieger на форуме  
 
Непрочитано 17.02.2011, 12:55
#404
Profan


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


Тогда не нужен будет никакой acad.pgp.
Profan вне форума  
 
Непрочитано 17.02.2011, 13:07
#405
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 13:17
#406
AlphaGeo


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


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Может, так
Код:
[Выделить все]
(defun c:имя_команды () (command "_spStdSelected" "438035B5DE6E701C"))
?
Хотя я что-то не наблюдаю в своем AutoCAD'e такой команды, поэтому не знаю, будет ли lisp в таком виде работать...
 
 
Непрочитано 17.02.2011, 14:12
#407
Krieger

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


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Что это??? Собственно тогда как показали выше.
__________________
Делай хорошо, плохо само получится.
Krieger на форуме  
 
Непрочитано 17.02.2011, 14:22
#408
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


так я уже пытался ((
не работает...
это команда СПДСа...
Спасибо за помощь )
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 14:35
#409
AlphaGeo


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


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
так я уже пытался ((
не работает...
это команда СПДСа...
Спасибо за помощь )
Каким образом пытался? Записывал эту строчку в макрос кнопки? Или как положено сохранял в *.lsp файл и загружал в AutoCAD?
И как эта команда вообще работает? Какие сообщения и опции отображаются в командной строке? Смущает меня такой вот «438035B5DE6E701C» аргумент.
 
 
Непрочитано 17.02.2011, 14:59
#410
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Сохранял в лисп файл )
Работает следующим образом:
"_spStdSelected" - команда выбора стандартного элемента из базы;
«438035B5DE6E701C» - идентификационный номер стандартного элемента;
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 15:11
#411
Krieger

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


Тогда назначь сочетание клавиш, там макрос можно оставить.
__________________
Делай хорошо, плохо само получится.
Krieger на форуме  
 
Непрочитано 17.02.2011, 15:11
#412
AlphaGeo


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


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Работает следующим образом:
"_spStdSelected" - команда выбора стандартного элемента из базы;
«438035B5DE6E701C» - идентификационный номер стандартного элемента;
Так с командной строки ее можно выполнить, или элемент выбирается в появляющимся окне выбора?
 
 
Непрочитано 17.02.2011, 15:24
#413
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Всё работает! невнимательность меня погубит!
Еще раз спасибо!

Последний раз редактировалось Konstruktiv54, 17.02.2011 в 15:34.
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 15:42
#414
Simon13


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


Подскажите! Всё уже облазил! Где найти макрос, который разрывает и заменяет другой линией разрыв, использовать для обозначения пунктиром невидимых частей. Спасибо!
Simon13 вне форума  
 
Непрочитано 17.02.2011, 16:03
#415
Krieger

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


Цитата:
Сообщение от Simon13 Посмотреть сообщение
Подскажите! Всё уже облазил! Где найти макрос, который разрывает и заменяет другой линией разрыв, использовать для обозначения пунктиром невидимых частей. Спасибо!
В этой теме и было:
http://forum.dwg.ru/showpost.php?p=330892&postcount=123
__________________
Делай хорошо, плохо само получится.
Krieger на форуме  
 
Непрочитано 17.03.2011, 12:39
#416
SAMik


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Offtop: Тут выбираешь 1-й текст (это уменьшаемое), 2-й текст (вычитаемое), и в 3-й текст вставляется разность)
кол-во знаков после запятой меняется в строчке (setvar "LUPREC" 2)
Вернулся из командировки принялся за доработку макроса)
Помогите кто может)
Макрос переделал, всё работает, но хотелось бы убыстрить работу с ним.
Сейчас после выбора двух текстов надо нажать ентер и потом выбрать изменяемый текст. Очень хотелось бы не нажимать ентер: выбрал два текста и третий изменяемый и готово, а то неудобно рукой прыгать от пробела к ентеру всё время...
Пытался разобраться сам, но мозгов на это пока не хватает

Код:
[Выделить все]
(defun c:z-calc-text-value- (/ adoc value ent obj ss)
 (vl-load-com)
;;;  (defun *error* (msg)(princ msg)(vl-cmdf "_redrawall")(vla-EndUndoMark adoc)
;;;    (setvar "LUPREC" oldLUPREC)(setvar "DIMZIN" oldDIMZIN))
;;;  (setq oldDIMZIN (getvar "DIMZIN"))
;;;  (setq oldLUPREC (getvar "LUPREC")) 
 (setq tt 1)
 (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-StartUndoMark adoc)
;;;  (setvar "DIMZIN" 0)
;;;  (setvar "LUPREC" 2)
   (princ "\n ÒÊÄ 1 è 2")
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if (not ss)
    (princ "?? ??????? ???????")
    (progn
      (setq value 
    (apply
      (function strcat)
      (mapcar
        (function
          (lambda (a)
;;;        (vl-string-trim
          "%Uu {\\Ll}"
;;;          (vl-string-subst
;;;            "."
;;;            ","
		(strcat (cdr (assoc 1 (entget a))) " - ")
;;;            ) ;_ vl-string-subst
;;;          ) ;_ vl-string-trim
      ) ;_ lambda
          ) ;_ function
        (vl-remove-if
          (function listp)
          (mapcar (function cadr)
             (ssnamex ss)
            ) ;_ mapcar
          ) ;_ vl-remove-if
        ) ;_ mapcar
      ) ;_ apply
  ) ;_ setq
;;;      (if (vl-string-position (ascii ".00") value)
;;;  (setq value (vl-string-right-trim "." value))
;;;  ) ;_ if
      (setq value (substr value 1 (- (strlen value) 3)))
;;;      (princ  (substr value 1 5))
      ; (alert (strcat "????? = " value))
;;;      (rtos 11.293333 2 2) -> "11.29"
;;;(rtos 11.296333 2 2) -> "11.30"
      (while
  (and (not (setq  ent
       (car
         (nentsel
           (strcat "\n ïîäïèñü êàáåëÿ:")
           ) ;_ entsel
         ) ;_ car
      ) ;_ setq
      ) ;_ not
       (equal (getvar "ERRNO") 7)
       ) ;_ and
   (setvar "ERRNO" 0)
   ) ;_ while

      (if (and ent
         (vlax-property-available-p
     (setq obj (vlax-ename->vla-object ent))
     'TextString
     ) ;_ vlax-property-available-p
         ) ;_ and
  (progn
    (vlax-put-property obj 'TextString value)
    (vlax-release-object obj)
    ) ;_ progn
  ) ;_ if
      ) ;_ progn
    ) ;_ if
;;;      (setvar "DIMZIN" oldDIMZIN)
;;;      (setvar "LUPREC" oldLUPREC)
  (princ)
   ) ;_ defun
SAMik вне форума  
 
Непрочитано 25.03.2011, 04:22
2 | #417
Vova

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


Код:
[Выделить все]
 ^C^C$m=$(if,$(=,$(getvar,lwdefault),25),^C^Clwdefault;35,^C^Clwdefault;25) 
Это образец макроса, которым можно менять значение системной переменной поочередно на одно либо другое число в одной кнопке. Заодно расскажу о переменной Lwdefault. Я считаю что большинство линий, которые должны иметь "нормальную" толщину, так называемые Основныe, отрисовываются весом Default. Наш плоттер рисует такие линии красиво если их вес 35. Наши чертежи, в основном, большие, типа вашего А0, и печатаются вдоль рулона шириной 36 инчей - такова ширина чертежа. Но часто для собственных нужд приходится печатать чертеж уменьшенного размера, то есть поперек рулона. Так вот, если LWdefault=35, такой чертеж получается слишком жирным. Если-же воспользоваться галочкой Scale lineweight в диалоговом окне печати, то распечатка будет слабовата. А если выставить lwdefault в 25, то в самый раз. Вот макрос и меняет одним нажатием переменную с 35 на 25, а другим нажатиям наоборот.
В макрос можно подставить любую переменную, у которой нужно использовать поочередно два разных числовых значения
Vova вне форума  
 
Непрочитано 10.06.2011, 10:18
#418
Luna_S

arh
 
Регистрация: 16.03.2011
Moskow
Сообщений: 3


Доброго времени суток, прошу помощи в создании макроса для автокада:

сумма выделенных чисел
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z-calc-text-value;

макрос не мой и я не умею их создавать (нет понимания как это делается), могу только пользоваться и назначать кнопкам. этот макрос у меня не работает не могу понять что не так автокад стоит 2012 engl.
если в последнем выражении поставить пробелы:
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z calc text value;
то получается вообще не совсем понятная команда.
в общей сложности мне нужен макрос который считает сумму чисел, например есть экспликация помещений и есть площади помещений, площади пишутся цифрами мультитекста, выделяются нужне числа и считается общая сумма.
просто бывает нужно считать не все помещения а выборочно, а бывает все и сидеть складывать убивается оооочень много времени, которого как правило нет.

и еще вопрос есть рабочий макрос:
*^C^C_List;\;_dimordinate ;@;_Text;$m= $(Rtos,$(*,$(Getvar,area),0.000001),2,2);\
мне он очень нравиться и выдает число в нужном формате (я о запятой в нужном месте) но по умолчанию там слишком маленькая высота текста. можно ли как то дописать в этот макрос настройку на изменение высоты текста и толщину линии на которой он выноситься?
Luna_S вне форума  
 
Непрочитано 10.06.2011, 10:46
#419
AlphaGeo


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


Цитата:
Сообщение от Luna_S Посмотреть сообщение
сумма выделенных чисел
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z-calc-text-value;

макрос не мой и я не умею их создавать (нет понимания как это делается), могу только пользоваться и назначать кнопкам. этот макрос у меня не работает не могу понять что не так автокад стоит 2012 engl.
По всей видимости, это макрос не для вычисления суммы выделенных тел, а для запуска LISP-программы, которая вычисляет сумму выделенных тел. AutoCAD'у должен быть доступен файл с именем z-calc-text-value и расширением lsp, например. Я так понимаю, сама программа в посте #416? Тогда почитайте «Как использовать лисп, опубликованный на форуме».
 
 
Непрочитано 12.06.2011, 02:21
#420
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Привет, нужно создавать полилинию с уровнем Z=0, собрал команды в макрос: ^C^C_pline;\\\;_flatten;_Last;;n
Как реализовать пользовательский ввод _pline до тех пор пока не будет нажат Enter?
Sta1917 вне форума  
Ответ
Вернуться   Форум 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