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

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

Макрос для объединения отрезков в полилинию

Ответ
Поиск в этой теме
Непрочитано 25.06.2008, 12:49 #1
Макрос для объединения отрезков в полилинию
Mazai
 
Москва
Регистрация: 04.04.2008
Сообщений: 97

Здраствуйте!
У меня русский автокад 2008. Мучаюсь - не могу написать правильно макрос для объединения группы отрезков начерченых друг за другом цепочкой.
Если делать всё в ручную, то последовательность моих действий такая:

- Командой "ПОЛРЕД" вызываю функцию редактирования полилиний;
- Выбираю опцию "Несколько" - для выбора всей группы отрезков;
- Выбираю опцию "Добавить"
- Соглашаюсь с предлагаемым значением допуска 0.0000

Предусмотрел даже тот момент, что бы не было лишнего диалога об уточнении - нужно ли преобразовывать выбранные отрезки в полилинии (peditaccept 1 -> автоматически разрешить это преобразование).
В результате у меня получился такой макрос:
Код:
[Выделить все]
^C^Cpeditaccept;1;полред;Несколько;\Добавить;
Но он своей задуманной функции не выполняет. При его запуске он останавливаеться на выборе опции "Добавить", самостоятельно эта опция не выбирается - почему? Подскажите что не так?

P.S.: Если можно, то приведите правильный вариант и для английской версии. Так как у меня русская - я не знаю английских аналогов выбираемых опций.
Просмотров: 9462
 
Непрочитано 25.06.2008, 12:54
#2
Кулик Алексей aka kpblc
Moderator

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


http://www.google.ru/search?q=site:d...L_ruRU250RU250 - там ничего не мелькало?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.06.2008, 13:15
#3
VVA

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


http://www.google.ru/search?aq=f&com...1%81%D0%BA&lr=
А еще в гугле ввел название темы. Второя ссылка сверху (1-я этот топик)
http://dwg.ru/f/showthread.php?t=1782
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.06.2008, 13:15
#4
Profan


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


Попробуй такой макрос:
Код:
[Выделить все]
 
^C^Cpeditaccept;1;Выбрать;\Полред;Несколько;Текущий;;Добавить;;;
На английском
Код:
[Выделить все]
 
^C^Cpeditaccept;1;_Select;\_Pedit;_Multiple;_Previous;;_Join;;;
Profan вне форума  
 
Автор темы   Непрочитано 25.06.2008, 13:16
#5
Mazai


 
Регистрация: 04.04.2008
Москва
Сообщений: 97


Извените, всё нашёл!!!
Раз уж я создал эту тему, то выложу и ответ на поставленный вопрос.

Вот рабочий макрос:
Код:
[Выделить все]
^C^C(defun C:JPL ( / ope ssnab )(setq ope (getvar "PEDITACCEPT"))(setvar "PEDITACCEPT" 1)(setq ssnab (ssget "_I"))(while (not ssnab)(setq ssnab (ssget)))(command "_pedit" "_Multiple" ssnab "" "_Join" 0 "")(setvar "PEDITACCEPT" ope)(setq ssnab nil)(princ));JPL;
(с) VVA

или так:
Код:
[Выделить все]
^C^C^P(defun c:polyjoin () (ssget)(vl-cmdf "_pedit" "_m" "_p" "" "_y" "_j" "" "")(princ));polyjoin;
(с) Кочетков Андрей
Mazai вне форума  
 
Непрочитано 25.06.2008, 13:21
#6
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Пожалуй добавлю в свою тему Мои макрокоманды если никто не против
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 25.06.2008, 13:42
1 | #7
Profan


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


Можно в моем макросе вернуть значение переменной peditaccept в начальное значение и он примет такой вид:
Код:
[Выделить все]
 
^C^Cpeditaccept;1;_Select;\_Pedit;_Multiple;_Previous;;_Join;;;_peditaccept;0
Без AutoLisp'а.
Или совсем коротенько:
^C^Cpeditaccept;1;_Select;\_Pedit;_M;_P;;_J;;;_peditaccept;0
Profan вне форума  
 
Непрочитано 25.06.2008, 14:36
#8
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Profan, в последнем макросе пробел лишний вкрался
Dym вне форума  
 
Непрочитано 25.06.2008, 14:47
#9
Profan


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


Я это заметил, но когда захотел отредактировать текст, то оказалось, в окне редактирования этого пробела нет. Вот вставленный оттуда текст:
Код:
[Выделить все]
 
^C^Cpeditaccept;1;_Select;\_Pedit;_M;_P;;_J;;;_peditaccept;0
Profan вне форума  
 
Автор темы   Непрочитано 26.06.2008, 15:01
#10
Mazai


 
Регистрация: 04.04.2008
Москва
Сообщений: 97


А как можно подавить ещё одно окошко, которое всплывает только тогда, когда я пытаюсь объеденить много отрезков у которых различные цвета.
Скрин предупреждения во вложении.
Миниатюры
Нажмите на изображение для увеличения
Название: Alert.jpg
Просмотров: 172
Размер:	25.7 Кб
ID:	7948  
Mazai вне форума  
 
Непрочитано 31.08.2010, 11:32
#11
Redya


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


Код:
[Выделить все]
^C^C_pedit;_m;\;_j;;;
Что не правильно в этом коде не могу понять? Хочеться выделить линии, нажать enter и образовалась полилиния.
Redya вне форума  
 
Непрочитано 31.08.2010, 13:57
1 | #12
Profan


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


Макрос может выглядеть так:
Код:
[Выделить все]
^C^C_select;_pedit;_m;_p;;_j;;;
Profan вне форума  
 
Непрочитано 31.08.2010, 14:22
#13
Redya


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


Цитата:
Макрос может выглядеть так:
Код:
^C^C_select;_pedit;_m;_p;;_j;;;
Profan, да, я это уже уяснил из поста. Именно заинтересовало сделать без _select. Это же возможно?
Redya вне форума  
 
Непрочитано 31.08.2010, 17:29
1 | #14
Profan


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


А ты попробуй вручную выделить объекты и запустить команду _pedit. Увидишь, что выделение снимается.
А чем тебе _select не нравится?
Profan вне форума  
 
Непрочитано 31.08.2010, 17:46
#15
Redya


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


Да, если сначала выделить объекты, а потом ввести _pedit, то выделение снимется. Но у меня же в макросе сначала _pedit вводится, а потом я ставлю \ (ручной ввод), но что-то не так. Чем не нравится _select? Да всем нравится, только без него не понимаю почему не получается, вот и спрашиваю.
Redya вне форума  
 
Непрочитано 31.08.2010, 17:52
1 | #16
Profan


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


В сообщении 11 ты же написал, что сначала хочешь выделить линии, а теперь на попятную?
Одная косая \ в макросе меню предполагает одиночное указание (выбор). И только в команде _select одна косая допускает множественный выбор объектов.
Profan вне форума  
 
Непрочитано 31.08.2010, 18:06
#17
Redya


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


Цитата:
В сообщении 11 ты же написал, что сначала хочешь выделить линии, а теперь на попятную?
Да это я так написал просто.Для меня не принципиально что делать сначала - выбирать или вызывать команду.
Цитата:
И только в команде _select одна косая допускает множественный выбор объектов.
Спасибо, не знал. Значит всё таки без _select никак получается. Profan, спасибо!
Redya вне форума  
 
Непрочитано 01.09.2010, 16:51
#18
Сидор Лютый

Инженер кадастровый
 
Регистрация: 27.04.2010
Москва
Сообщений: 28


Цитата:
Значит всё таки без _select никак получается
С предварительным выделением тоже можно. Например так:
Код:
[Выделить все]
^C^C_move;^C^C_pedit;m;p;;j;;^C
Хоть логика "одевания штанов через голову", но тем не менее, работает надежно.
Сидор Лютый вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос для объединения отрезков в полилинию

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен LISP для суммы длин отрезков линни ilka_t LISP 219 10.09.2019 10:22
Мониторы LCD CRT Разное 94 17.06.2008 10:51
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
координаты Excel->_line x,y x,y для Acad. нужен макрос на VictorSM Программирование 9 22.01.2006 18:41
Пишу макрос для кнопки. Нужно задать ожидание ввода. boban Программирование 2 08.04.2005 21:26