Messaggi: 9
Discussioni: 4
Registrato: Apr 2015
Reputazione:
0
Thanks: 0
Given 0 thank(s) in 0 post(s)
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.
Likes Received: 0 in 0 posts
Likes Given: 0
Messaggi: 297
Discussioni: 15
Registrato: Mar 2012
Reputazione:
1
Thanks: 11
Given 34 thank(s) in 33 post(s)
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.
Likes Received: 0 in 0 posts
Likes Given: 0
Messaggi: 1
Discussioni: 0
Registrato: Apr 2015
Reputazione:
0
Thanks: 0
Given 0 thank(s) in 0 post(s)
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)
)
)
)
Likes Received: 0 in 0 posts
Likes Given: 0
Messaggi: 297
Discussioni: 15
Registrato: Mar 2012
Reputazione:
1
Thanks: 11
Given 34 thank(s) in 33 post(s)
@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?
Likes Received: 0 in 0 posts
Likes Given: 0
Messaggi: 9
Discussioni: 4
Registrato: Apr 2015
Reputazione:
0
Thanks: 0
Given 0 thank(s) in 0 post(s)
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.
Likes Received: 0 in 0 posts
Likes Given: 0
Messaggi: 7
Discussioni: 2
Registrato: Jul 2017
Reputazione:
0
Thanks: 2
Given 0 thank(s) in 0 post(s)
(12-04-2015, 10:12 AM)Simone Bacco Ha scritto: 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.
Volevo sapere se ad oggi, visto che quest'argomento langue, ancora non è stata trovata una soluzione adeguata.
Da quello che ho potuto vedere... purtroppo no, anche se spero vivamente di sbagliarmi.
Novità a riguardo?
In tal caso è ancora valida la citazione di Simone con il passaggio da Roma.
Likes Received: 0 in 0 posts
Likes Given: 0