Тема: Сложная задача с полигонами

работаю с картами. Есть набор полилиний (AcDbPolyline), которые расположенны на различных слоях. Полилинии образуют сетку (можно сказать граф). Задача такова найти все найменьшие полигоны образованные вершинами полилиний. Простой пример описывающий задачу http://ifolder.ru/440048 (6kb). Необходимо получить вершины 9 полигонов.

Re: Сложная задача с полигонами

> SmeL
Если попробовать через тексты (если только
ни одного из них точка вставки не вылезает за
границы лота), правда только лиспом

(defun _get_lots_info (/ data delss elist en ename flag i num pt ptlist ss)
(setq ss (ssget (list (cons 0 "TEXT")))
      flag (getvar "PLINETYPE"))
(if ss
  (progn
    (setq delss (ssadd))
    (setq i -1)
    (repeat (sslength ss)
      (setq en (ssname ss (setq i (1+ i))))
      (setq elist (entget en)
        pt (cdr (assoc 10 elist))
        num (cdr (assoc 1 elist)))
       (command "_.boundary" pt "")
       (setq ename (entlast))
       (if (zerop flag)
       (command "convertpoly" "L" ename "")
             (setq ename (entlast)
         elist (entget ename)))
       (ssadd ename delss)
          (setq ptlist (vl-remove-if (function not)
             (mapcar (function (lambda(x)
                (if (= 10 (car x))
                  (cdr x)))) elist))
        )
      (setq data (cons (cons num (list ptlist)) data))
      )
(command "._erase" delss "")
    (entdel (entlast))
    )
  )
data
)
;Test:
(setq liminfo (_get_lots_info)
      liminfo (vl-sort liminfo
               (function (lambda (a b)
                   (< (car a)(car b))))))

~'J'~

Re: Сложная задача с полигонами

Снимаю вопрос т.к. Fatty показал насколько он прост