Тема: LISP. Новая полилиния на основе нескольких замкнутых зон
На основе команды "bpoly", но может создать полилинию, объединяющую несколько замкнутых зон. Мышкой указываете внутри каждой замкнутой зоны.
(defun C:union_poly () (setvar "hpbound" 0) (setq osn (getvar "osmode")) (setvar "osmode" 0) (setq r (getpoint "\n Укажите первую точку внутри зоны:")) (command "boundary" r "") (setq l (entlast)) (setq nlayer (cdr (assoc 8 (entget l)))) (setq cc (ssadd l)) (setq i 0) (setq cc (sslength cc)) (setq p 0) (while (/= p "Finish") (initget 32 "Finish") (setq p (getpoint "\nУкажите точку внутри добавляемой зоны или [Finish]:")) (if (= p "Finish") (progn;;;1 (setq vv (entlast)) (setvar "osmode" osn) );;;конец progn1 (progn;;;2 (command "boundary" p "") (setq ll (entlast)) (command "union" l ll "") (setq i (1+ i)) (setq cc (1+ cc)) );;;конец progn2 );;;if );;;while );;;defun
Завершить можно буквой "F".
Возможный макрос для кнопки или пункта меню:
^C^C^P(if (not C:union_poly) (load "union_poly")) union_poly