Тема: конвертирование нескольких линий в полилинию.Как?

конвертирование нескольких линий в  одну полилинию.Как это сделать в autocad 2004?

Re: конвертирование нескольких линий в полилинию.Как?

_pedit _m и дальше по опциям ком.строки.

Re: конвертирование нескольких линий в полилинию.Как?

pedit я уже вбивал , но образуются несколько
отрезков , а мне нужна одна полилиния  параметр close уже тыкал - не помогает

Re: конвертирование нескольких линий в полилинию.Как?

Надо не _close, а _join, и если начало и конец отрезков не совпадает, то задать еще и fuzz distance

Re: конвертирование нескольких линий в полилинию.Как?

спасибо

Re: конвертирование нескольких линий в полилинию.Как?

Если эти "отрезки" полилиний заКЛОУЗены уже, то ДОБАВЛЕНИЕ не проидет

Re: конвертирование нескольких линий в полилинию.Как?

Главное здесь, ТОЧНОЕ! совпадение начала следущего отрезка с концом предыдущего. Ни персечения, ни недоводы недопускаются. Возможно нужно пройтись по всей будущей полилинии, и сделать сопряжения с нулевым радиусом.

Re: конвертирование нескольких линий в полилинию.Как?

> T-Yoke
смотрите внимательней пост VVA, а то наверняка мучаетесь;)

Re: конвертирование нескольких линий в полилинию.Как?

Несколько дней мучаюсь не получается. Как это все действо запихать в одно нажатие?
Создаю новую команду: line2pline
В Macros-е пишу: ^C^Cpedit;m;\;y;j;;;
2006 дает выбрать только одну линию а затем конвертит ее в полилинию, и все бы хорошо да мне надо несколько линий и чтобы в конце он их всех соеденил (join). Не подскажите как это сделать?

Re: конвертирование нескольких линий в полилинию.Как?

> Alexei
Каким образом вы создаете новую команду?

Re: конвертирование нескольких линий в полилинию.Как?

Правым щелчком по любой панели ->
-> Customize ...
-> New (в Command List)

Re: конвертирование нескольких линий в полилинию.Как?

> Alexei
Где-то уже обсуждался этот вопрос. Там предлагался макрос на кнопку. Поставил себе и пользуюсь. Работает хорошо. Последнии 10.00 растояние между концами отрезков которые могут объеденяться.
^C^C(progn(setq ssnab (ssget "_I"))(while (not ssnab)(setq ssnab (ssget)))(command "_pedit" "_Multiple" ssnab "" "_Y" "_Join" 10.00 ""));

Re: конвертирование нескольких линий в полилинию.Как?

> Alexei
Выше преведённый макрос из этой темы. В ней есть и автор этого макроса.
https://www.caduser.ru/forum/topic28751.html

Re: конвертирование нескольких линий в полилинию.Как?

Отлично! Спасибо огромное, а за 10 между отрезками дополнительное. Я тут тоже кое что сотворил, по проще - зато работает:
^C^Cselect \pedit;m;p;;y;j;;;

Re: конвертирование нескольких линий в полилинию.Как?

> Valery Brelovsky
Ииех, жалко, что тема не лисповская:)

Re: конвертирование нескольких линий в полилинию.Как?

> kpblc
Добрый день. А что мешает. Если есть что интересное можно поговорить и в лисповской теме.

> Alexei
Я не силён в лиспе нужно время, а у меня его нет. Надо заниматься проектированием. Потому использую готовые. Брал чужие чертежи, но там не всгда объеденены элементы в одну линию и концы не всегда совпадают потому принял до 10.00

Re: конвертирование нескольких линий в полилинию.Как?

> Valery Brelovsky
Ну не знаю насколько это интересно, но, в общем-то, тут дело в ограничениях ACAD'a. В процессе непрерывного редактирования одного файла может быть создано до 128 (кажется, именно столько) наборов. Они не всегда обнуляются автоматом. Поэтому я б вместо

^C^C(progn(setq ssnab (ssget "_I"))(while (not ssnab)(setq ssnab (ssget)))(command "_pedit" "_Multiple" ssnab "" "_Y" "_Join" 10.00 ""));

использовал бы нечто типа (для 2005, в более ранних версиях ничего сказать не могу, по-моему, там этой переменной не было):

^C^C(defun c:mypljoin( / selset _pedit) (if (setq selset (ssget "_:L" '((0 . "ARC,*LINE")))) (progn (setq _pedit (getvar "PEDITACCEPT")) (setvar "PEDITACCEPT" 1) (command "_.pedit" "_m" selset "_j" 10.) (setvar "PEDITACCEPT" _pedit))));mypljoin;

В таком варианте и дополнительный анализ набора делать не надо, и собственно переполнения наборов не произойдет.

Re: конвертирование нескольких линий в полилинию.Как?

Новые команды для работы с полилинией.
Панели, лисп и инструкции здесь http://dwg.ru/dnl/607

Re: конвертирование нескольких линий в полилинию.Как?

kpblc пишет:

В таком варианте и дополнительный анализ набора делать не надо, и собственно переполнения наборов не произойдет.

Тут если можно по подробнее. В первом варианте я выбирал рамкой и всё что могло объеденялось. Если конечно были сомнения по растояниям, то делал в два этапа.
Немного не понятен дополнительный анализ
И переполнение наборов не произойдёт.

Re: конвертирование нескольких линий в полилинию.Как?

Если системная переменная peditaccept установлена в 0 (по умолчанию), то запрос "превращать ли в полилинии?" будет только в том случае, если в выборе есть хотя бы один примитив, не являющийся полилинией. А если все примитивы - полилинии, то такого запроса выдано не будет. То есть перед вызовом _pedit надо узнать, какое значение сист.переменной; проверить набор на предмет "а запрос будет или нет?" и после этого сформировать собственно команду
_pedit _m selset _y _j 10 (для варианта с "неполилиниями" в наборе) либо
_pedit _m selset _j 10 (для варианта "в наборе только полилинии")
peditaccept устанавливаем в 1 и запрос не выдается в любом случае.
Теперь о "переполнении". Все, что ниже - сплошь ИМХО, возможно, меня просто пару раз хорошо напугали, вот и избегаю того пугала всеми правдами и неправдами :) Подробными исследованиями я не занимался.
Выполнили макрос раз. ssnab получил значение набора. И не обнулился. Сделали два. На ту же переменную записывается новый набор (а старый, как я понимаю, не удаляется). После 128-го запуска сформировать сам набор будет уже невозможно. То есть работу кода предсказать будет невозможно. Сам я с таким не сталкивался (правда, наборы у меня всегда локальные, так что они обнуляются при выходе из функции).

Re: конвертирование нескольких линий в полилинию.Как?

> kpblc
В первом варианте запроса на переводить или не переводить линию в полилинию не было.
Но в какойто момент команда перставала работать, хотя видимых причин для этого не было.
При обычной работе редактироваия линии объеденялись, а по этому макросу нет. Возможно это наступало в момент переполнения. Это надо опробывать и осмыслить.
Сответственно опробую и твой макрос.
Результат сообщу. У меня в этом вопросе много работы, но завтра.

Re: конвертирование нескольких линий в полилинию.Как?

> Valery Brelovsky
В той ссылке, что ты привел чуть ниже я написал

Макрос не будет работать, если PEDITACCEPT установлена в 1.

95%, что макрос перестал работать из-за этой переменной.

Re: конвертирование нескольких линий в полилинию.Как?

> VVA
Это пояснение было ко второму, короткому, макросу. А я пользовался первым. И он работает, но почемуто иногда перестаёт потом работоспособность снова возвращается. Учитавая Ваши и kpblc пояснения я понаблюдаю и проверю установки.

Re: конвертирование нескольких линий в полилинию.Как?

^C^Cselect \pedit;m;p;;y;j;10;;
Конвертирует линию в полилинию
Объединяет линии в полилинию (с промежутками в 10)
Объединяет линии с полилинями (с промежутками в 10)
Полилинии не объединяет

Re: конвертирование нескольких линий в полилинию.Как?

> kpblc
Я может что то не так делаю.
Вот протокол.
Command: (defun c:mypljoin( / selset _pedit) (if (setq selset (ssget "_:L" '((0
. "ARC,*LINE")))) (progn (setq _pedit (getvar "PEDITACCEPT")) (setvar
"PEDITACCEPT" 1) (command "_.pedit" "_m" selset "_j" 10.0) (setvar
"PEDITACCEPT" _pedit))))
C:MYPLJOIN
Command: mypljoin
Select objects: 1 found
Select objects: 1 found, 2 total
Select objects: 1 found, 3 total
Select objects:
_.pedit Select polyline or [Multiple]: _m
Select objects:   3 found
Select objects: _j
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group
; error: Function cancelled
Обекты обычные линии.
После ENTER
Снова предлагается выбрать объекты.