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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Соединение линии разорванных командой BREAKE

Соединение линии разорванных командой BREAKE

Ответ
Поиск в этой теме
Непрочитано 12.03.2005, 12:12 #1
Соединение линии разорванных командой BREAKE
DDlis
 
Регистрация: 03.02.2005
Сообщений: 583

Эта програмка соединяет только линии, падскажите пожалуйста, как сделать так чтобы она соединяла и полилинии тоже.


(defun Get_Line( / OBJ )
(while (not OBJ)
(setq OBJ(car(entsel "\nSelect Line")))
(if (/= (cdr(assoc 0(entget OBJ))) "LINE")
(progn (prompt "\nEntity selected was not a line. Try again")
(setq OBJ nil)
)
OBJ
)
)
)
(defun Newerr()
(setvar "cmdecho" CE)
(setvar "osmode" UOS)
(setvar "orthomode" UORTH)
(setq *error* olderr )
(command ".redraw")
(princ)
)


(defun c:Heal( / ENT1 ENT2 NLINE 1PT10 2PT10 OLD10
1PT11 2PT11 OLD11 DIST1 DIST2 DIST3 DIST4
DSTLST MAXDST PT1 PT10 PT11)
(setq olderr *error*
*error* Newerr
CE(getvar "cmdecho")
UOS(getvar "osmode")
UORTH(getvar "orthomode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "orthomode" 1)
(setq ENT1(Get_Line)
ENT2 ENT1
)
(redraw ENT1 3)
(while (eq ENT1 ENT2)
(setq ENT2(Get_Line))
)
(setq NLINE (entget ENT1)
1PT10(cdr(setq OLD10(assoc 10 NLINE)))
1PT11(cdr(setq OLD11(assoc 11 NLINE)))
PARAMS2(entget ENT2)
2PT10(cdr(assoc 10 PARAMS2))
2PT11(cdr(assoc 11 PARAMS2))
DIST1(distance 1PT10 2PT10)
DIST2(distance 1PT10 2PT11)
DIST3(distance 1PT11 2PT10)
DIST4(distance 1PT11 2PT11)
DSTLST(list(list DIST1 1PT10 2PT10)(list DIST2 1PT10 2PT11)
(list DIST3 1PT11 2PT10)(list DIST4 1PT11 2PT11)
)
MAXDST(max DIST1 DIST2 DIST3 DIST4)
PTS(cdr(assoc MAXDST DSTLST))
PT10(car PTS)
PT11(cadr PTS)
NLINE(subst(cons 10 PT10) OLD10 NLINE)
NLINE(subst(cons 11 PT11) OLD11 NLINE)
)
(entdel ENT2)
(entmod NLINE)
(entupd ENT1)
(Newerr)
(setq *error* olderr olderr nil)
(princ)
)
Просмотров: 5708
 
Непрочитано 12.03.2005, 17:27
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


А полилинии прекрасно соединяет команда PLJOIN из Экспрессов.
Или АКАДовская PEDIT с опцией J
vk вне форума  
 
Непрочитано 12.03.2005, 17:49
#3
Tech


 
Регистрация: 18.10.2004
Odessa
Сообщений: 226
<phrase 1=


Цитата:
А полилинии прекрасно соединяет команда PLJOIN из Экспрессов.
Или АКАДовская PEDIT с опцией J
Да, только в случае, когда концы полилиний находятся в одной точке. А DDlis видимо имел ввиду то, что делает вышеприведеный LISP с линией - соединяет когда концы находятся на расстоянии.
Tech вне форума  
 
Непрочитано 12.03.2005, 19:46
#4
kserg


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


Цитата:
Сообщение от Lamer
Цитата:
А полилинии прекрасно соединяет команда PLJOIN из Экспрессов.
Или АКАДовская PEDIT с опцией J
Да, только в случае, когда концы полилиний находятся в одной точке. А DDlis видимо имел ввиду то, что делает вышеприведеный LISP с линией - соединяет когда концы находятся на расстоянии.
"...Только в случае, когда концы полилиний находятся в одной точке..." :

неправда - и PLJOIN из Экспрессов, и АКАДовская PEDIT запрашивают
допуск для стыковки "несостыкованных" полилиний !...
kserg вне форума  
 
Непрочитано 13.03.2005, 16:20
#5
Vova

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


Соединить разорванную полилинию в общем случае нельзя. Ведь PL не обязательно прямая. Откуда программе знать, загибалась ли она до Break и в какую сторону? В частном случае, если предположить, что должна быть прямая, вероятно, программисты могли бы. А что касается отрезков, я их соединяю макросом, выполненным на основе команды Overkill.
Код:
[Выделить все]
*^C^CCOPY;END;\;@;@;E;P;;'CAL;P1=@;SELECT;SINGLE;END;\LEN;DY;@;'CAL;P1;;-OVERKILL;L;P;;F;0;;
Здесь команда многоразовая, выход по Esc
Vova вне форума  
 
Непрочитано 13.03.2005, 23:05
#6
Arkady

AutoCad Development and Support
 
Регистрация: 21.08.2003
Israel
Сообщений: 183
Отправить сообщение для Arkady с помощью Skype™


Воспользуйся PEDIT с орцией Multiple.
При этом для JOIN можно задать длинну разрывов и способ закрытия (продлить/добавить)
Arkady вне форума  
 
Непрочитано 14.03.2005, 08:50
#7
EasyD


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


Можно получить точки первой полилинии, второй полилинии и т.д. Затем по ним построить программно цельную, а старые удалить! куда уж проще
EasyD вне форума  
 
Непрочитано 14.03.2005, 09:02
#8
kserg


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


Цитата:
Сообщение от EasyD
Можно получить точки первой полилинии, второй полилинии и т.д. Затем по ним построить программно цельную, а старые удалить! куда уж проще
А если, допустим :
1-ая плиния с прямолинейным конечным сегментом, стыковалась с
2-ой плинией с дуговым начальным сегментом,
и вот - оторвали (разорвали) у 2-ой плинии кусок начального дугового сегмента таким образом, что 1-ая и 2-ая плинии теперь не стыкуются.
Что в Вашем варианте делать программе по построению "плинии-заменителя" ? Имеется ввиду на "участке нестыковки" : достраивать
стыкующий прямолинейный сегмент, или дуговой (и какой именно дуговой - с какими параметрами ?).
kserg вне форума  
 
Непрочитано 14.03.2005, 11:29
#9
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от kserg
Что в Вашем варианте делать программе по построению "плинии-заменителя" ? Имеется ввиду на "участке нестыковки"
Это совершенно творческий вопрос и вряд ли его можно решить программно. Есть несколько вариантов "достройки", программно можно предложить их на выбор, но стоит ли овчинка выделки? (в смысле, так ли часто приходится достраивать такие разрывы)
vk вне форума  
 
Непрочитано 14.03.2005, 16:19
#10
EasyD


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


Цитата:
Сообщение от vk
Цитата:
Сообщение от kserg
Что в Вашем варианте делать программе по построению "плинии-заменителя" ? Имеется ввиду на "участке нестыковки"
Это совершенно творческий вопрос и вряд ли его можно решить программно. Есть несколько вариантов "достройки", программно можно предложить их на выбор, но стоит ли овчинка выделки? (в смысле, так ли часто приходится достраивать такие разрывы)
Уважаемый vk дело говорит!
Цитата:
А если, допустим :
1-ая плиния с прямолинейным конечным сегментом, стыковалась с
2-ой плинией с дуговым начальным сегментом,
и вот - оторвали (разорвали) у 2-ой плинии кусок начального дугового сегмента таким образом, что 1-ая и 2-ая плинии теперь не стыкуются.
Что в Вашем варианте делать программе по построению "плинии-заменителя" ? Имеется ввиду на "участке нестыковки" : достраивать
стыкующий прямолинейный сегмент, или дуговой (и какой именно дуговой - с какими параметрами ?).
А в таком варианте, без вопросов лучше и быстрее доделать ручками, а стыковать pljoin из Экспреса
EasyD вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Соединение линии разорванных командой BREAKE