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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Объединение двух LW-полилиний посредством entmod

Объединение двух LW-полилиний посредством entmod

Закрытая тема
Поиск в этой теме
Непрочитано 20.11.2022, 00:16 #1
Объединение двух LW-полилиний посредством entmod
Browning Zed
 
Регистрация: 17.01.2014
Сообщений: 97

Доброго времени суток, дамы и господа.
Захотелось решить задачу объединения двух полилиний entity-способом, не затрагивая ActiveX и командные методы. Проект такой:
- указываем поочередно первую и вторую полилинии;
- через entmod изменяем первую полилинию, добавляя к ней вершины второй полилинии;
- удаляем вторую полилинию.
Код:
[Выделить все]
 (and
	;; указываем полилинии и получаем их elist:
	(setq pl1 (entsel "\nУкажите 1-ю полилинию: "))
	(= (cdr (assoc 0 (setq el1 (entget (car pl1))))) "LWPOLYLINE")
	(setq pl2 (entsel "\nУкажите 2-ю полилинию: "))
	(= (cdr (assoc 0 (setq el2 (entget (car pl2))))) "LWPOLYLINE")
	
	;; изменяем elist 1-ой полилинии:
	(entmod
		(append
			;; берем от первой полилинии обязательные dxf-коды -1, 0, 330, 5, 100:
			(reverse (member (assoc 100 el1) (reverse el1)))
			;; подсчитываем количество вершин двух полилиний и заносим его в код 90:
			(list (cons 90 (+ (cdr (assoc 90 el1)) (cdr (assoc 90 el2)))))
			;; проходимся по спискам двух полилиний и собираем информацию о вершинах
			(vl-remove-if-not
				'(lambda (a) (member (car a) '(10 40 41 42 91)))
				(append el1 el2)
			)
			(list (assoc 210 el1))
		)
	)
	
	;; удаляем 2-ю полилинию:
	(entdel (car pl2))
)
В коде нет проверок являются ли выбираемые полилинии одним и тем же объектом и/или замкнутыми полилиниями, но на данном этапе это не нужно. Будем исходить из того, что были указаны две разные не замкнутые полилинии.
Результатом всего этого будет сообщение командной строки: "К 2D-полилинии, не имеющей вершин, добавлены две вершины", а изменяемая полилиния примет вид отличающийся от ожидаемого.

ЧЯДНТ?

З.Ы. Запостил не в тот раздел. Нужно перенести в AutoLISP.

Последний раз редактировалось Browning Zed, 20.11.2022 в 00:25.
Просмотров: 682
 
Непрочитано 20.11.2022, 01:16
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


а entupd разве не нужен?
Сергей812 вне форума  
 
Непрочитано 20.11.2022, 15:12
#3
Бот
Moderator


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


Browning Zed, просьба изменить название темы "Объединение двух LW-полилиний посредством entmod" в соответствии с п.4.3. правил форума, в противном случае тема будет закрыта через 12 часов.

Я случайно создал тему не в том разделе или случайно продублировал тему / пост. Что делать?

Сообщение сгенерировано автоматически, отвечать на него не нужно
Бот вне форума  
 
Непрочитано 20.11.2022, 18:17
1 | #4
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,679


Код:
[Выделить все]
 (setq el1 (entget (car (entsel "\nУкажите 1-ю полилинию: "))))
  (setq el2 (entget (car (entsel "\nУкажите 2-ю полилинию: "))))
  (setq pl1_dxf
    (append
      (reverse (cdr (reverse el1)))
      (member (assoc 10 el2) el2) 
    )
  )
  (entmod (subst (cons 90 (+ (cdr (assoc 90 el1)) (cdr (assoc 90 el2)))) (assoc 90 el1) pl1_dxf))
  (entdel (cdar el2))
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 20.11.2022, 20:50
#5
Browning Zed


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а entupd разве не нужен?
В данном случае вроде бы не нужен.

Цитата:
Сообщение от koMon Посмотреть сообщение
koMon
Спасибо за подсказку. Оказалось, ларчик проще открывается. )
Browning Zed вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Объединение двух LW-полилиний посредством entmod

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Соединение двух полилиний Тигра AutoCAD 55 29.11.2022 04:35
Расчёт анкерных болтов на моменты в двух плоскостях. 3MEi86 Конструкции зданий и сооружений 50 24.06.2022 09:43
Как получить кажущиеся точки пересечения двух полилиний? Kwartoshka LISP 0 17.09.2021 16:11
SCAD Объединение двух и трех пластин в одну? Анастасия63 SCAD 1 18.04.2012 00:37
Объединение разноплоскостных полилиний grey AutoCAD 3 08.11.2009 13:52