ottimi direi, ma "pignoliamo" un pò ;p
(defun c:cs ()
(if (= ht nil)(setq ht 1))
;(if (= scala nil)(setq scala(getreal "\n....... scala scritte 1:")))
(setq p "")
(setq p(getpoint "\n....... seleziona il punto all'interno dell'area: "))
(if (/= p nil)(progn
(setvar "cmdecho" 0)
(setq cpltype(getvar "plinetype"))
(setq clay(getvar "clayer"))
(setvar "plinetype" 1)
(command "_layer" "_m" "aree_nuove" "")
(command "_bpoly" "_a" "_b" "_e" "_o" "_p" "_x" p "")
(setq poli(entlast))
(setq polix(entget poli))
(if (= (cdr(assoc 0 polix)) "lwpolyline")(progn
(command "_area" "_o" poli)
(setq area(getvar "area"))
(setq perimetro(getvar "perimeter"))
(setq hs(* 0.00005 area))
(command "_layer" "_m" "aree_scritte" "")
(command "_text" "_c" p hs "0" (strcat "areas=" (rtos area 2 2))"mm2" \r)
(command "_text" "_c" p hs "0" (strcat "areas=" (rtos area 2 2))"m2" \r)
(command "_text" "_c" (polar p (* 1.5 pi) (* hs 1.5)) hs "0" (strcat "perimetro=" (rtos perimetro 2 2))"mm" \r)
(command "_text" "_c" (polar p (* 1.5 pi) (* hs 1.5)) hs "0" (strcat "perimetro=" (rtos perimetro/1000 2 2))"m" \r)
))
(setvar "clayer" clay)
(setvar "plinetype" cpltype)
))
(princ)
)
(princ "\n<copyright: ing. claudio granuzzo>")
(princ)fonte:
www.sepram
allora vorrei usare questa parte, ma cambiando:
-ricavare area in mm2 e m2 (ho provato ma nn funzia)
-ricavare perimetro in mm e m (ho provato ma nn funzia)
-ho cambiato la grandezza del testo rendendola proporzionale all'area, c'è un altro modo per far sì che sia sempre leggibile immediatamente senza "finestrare"?
-vedo che crea una polilinea sopra al disegno, potrebbe semplicemente sostituire il disegno evitando il "doppione"?
-la polilinea che crea può essere dello stello livello che aveva il disegno originale? (magari toccando prima un elemento)