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

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

помогите с написанием макроса

Ответ
Поиск в этой теме
Непрочитано 11.12.2011, 17:01 #1
помогите с написанием макроса
Anton 126
 
Регистрация: 09.12.2011
Сообщений: 5

Здравствуйте! У меня проблема с написанием макроса. Установлен Autocad 2008 RUS на Windows XP. Прочитал статью "Примеры создания своих команд." авт. Владимир Свет. Хочу чтобы при вводе команды "Многострочный текст" сам текст прописывался в определенном слое.

Пишу так: ^C^C_mtext;\_Change;_Last;;_P;_La;Текст;;

Перепробовал кучу вариантов и с пробелом и с нижним подчеркиванием и ..... вобщем не работает. Видимо не дано мне стать програмистом. Может поможет кто исправить что не так?
Просмотров: 8134
 
Непрочитано 11.12.2011, 19:29
#2
viewpoint


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


Вы просто пропустили "\ " - после mtext; идёт два "\\"!

Вот так...

^C^C_mtext;\\_Change;_Last;;_P;_La;Текст;;

...всё работает.
viewpoint вне форума  
 
Автор темы   Непрочитано 11.12.2011, 23:37
#3
Anton 126


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


Спасибо огромное за помощь все летает!!! очень удобная штука, и время немножко экономит когда слоев много.

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

Как правильно дописать макрос к команде "ЗЕРКАЛО" чтобы после отзеркаливания она не спрашивала удалить
объект или нет,а чтобы сразу удаляла по умолчанию?

пишу так: ^C^C_mirror;\\_yes; но команда работает так как мне надо только если я предварительно выбрал объект а если сначала нажать на кнопку "зеркало" а потом выбрать объект или при повторе команды она работает как обычно. Что не так ?

Последний раз редактировалось Anton 126, 12.12.2011 в 00:45.
Anton 126 вне форума  
 
Непрочитано 12.12.2011, 00:44
#4
viewpoint


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


Просто, как изначально думалось, не получилось.
Вариант 1:
^C^C_mirror;\;\\_Y;
Работать с макросом так: выделить объект ОДНИМ нажатием (не рамкой), затем указать обе точки оси отзеркаливания;

Вариант 2:
^C^C_mirror;\\;\\_Y;
Работать с макросом так: выделить объект РАМКОЙ, затем указать обе точки оси отзеркаливания;

Вариант 3:
^C^C_mirror;_P;;\\_Y;
Работать с макросом так: выделяем объекты, которые нужны, ДО запуска макроса, сбрасываем ESC-ом, затем нажимаем конпку макроса, указываем обе точки оси отзеркаливания;

Вариант 4:
Выделяем все объекты, которые нужны, на одном из объектов выделяем требуемую точку, кликаем правой кнопкой мыши, в контекстном меню выбираем отзеркаливание, указываем вторую точку на оси отзеркаливания, всё готово без всяких макросов.
viewpoint вне форума  
 
Автор темы   Непрочитано 12.12.2011, 00:52
#5
Anton 126


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


Спасибо Большое за исчерпывающий ответ!!! Надо время переварить столько вариантов.
Anton 126 вне форума  
 
Непрочитано 12.12.2011, 01:06
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Еще вариант
Код:
[Выделить все]
^C^C(command "_mirror" (ssget) "" pause pause "Yes");
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 12.12.2011, 13:42
#7
Anton 126


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


Все проверил. Макрос : ^C^C(command "_mirror" (ssget) "" pause pause "Yes"); работает как обыкновенное"зеркало"

Спасибо to viewpoint но не один из перечисленных вариантов не работает при "повторить последнюю команду"(у меня правая кнопка мыши). Мой макрос: ^C^C_mirror;\\_yes; работает правильно из контекстного меню (я всегда пользуюсь зеркалом только из контекстного меню)также можно выбирать объект и рамкой и одним нажатием,проблема возникает при "повторить команду".
Anton 126 вне форума  
 
Непрочитано 12.12.2011, 14:08
#8
viewpoint


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


Естественно, что "повторить последнюю команду" не срабатывает. Логика тут такая. Макрос Вы создаёте на КНОПКУ, и работает он только с кнопки! При повторе срабатывает команда "_mirror" так, как она прописана в Autocad-е изначально.
Первый путь решения проблемы: можно зациклить макрос - добавив звездочку перед макросом "*";
Второй путь: создать lisp-функцию, как написал её Олег (jr.). Обозвать её, допустим, "mi", прописать в автозагрузке. И можно будет вызывать её и с клавиатуры, и с кнопки, и повтор будет работать однозначно.
viewpoint вне форума  
 
Автор темы   Непрочитано 12.12.2011, 15:55
#9
Anton 126


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


Все понял спасибо за помощь.
Anton 126 вне форума  
 
Непрочитано 21.02.2017, 14:58
#10
barabaka


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


Подыму старую тему. Как должен выглядеть макрос, в котором бы было забито готовое содержимое текста? Такое возможно?
barabaka вне форума  
 
Непрочитано 21.02.2017, 15:36
#11
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от barabaka Посмотреть сообщение
Как должен выглядеть макрос, в котором бы было забито готовое содержимое текста?
Не совсем понятен вопрос. Что именно должен делать этот макрос? Вставлять в выбранный текстовый объект заранее заготовленный текст? Должен ли работать в LT? Нужна ли защита от ошибок?
Если я правильно понял и особых требований нет, то можно попробовать
Код:
[Выделить все]
^C^C(vla-put-TextString (vlax-ename->vla-object (car (nentsel "здесь был Вася:"))) "здесь был Вася")
Offtop: и вообще, обычно забивают гвозди, сваи,...косяки в крайнем случае...но текст
kp+ вне форума  
 
Непрочитано 21.02.2017, 15:48
#12
barabaka


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


Должен создаватся новый текстовый примитив с заданым содержимым. Особых требований нет)
barabaka вне форума  
 
Непрочитано 21.02.2017, 15:50
#13
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от barabaka Посмотреть сообщение
Должен создаватся новый текстовый примитив с заданым содержимым. Особых требований нет
Хотя бы просто Текст или Мтекст? и где? В точке под курсором?
kp+ вне форума  
 
Непрочитано 21.02.2017, 15:55
#14
barabaka


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


^C^C_mtext;\\;Здесь был Вася
Вот по такому подобию. Как сделать так, что б после указания точек для мтекста не зависала команда на вводе текста, а вставлялся текст и команда закрывалась
barabaka вне форума  
 
Непрочитано 21.02.2017, 18:04
#15
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Код:
[Выделить все]
 (defun c:zbv (/)
(vla-addmtext
         (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object))))
           (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))))
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object)))
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
         (vlax-3d-point (getpoint "здесь был Вася:"))
         0
         "здесь был Вася"
)
)
Вот. Без претензий, как говорится Часть кода взята отсюда:http://forum.dwg.ru/showthread.php?t=134927 В LT работать не будет
Команду ZBV (сокращенно от "здесь был Вася") повесить на кнопку обычным образом. Как использовать код на ЛИСПЕ - см. FAQ.

Добавлено
Решил вспомнить старое и попробовать написать именно макрос. Такой
Код:
[Выделить все]
^C^C_-mtext;\\"Здесь был Вася";;
работает

Последний раз редактировалось kp+, 21.02.2017 в 18:16.
kp+ вне форума  
 
Непрочитано 21.02.2017, 19:15
#16
barabaka


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



Как раз именно макрос и интересовал))) Я, когда макрос писал, не подавлял диалоговые окна.....

Последний раз редактировалось barabaka, 21.02.2017 в 22:10.
barabaka вне форума  
 
Непрочитано 23.02.2017, 12:33
#17
dmytro8136


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


Помогите написать макрос, "поиск текста по содержимому!"
dmytro8136 вне форума  
 
Непрочитано 23.02.2017, 13:22
#18
Profan


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


А чем команда "_FIND" ("НАЙТИ") не устраивает?
Profan вне форума  
 
Непрочитано 23.02.2017, 13:28
#19
dmytro8136


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


по ошибке она может заменить найденный текст.
dmytro8136 вне форума  
 
Непрочитано 23.02.2017, 14:02
#20
Profan


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


Слабый аргумент. Есть команда "_UNDO" ("ОТМЕНИТЬ").
А по ошибке можно вообще сделать "FORMAT C:".
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > помогите с написанием макроса

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пожалуйста помогите сделать спецификацию, есть чертеж с позициями но я не знаю всех обозначений, а после завтра защита диплома, если можете помогите! саняяя Машиностроение 19 22.06.2011 19:22
Помогите с написанием програмки по автоматическому созданию слоёв Андрей Будзинский Программирование 22 30.09.2010 07:09
Помогите найти чертежи православных храмов leonbka Поиск литературы, чертежей, моделей и прочих материалов 5 12.03.2010 11:31
Помогите подобрать сечение балки и собрать нагрузку. _Oleg_ Конструкции зданий и сооружений 16 08.02.2010 17:06
Помогите написать два простых макроса для Excel, PLS kp+ Программирование 5 09.06.2007 18:48