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

Вернуться   Форум 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:
Просмотров: 452704
 
Непрочитано 09.04.2010, 22:00
#301
Кулик Алексей aka kpblc
Moderator

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


Без глубинного разбора, поэтому на гарантированную работу не претендую. Может, попробовать так?
Код:
[Выделить все]
(vl-load-com)
(vlax-add-cmd
  "Dimfl"
  (defun dim_filter ( / ss)
    (setq ss (ssget '((0 . "DIMENSION"))))
    (sssetfirst ss ss)
    ss
  ) ;_ end of defun
  "Dimfl"
  1
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2010, 10:59
#302
victor.m4


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


Спасибо, но опять нет. Во всех случаях результат аналогичный первому варианту из поста 299.

Ладно, Бог с ним. Буду как и работал: через 'фильтр.
victor.m4 вне форума  
 
Непрочитано 10.04.2010, 11:35
#303
Do$

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


Печально, но дело обстоит так - "обернутая" во vlax-add-cmd функция перестает возвращать результат, "подсвеченный" выбор объектов сбрасывается после завершения работы "прозрачной" команды (правда, он сохраняется в качестве последнего сформированного набора - но толку от этого немного).
Какой смысл тогда в созданных таким образом "прозрачных" командах
Do$ вне форума  
 
Непрочитано 19.04.2010, 16:39
#304
acyxou


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


Приветствую всех! Помогите кто может, пожалуйста...
Сделал макросы на создание аннотативных размеров такого вида:
Код:
[Выделить все]
^C^C_dimlinear^C^C_-dimstyle;_an;_y;AMC;_y;^C^C_dimlinear
Все работает отлично с DIMLINEAR и DIMALIGNED.
Хотел по образцу проделать то же самое и с DIMANGULAR, DIMRADIUS и DIMDIAMETER:
Код:
[Выделить все]
^C^C_dimlinear^C^C_-dimstyle;_an;_y;AMC$2;_y;^C^C_dimlinear
но не тут-то было! Имеющийся символ $ воспринимается как diesel выражение и как результат макрос идет не по запланированному сценарию... Пробовал и таким образом:
Код:
[Выделить все]
^C^C_dimangular^C^C(command "-dimstyle" "_AN" "" "AMC$2" "_Y")^C^C_dimangular
тоже результат не тот...
Есть ли какой способ решить эту проблему? Тут главное чтобы стиль создавался в файле в котором этого стиля еще нет....
acyxou вне форума  
 
Непрочитано 19.04.2010, 18:23
#305
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


acyxou,
попробуй в макросе заменить
"AMC$2" на (strcat "AMC" (chr 36) "2")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.04.2010, 19:27
#306
acyxou


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


VVA, спасибо! Ваш вариант работает...
Но результат все равно не получен. Ну не хочет акад создавать точно такой же размерный стиль какой был загнан в Tool Palettes. Придется отказаться от этого варианта...
acyxou вне форума  
 
Непрочитано 10.08.2010, 14:24
#307
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Подскажите, как написать макрос для открытия проводника с заданной открытой папкой?

Думаю, должно быть примерно так:
Код:
[Выделить все]
^P^C^C(startapp "Explorer /e, C:\Games")(princ)
/e - Данная команда позволяет запустить проводник с использованием вида по умолчанию.

Проблема в обратной косой черте '\' в строке пути. Ее лисп воспринимает как управляющую команду.

Пробовал \\, /, //.

Добавлено: в чате Makswell и Meknotek подсказали:
получилось так:
Код:
[Выделить все]
^P^C^C(startapp (strcat "Explorer /e, C:" (chr 92) "Games"))(princ)

Последний раз редактировалось Vildar, 10.08.2010 в 15:16. Причина: исправил код
Vildar вне форума  
 
Непрочитано 10.08.2010, 15:45
#308
Do$

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


Или так:
Код:
[Выделить все]
^P^C^C(startapp "Explorer /e, C:\\Games")(princ)
Пардон, в макросе действительно такая конструкция не работает, а из командной строки - работает.

Последний раз редактировалось Do$, 10.08.2010 в 15:51.
Do$ вне форума  
 
Непрочитано 10.08.2010, 15:55
#309
Кулик Алексей aka kpblc
Moderator

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


А если так:
Код:
[Выделить все]
(command "_shell" "explorer /e, \"c:\\program files\"")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 16:15
#310
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если так:
Код:
[Выделить все]
(command "_shell" "explorer /e, \"c:\\program files\"")
Это вопрос? Нет, так не получается.
Vildar вне форума  
 
Непрочитано 10.08.2010, 16:23
#311
Кулик Алексей aka kpblc
Moderator

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


Нда... Привычка к лиспу делает свое черное дело
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 17:24
#312
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Нда... Привычка к лиспу делает свое черное дело
Так, как правильно-то?
Vildar вне форума  
 
Непрочитано 10.08.2010, 18:51
#313
Кулик Алексей aka kpblc
Moderator

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


Я бы вообще сделал отдельный лисп типа:
Код:
[Выделить все]
(defun explorer(path)
  (if (vl-filename-directory-p path)
    (command "_shell" (strcat "explorer /e, \"" (vl-string-trim "\"" path) "\""))
	(alert "Path not found")
    )
  )
А в макросе писал:
Код:
[Выделить все]
^C^C(explorer "c:\\games")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 20:37
#314
Vova

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


^P^C^C(startapp "explorer.exe" (strcat "/n,/e," (getvar "dwgprefix")))(princ)
Vova вне форума  
 
Непрочитано 11.08.2010, 01:20
#315
gomer

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


А как с помощю getenv найти папку мои документы? И другие системные папки?
gomer вне форума  
 
Непрочитано 11.08.2010, 08:14
2 | #316
Кулик Алексей aka kpblc
Moderator

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


Нажми Ctrl + R, набери cmd. В окошке набери set и нажми Enter. Все переменные машины, до которых ты можешь добраться через getenv, будут перечислены
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 12:27
#317
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Подскажите пожалйста....
Пока что учусь создавать макрокомманды начал читать книгу Язык макрокомманд и создание кнопок.... дошёл до функций с калькулятором встал просто вопрос как с помощью макрокоманды просто начертить линию между двумя линиями с помощью привязок Nea (ближайшая).
Последовательность действий должна быть такая
1.Вызывается команда _line
Enter
2.'_Cal
Enter
3.p1=nea
Enter и указывается первая линия
4.'_cal
Enter
5.p2=nea и указывается вторая линия
Enter
Всё линия построена.
Теперь всё записываю в макрос
^C^C_line;'_cal;p1=nea;'_cal;p2=nea

Но при выборе второй линии квадратик привязки не появляется?((( что может быть?

P.S. Получилось вот таким образом ...
Код HTML:
^C^C_cal;p1=nea;\;p2=nea;\;^C^C_line;'_cal;p1;'_cal;p2;
но почему то в конце запрашивает следующую точку как сделать чтобы команда завершалась... если ставить в конце ^C^C то не срабатывает. Может можно этот код как то оптимизировать?

Последний раз редактировалось МихМих, 13.08.2010 в 13:11.
МихМих вне форума  
 
Непрочитано 13.08.2010, 13:18
#318
Кулик Алексей aka kpblc
Moderator

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


ИМХО:
Код:
[Выделить все]
^C^C_cal;p1=_nea;\;p2=_nea;\;^C^C_line;_none;!p1;_none;!p2;;
P.S. Не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 13:20
#319
AlphaGeo


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


Цитата:
Сообщение от МихМих Посмотреть сообщение
почему то в конце запрашивает следующую точку как сделать чтобы команда завершалась... если ставить в конце ^C^C то не срабатывает.
А команда _LINE как в AutoCAD'e работает? Она ведь всегда после указания начала и конца отрезка предлагает рисовать следующий отрезок с началом в конце предыдущего. Вот и здесь так. Просто добавь в конце второй «энтер», т.е. еще одну точку с запятой поставь.
 
 
Непрочитано 13.08.2010, 13:30
#320
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
А команда _LINE как в AutoCAD'e работает? Она ведь всегда после указания начала и конца отрезка предлагает рисовать следующий отрезок с началом в конце предыдущего. Вот и здесь так. Просто добавь в конце второй «энтер», т.е. еще одну точку с запятой поставь.
Не прокатывает) пробовал уже

Цитата:
ИМХО:
Код:

^C^C_cal;p1=_nea;\;p2=_nea;\;^C^C_line;_none;!p1;_none;!p2;;

P.S. Не проверял.
Спасибо большое... то что нужно!!))

Попробовал и без _none работает...... для чего оно может понадобиться?

Последний раз редактировалось МихМих, 13.08.2010 в 13:39.
МихМих вне форума  
Ответ
Вернуться   Форум 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