i tried tuo do but only take zone 1, after that if erase zona 1 polygon, the program do to zone2 and progresive
(defun c:ImintheZone ( / Text _sort e blocklist output ss i n ez pts blks layer f pt tblObj rows adoc )
(vl-load-com)
(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(defun Text (pt hgt str lyr)
(entmakex (list (cons 0 "TEXT")
(cons 10 pt)
(cons 8 lyr)
(cons 40 hgt)
(cons 1 str))))
(defun _sort (l)
(vl-sort l (function (lambda (a b) (< (car a) (car b))))))
;; Verifica y asigna el estilo de texto
(defun EnsureTextStyleExists (styleName)
(if (not (tblsearch "style" styleName))
(progn
(entmake
(list
(cons 0 "STYLE")
(cons 2 styleName)
(cons 70 0)
(cons 40 0.0)
(cons 41 1.0)
(cons 50 0.0)
(cons 71 0)
(cons 3 "txt")
(cons 4 "")
)
)
(princ (strcat "\\nCreated text style: " styleName))
)
(princ (strcat "\\nText style already exists: " styleName))
)
)
(if (setq ss (ssget "_X" '((0 . "LWPOLYLINE") (8 . "ZONE*"))))
(progn
(while (setq e (ssname ss 0))
(setq blocklist nil
ent (entget e)
layer (cdr (assoc 8 ent)))
(ssdel e ss)
(setq ZoneSel (ssget "_X" (list '(0 . "LWPOLYLINE") (cons 8 layer))))
(repeat (setq i (sslength ZoneSel))
(setq ez (ssname ZoneSel (setq i (1- i)))
pts (mapcar 'cdr
(vl-remove-if-not
'(lambda (d) (= (car d) 10))
(entget ez))))
(ssdel ez ss)
(if (setq blks (ssget "CP" pts '((0 . "INSERT"))))
(repeat (setq n (sslength blks))
(setq bnm (cdr (assoc 2 (entget (ssname blks (setq n (1- n)))))))
(setq blocklist
(if (setq f (assoc bnm blocklist))
(subst (cons bnm (1+ (cdr f))) f blocklist)
(cons (cons bnm 1) blocklist))))))
(setq output (cons (list layer blocklist) output))
)
(setq pt (getpoint "\\nPick point for quantities report"))
(EnsureTextStyleExists "Standard")
(setq tblObj (vla-AddTable
(vla-get-ModelSpace adoc)
(vlax-3D-point pt)
(+ 2 (length output))
3
1.0
5.0))
(vla-put-RegenerateTableSuppressed tblObj :vlax-true)
(vla-put-StyleName tblObj "Standard")
(vla-put-RegenerateTableSuppressed tblObj :vlax-false)
(vla-SetText tblObj 0 0 "Layer")
(vla-SetText tblObj 0 1 "Block Name")
(vla-SetText tblObj 0 2 "Count")
(setq rows 1)
(foreach itm (_sort output)
(foreach bnmes (_sort (cadr itm))
(vla-SetText tblObj rows 0 (car itm))
(vla-SetText tblObj rows 1 (car bnmes))
(vla-SetText tblObj rows 2 (itoa (cdr bnmes)))
(setq rows (1+ rows))))))
(princ))