Messaggi: 9
Discussioni: 4
Likes Received:
0 in 0 posts
Likes Given: 0
Registrato: Apr 2015
Reputazione:
0
DAI VARI FORUM HO RISCONTRATO CHE IL CALCOLO DELL'AREA NON è POSSIBILE EFFETTUARLO PER SELEZIONE DI PUNTI MA SOLO PER CONTORNI CHIUSI. PER RISOLVERE IL PROBLEMA BASTEREBBE ESTRARRE IL LISP CHE UTILIZZA AUTOCAD PER POTER POI CREARE UN BOTTONE AD-HOC PER NANOCAD. IO SFORTUNATAMENTE NON NE SONO CAPACE (IN VERITA' CI HO PROVATO MA NON CI SONO RIUSCITO)...HO ANCHE PROVATO A SCRIVERE UN LISP APPOSITO MA AHIME' NON NE HO LE BASI....QUALCUNO DI VOI SA FARLO?
GRAZIE PER EVENTUALI RISPOSTE.
Messaggi: 392
Discussioni: 14
Likes Received:
0 in 0 posts
Likes Given: 0
Registrato: Mar 2012
Reputazione:
0
Mi sembra un'ottima idea la tua.
Purtroppo io non so farlo.
Se qualcuno lo fa si prega di condividere.
Vale anche per altri Lisp ovviamente.
Messaggi: 1
Discussioni: 0
Likes Received:
0 in 0 posts
Likes Given: 0
Registrato: Apr 2015
Reputazione:
0
caricate questo lisp ..
prima salvate il file areai.lsp
Ciao
Max
listato :
(defun c:AREAI (/ *error* pl x y i sn)
(vl-load-com)
;;; Tharwat 17. May. 2012 ;;;
(defun *error* (msg)
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **"))
)
(princ)
)
(if (not acdoc)
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(princ "\n select a Polyline :")
(if (setq pl (ssget '((0 . "*POLYLINE") (-4 . "&") (70 . 1))))
(progn
(vla-StartUndoMark acdoc)
(repeat (setq i (sslength pl))
(setq sn (ssname pl (setq i (1- i))))
(WriteArea sn)
)
(vla-EndUndoMark acdoc)
)
(princ)
)
(princ)
)
(defun WriteArea (sn / e lst pts i x y n sty)
(setq e (entget sn))
(setq lst (vl-remove-if-not
(function
(lambda (x)
(if (eq (car x) 10)
(setq pts (cons (list (cadr x) (caddr x)) pts))
)
)
)
e
)
)
(setq i 0
x 0
y 0
)
(repeat (setq n (length pts))
(setq x (+ (car (nth i pts)) x))
(setq y (+ (cadr (nth i pts)) y))
(setq i (1+ i))
)
(entmake
(list
'(0 . "MTEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbMText")
(assoc 8 (entget sn))
(cons 10 (trans (list (/ x n) (/ y n) 0.) 1 0))
(cons
1
(strcat ""
" "
(rtos (vla-get-area (vlax-ename->vla-object sn)) 2)
" mq"
)
)
(cons 7 (getvar 'textstyle))
(cons 40
(if
(eq (cdr (assoc 40
(setq sty
(entget (tblobjname "style" (getvar 'textstyle)))
)
)
)
0.
)
(cdr (assoc 42 sty))
(cdr (assoc 40 sty))
)
)
'(71 . 5)
)
)
)
Messaggi: 392
Discussioni: 14
Likes Received:
0 in 0 posts
Likes Given: 0
Registrato: Mar 2012
Reputazione:
0
@aserte
Io non sono molto esperto ma sono riuscito a caricare il tuo lisp ed il risultato non è quello chiesto da Simone Bacco.
Non si tratta di misurare e scrivere l'area di oggetti chiusi ma di misurare un'area sulla base di una sequenza di punti
perché nanoCAD misura già l'area di una polilinea chiusa.
O forse sbaglio qualcosa io?
Messaggi: 9
Discussioni: 4
Likes Received:
0 in 0 posts
Likes Given: 0
Registrato: Apr 2015
Reputazione:
0
Quello che dice frac_ è giusto.
Questo calcolare l'area di un poligono chiuso....cosa che già fa nanocad di suo.
Questo in più ti scrive direttamente il calcolo.
Manca la sequenza di punti, cosa che dovrebbe essere scontata in quanto non sempre si hanno poligoni chiusi ne ha senso creare poligoni chiusi per ottenere il calcolo dell'area.
Sarebbe come andare a Roma passando da Milano.