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

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

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

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

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

Выкладываю 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:
Просмотров: 448770
 
Непрочитано 12.02.2014, 03:00
#641
АлексЮстасу

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


Нерешаемая задача?
Черт с ним, с Map 3D.
Может быть так: как в макросе после лиспа типа
(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true))
от VVA или т.п. выполнить обычные консольные команды? Не встраивать действия внутрь лиспа (поскольку из него не все запускается), а записать после него? У меня такие команды воспринимаются как параметры для команд из лиспа, а не как команды, которые нужно выполнить после.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 09:21
#642
Кулик Алексей aka kpblc
Moderator

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


Попробуй нечто типа
Код:
[Выделить все]
 (defun tt (/ ent)
  (setq ent (entlast))
  (command "_.pline")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (if (/= (entlast) ent)
    (progn
      (setq ent (entlast))
      (command "_.arrayclassic")
      (while (/= (getvar "cmdactive") 0)
        (command pause)
        ) ;_ end of while
      ) ;_ end of progn
    ) ;_ end of if
  (command "_.line" pause pause)
  ) ;_ end of defun
Но я далеко не уверен, что сработает.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 15:56
#643
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй нечто типа
Спасибо! Но вопрос немного в другом.
Скрупулезно старый лисп VVA я не проверял, но в целом, допустим, он устраивает.
Вопрос не только и не столько в подходящем лиспе.
Вопрос в том, как в одном макросе после лиспа выполнить консольную команду? Или - как завершить выполнение лиспа, чтобы сработала команда послеработы лиспа?
Дописать после лиспа перед командой что-нибудь вроде ;_ end of progn?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 16:00
#644
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, консольная команда и так сработает: (command "_.-layer" "_create" и т.д. Вопрос, насколько я понял, был в обработке команды, имеющей только режим диалогового окна. Я тебе пример и показал (тот факт, что я использовал _.arrayclassic, на принцип не влияет никоим образом).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 16:34
#645
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
консольная команда и так сработает: (command "_.-layer" "_create" и т.д.
Не срабатывает - воспринимается как параметры для полилинии!
Например, после ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)) (command "_EXPLODE" "_L")
Разбивание не производится, а пишется:
Цитата:
Команда:
Команда: (progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar
"CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object
(entlast)) :vlax-true)) _pline
Начальная точка: (command "_EXPLODE" "_L")
Неверная точка.
Начальная точка:
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 16:41.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 17:00
#646
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, во-первых, у тебя не проверяется корректность срабатывания команды _.pline. Во-вторых, ты сравниваешь cmdactive с 1, а я с 0. Попробуй прогнать либо #642, либо такой:
Код:
[Выделить все]
 (defun c:tt (/ ent)
  (setq ent (entlast))
  (command "_.pline")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (if (/= (entlast) ent)
    (progn
      (setq ent (vlax-ename->vla-object (entlast)))
      (vla-put-closed ent :vlax-true)
      (command "_.explode" (entlast))
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
AutoCAD 2013 x64 обработал корректно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 17:32
#647
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
во-первых, у тебя не проверяется корректность срабатывания команды _.pline. Во-вторых, ты сравниваешь cmdactive с 1, а я с 0. Попробуй прогнать либо #642, либо такой:
Лисп цельнотянутый у VVA из старой темы.
Вопрос сейчас не только про лисп... Или в первую очередь не про сам лисп.

Вопрос про то, как в одном макросе соединить лисп и консольные команды. Не вызвать лиспом команду, не встроить в лисп команду, а выполнить в макросе сначала лисп, а потом, после, независимо от лиспа выполнить команду?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 17:43
#648
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вопрос про то, как в одном макросе соединить лисп и консольные команды.
не нужно этого делать
gomer вне форума  
 
Непрочитано 12.02.2014, 18:37
#649
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
не нужно этого делать
Почему нет?
Для меня это путь был бы самым простым.
В том числе и потому, что лиспера, разбирающегося в Map 3D здесь пока не обнаружилось, а команды Map 3D из этих лиспов не идут:
Цитата:
Не удалось вызвать команду из ADS или AutoLISP.
В идеале для меня были бы одни консольные команды - нужно делать палитру с большим числом макросов. Но Автокад с PLINE подложил сюрприз. Возможно, и другие похожие команды без лиспа не сделать.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 18:56.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 19:28
#650
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Почему нет?
Потому, что нельзя объять необъятное и не стоит делать плохо, когда можно сделать хорошо. А во=вторых, чтобы нарисовать замкнутый контур из отрезков не обязательно рисовать полилинию замыкать ее, а потом разбивать, достаточно просто нарисовать отрезки и замкнуть последний
gomer вне форума  
 
Непрочитано 12.02.2014, 19:36
#651
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Потому, что нельзя объять необъятное и не стоит делать плохо, когда можно сделать хорошо. А во=вторых, чтобы нарисовать замкнутый контур из отрезков не обязательно рисовать полилинию замыкать ее, а потом разбивать, достаточно просто нарисовать отрезки и замкнуть последний
Что необъятного и плохого в совмещении в макросе лиспа и команд? Научили бы как совместить - а расхлебывать буду сам.
Замкнутый контур, контур из отрезков, рисование полилиний, разбивание и пр. - это лишь примеры. Для простоты. Без конкретного смысла. О чем я с первого своего сообщения на эту тему писал.
Не столько прошу помощи написать мне лиспы или макросы, сколько прошу научить, как это писать, чтобы работало. В частности, как собирать макросы из готовых, допустим, лиспов и команд вертикального приложения.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 20:17.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 20:31
#652
gomer

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


просто поймите, что макросы не предназначены выполнять всю рутинную работу за вас, это делают приложения на разных языках, а макросы просто склеивают это воедино или выполняют мелкие операции, как-то ткнуть пару опций в команде или засветить пимпочку в менюшке
gomer вне форума  
 
Непрочитано 12.02.2014, 20:38
#653
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
просто поймите, что макросы не предназначены выполнять всю рутинную работу за вас, это делают приложения на разных языках, а макросы просто склеивают это воедино или выполняют мелкие операции, как-то ткнуть пару опций в команде или засветить пимпочку в менюшке
Посмотрите - ровно такую задачу и решаю: соединить, например, черчение полилинии с каким-то действием над ней. Как раз для макроса.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 23:54
#654
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Посмотрите - ровно такую задачу и решаю: соединить, например, черчение полилинии с каким-то действием над ней. Как раз для макроса.
Это можно одной командой сделать без всяких макросов, смотрите выше, хотя там половины кода нет, который нужен
gomer вне форума  
 
Непрочитано 13.02.2014, 00:46
#655
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Это можно одной командой сделать без всяких макросов, смотрите выше, хотя там половины кода нет, который нужен
"Одна команда выше" - это какая? И какой половины там нет? Про вызов команды Autocad Map 3D? С последним совершенно согласен. Только как его сделать, чтобы эти команды вызывались из лиспа?
А вне лиспа эти команды срабатывают.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 13.02.2014 в 01:59.
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 11:31
#656
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как его сделать, чтобы эти команды вызывались из лиспа?
так же как и с командами чистого автокада
gomer вне форума  
 
Непрочитано 13.02.2014, 15:21
#657
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
так же как и с командами чистого автокада
Намекните что-нибудь.
Уже раза три здесь писал, что, например, на Map 3D команду _.adeattachdata;имя_ОД;_a;_n;_l;; или (command "_.adeattachdata" "имя_ОД" "_a" "_n" "_l") пишется:
Цитата:
Не удалось вызвать команду из ADS или AutoLISP
.
Это если ее вставить в лисп VVA вместо штрихования:
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_-bhatch" "_P" "_SOLID" "_S" (entlast) "" ""))
Например, так:
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_.adeattachdata" "Apron" "_a" "_n" "_l"))
или
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)((command "_cmddia" "0")(command "_.adeattachdata" "Apron" "_a" "_n" "_l")(command "_cmddia" "1")))
то неизменно сообщают:
Цитата:
Команда: _.adeattachdata
Не удалось вызвать команду из ADS или AutoLISP.
Внутренняя ошибка.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 15:29
#658
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это если ее вставить в лисп VVA вместо штрихования:
А если из лиспа запустить, тоже не работает??
gomer вне форума  
 
Непрочитано 13.02.2014, 16:11
#659
АлексЮстасу

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


Цитата:
Сообщение от gomer Посмотреть сообщение
А если из лиспа запустить, тоже не работает??
В смысле "из лиспа"?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 16:19
#660
gomer

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


Вот такого например
Код:
[Выделить все]
 (defun c:test ()
  (setvar "CMDECHO" 1)
  (command "_pline" pause)
  (while (= 1 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)
  (command "_cmddia" "0")
  (command "_.adeattachdata" "Apron" "_a" "_n" "_l")
  (command "_cmddia" "1")
)
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