AUTO LIST - Tính diện tích *.LSP

(defun c:N()
(if (= tl nil) (progn
(setq tl (getreal "\nDrawing scale : "))
(setq ntl (/ 1000 tl))
(setq tl2 (* ntl ntl))
)
)
(setq dtl 0)
(setq ss (ssadd))
(setq oslast (getvar "OSMODE"))
(command "osnap" "")
(print)
(print)
(setq pt1 (getpoint "\nPick internal point : "))
(while (/= pt1 nil)
(command "-boundary" pt1 "")
(setq et (entlast))
(ssadd et ss)
(command "area" "e" "last")
(setq vsize ( /(getvar "VIEWSIZE") 3 ))
(command "hatch" "ANSI31" vsize "0" "last" "")
(setq et (entlast))
(ssadd et ss)
(setq dtcon (getvar "AREA"))
(setq dtl (+ dtcon dtl))
(print)
(print)
(setq pt1 (getpoint "\nPick internal point : "))
)
(command "setvar" "OSMODE" oslast)
(command "erase" ss "")
(setq ss nil)
(command "redraw")
(setq dtl (/ dtl (* 1 tl2)))
(print dtl)
(setq elst (entget (car (entsel "Thay cho so: "))))
(setq elst (subst (cons 1 (rtos dtl 2 2)) (assoc 1 elst) elst))
(entmod elst)
(print)
(prompt (strcat "\nTotal area/2 : " (rtos dtl 2 4)))
(print)
; (setq pt2 (getpoint "\nPoint to write: "))
; (command "text" pt2 (/ vsize 6) "0" (rtos dtl 2 2))
);defun