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

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

menu macros

Ответ
Поиск в этой теме
Непрочитано 10.10.2007, 07:02 #1
menu macros
Sergiy
 
Проектировщик, гидротехник
 
Киев
Регистрация: 23.03.2006
Сообщений: 59

Проблема - не сохраняется предыдущий набор после применения команд measure->block->explode
Т.е. надо разметить полилинию блоками через определенное расстояние и затем эти блоки взорвать
Просмотров: 3791
 
Непрочитано 10.10.2007, 08:41
#2
Profan


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


Набор чего? И что это такое: "menu macros"?
Profan вне форума  
 
Непрочитано 10.10.2007, 09:13 Re: menu macros
#3
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Sergiy
надо разметить полилинию блоками через определенное расстояние и затем эти блоки взорвать
Не очень понял заголовок темы, задача решается как-то так:
Код:
[Выделить все]
(defun demo (/ blocks dist ent poly)
    (if (and (setq poly (entsel)) (setq dist (getdist "\nДистанция <Выход>: ")))
        (progn (vl-cmdf "_.measure" poly "_b" "ee" "_y" dist)
               (setq ent (car poly))
               (while (setq ent (entnext ent)) (setq blocks (cons ent blocks)))
               (foreach b blocks (vl-cmdf "_.explode" b))
        )
    )
    (princ)
)

Последний раз редактировалось Alaspher, 23.10.2007 в 08:10.
Alaspher вне форума  
 
Автор темы   Непрочитано 10.10.2007, 23:55
#4
Sergiy

Проектировщик, гидротехник
 
Регистрация: 23.03.2006
Киев
Сообщений: 59


Спасибо за лисп, но для меня это сложно.
Menu Macros - это язык макрокоманд, поддерживаемый Автокадом, узнал я о нем из книги Вл. Света "AutoCAD: язык макрокоманд и создание кнопок". С помощью Menu Macros можно автоматизировать часто повторяющиеся процедуры. То есть, часто используемую последовательность команд можно назначить кнопке. В простых случаях можно обойтись без Лиспа (что меня и привлекает). Я попытался автоматизировать такую задачку: простановка пикетажа по оси линейного сооружения (например дороги), то есть надо вдоль оси через 100 метров проставить символы ПК1, ПК2, ПК3 (с риской сверху) и т.д. Для этого применяю команды: measure (блоком <ПК'> и с поворотом), explode (взрываю эти блоки - на вопрос о выборе объекта - нажимаю "р" (previous), затем - команда Express Tools - tcount (автоматическая нумерация текста) и опять "р" (previous).В ручном режиме все работает нормально, а при попытке выполнить всю цепочку с помощью Menu Macros не работает previous. Причем если заменить команду explode какой-нибудь другой, также требуещей выбор объекта, "previous" работает. То есть "explode" имеет какую-то особенность. Помогите разобраться.
Sergiy вне форума  
 
Непрочитано 11.10.2007, 08:05
#5
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


А блок используется расчленяемый?
Alaspher вне форума  
 
Автор темы   Непрочитано 11.10.2007, 10:15
#6
Sergiy

Проектировщик, гидротехник
 
Регистрация: 23.03.2006
Киев
Сообщений: 59


Блок - расчленяемый.
Привожу макрос (не полностью - до момента, где не срабатывает).
^C^C_measure;\b;piket;;100;_explode;p
Сообщения Автокада:
Command: _measure
Select object to measure:
Specify length of segment or [Block]: b
Enter name of block to insert: piket
Align block with object? [Yes/No] <Y>:
Specify length of segment: 100
Command: _explode
Select object: p
*Invalid selection*
Expects a point or Last/ALL/Group
Select object:
[ATTACH]1192083282.dwg[/ATTACH]
Sergiy вне форума  
 
Непрочитано 12.10.2007, 09:09
#7
Profan


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


Для Sergiy.
Вот какой макрос вам нужен:
Код:
[Выделить все]
^C^C_measure;\_b;piket;;100;_xplode;_p;;;;
Profan вне форума  
 
Непрочитано 12.10.2007, 09:18
#8
vic153

проектировщик газопроводов
 
Регистрация: 04.08.2005
Петербург
Сообщений: 327


to Sergiy
Тебе же ACAD сам написал, что ожидает или ввод точки или команды Last, All, Group
т.е. макрос будет
Код:
[Выделить все]
^C^C_measure;\_b;piket;;100;_xplode;_last
vic153 вне форума  
 
Непрочитано 12.10.2007, 09:23
#9
Profan


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


Для vic153.
LAST - последний отрисованный объект (в данном случае блок). Именно он один и расчленится, а все остальные - нет.
Макрос вы неправильно написали. У Sergiy использовалась команда "_EXPLODE" ("РАСЧЛЕНИТЬ"), а не "_XPLODE" ("ВЗОРВАТЬ").
Это в моем макросе используется "_xplode".
ГАВ.
Profan вне форума  
 
Автор темы   Непрочитано 21.10.2007, 09:44
#10
Sergiy

Проектировщик, гидротехник
 
Регистрация: 23.03.2006
Киев
Сообщений: 59


Извините за молчание - не было доступа к интернету.
Для Profan: xplode я опробовал раньше - работает, но проблема в том, что для дальнейшей обработки мне также нужен предыдущий набор "р", а он в командном режиме почему-то не сохранется, а в ручном - все нормально.
Хотелось бы услышать мнение Vova по этому вопросу.
Sergiy вне форума  
 
Непрочитано 22.10.2007, 09:28
#11
Profan


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


Ну, так воспользуйтесь Лиспом.
Profan вне форума  
 
Непрочитано 23.10.2007, 05:52
#12
Vova

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


Цитата:
Сообщение от Sergiy Посмотреть сообщение
Хотелось бы услышать мнение Vova по этому вопросу.
Я прошу прощения за ответ не по-существу. Макросы имеют существенный недостаток по сравнению с лиспом, и не только по своим программистским возможностям. Тот, кто пишет лиспы, обычно всегда в форме, так как пишет их по любому поводу и любому заказчику. Несложные лиспы пишутся почти на коленках. Что касается макросов, у меня неплохая практика была, когда я начинал. Но даже тогда макрос на коленках написать не смог-бы. Почти после каждого введенного значка надо проверять, работает-ли. Теперь, каждый раз когда на форуме просят проверить работу макроса, приходится вникать и вспоминать, открывать известную книгу и находить аналоги. Я обычно делаю это с удовольствием, так как это помогает кое-как поддерживать форму. Но сейчас катастрофически нет времени. Работаю по 10 часов, и почти каждые выходные, так прижало. На форуме только на реплики хватает. Если твоя проблема не рассасется сама, постараюсь вернуться к ней позже.
ЗЫ. Макрос copy-rotate (работу которого однажды увидел) я разгадывал 3 месяца. Еду в метро, и тупо смотру на записи, пытаясь понять секрет. Зато какая радость, когда просветление наступило! А теперь каждый может прочитать в книжке
Vova вне форума  
 
Непрочитано 23.10.2007, 06:02
#13
Profan


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


Vova, когда я осознал это прием, я прямо таки восхитился.
Profan вне форума  
 
Непрочитано 23.10.2007, 14:27
#14
Diman111

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


А что за книжки по макросам акада? - не встречал
Diman111 вне форума  
 
Непрочитано 23.10.2007, 14:31
#15
Кулик Алексей aka kpblc
Moderator

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


В.Свет "AutoCAD Язык макрокоманд и создание макросов" BHV С.-Петербург, 2004.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > menu macros