arklisp
18-07-2002, 11.31.19
sottopongo all'attenzione dei progettisti e disegnatori autocad una semplice
macro per ottenere il cacolo dell'area di figure chiuse.
copiate in un file e salvate con estensione.lsp, poi caricate il file in oggetto all'interno
di autocad con il comando _appload, infine lanciate la macro dal prompt, digitate
ar
modificatela a vostra discrezione, mantenendo tuttavia la dicitura originaria di copyright
dell'autore.
buon lavoro!
fabrizio
testo della macro autolisp:
;;;area.lsp release 1.0 <(c) f. battistini - 2001>
;;;
http://webspace.omniway.sm/fbattistini/
;;;
;;;********************************************************
;;;you are allowed to freely distribute and modify it.
;;;********************************************************
;;;
;;; calcola l'area di un loop
;;;
;;;error handler routine for ar
;;;
(defun bnerror (bn)
(princ "\n ar <enter>: optimized area command-r 1.0 (c) f. battistini ")
(command)
(setq lastr (ssget "_l" '((0 . "region"))))
(command "_area" "_ob" lastr )
(setq lastr nil)
(setvar "cmdecho" 0)
(setq lastr2 (ssget "_l" '((0 . "region"))))
(if (= lastr2 nil)(princ)
(command "_erase" lastr2""))
(setvar "cmdecho" 1)
(setq *error* olderr)
(princ)
)
;;;
;;;
;;;*** main routine (c) f. battistini_2001 *************************************
;;;
(defun c:ar (/ ent entb ss pt ptlst ptlst2 ll lll loop ll2 y y2 ss ssoff entoff lass viewarea zdin)
(setq olderr *error*
*error* bnerror)
(setvar "cmdecho" 0)
(setvar "pickadd" 1)
(command "_undo" "_be")
(alert "area calculator: (c) by f. battistini_2001
http://webspace.omniway.sm/fbattistini
ar <enter> ")
(princ" ar <enter>: optimized area command for loops. (c) f. battistini")
(setq pt (getpoint "\nseleziona punto interno all'isola: "))
(if (null pt)
(nil)(princ))
(setq xx (getvar "acadver"))
(if (>= xx "15.0")
(command "_-boundary" pt "" )
(command "_-boundary" pt""))
(command "")(princ "\n\n---------prego attendere...-------------------\n\n")
(setq ss (entlast))(command "_region" ss"" )
(setvar "cmdecho" 1)
(command "_area" "_ob" "_last" )
(setvar "cmdecho" 0)
(command "_erase" (entlast)"")
(setvar "cmdecho" 0)(textpage)
(command "_undo" "_e")(setvar "cmdecho" 1)(setq *error* olderr) (princ))
;;;
(princ "\n ar <enter>.comando -area- ottimizzato. (c) f. battistini")
max
18-07-2002, 14.57.27
la cosa mi interessa: mi spieghi la differenza fra questo ed il comando "area"?
max
arklisp
18-07-2002, 20.53.35
ciao max,
la differenza è sostanziale!
esempio: se tu hai una figura chiusa composta da un loop di lìnee,
con il comando area dovrai selezionare uno ad uno tutti i suoi vertici (estremi) per
ottenere il computo. poi se dovessi avere una figura con qualche lato curvo non riusciresti a calcolare l'area con il comando standard "area".
grazie al mio comando ar puoi computare l'area cliccando semplicemete un punto al suo interno. potrai calcolare l'area di qualunque figura 2d.
quindi si guadagna in velocità, semplicità e per capacità di calcolo.
spero di essere stato esauriente!
comunque non ti resta che testare la macro e distribuirla a chi desideri.
ciao!
fabrizio
http://webspace.omniway.sm/fbattistini/
max
19-07-2002, 00.49.56
hai ragione!
fatalità per il mio modo di disegnare mi era sempre capitato di utilizzare il comando area/object per misurare gli sviluppi dei nastri trasportatori, che ovviamente trasformavo in polilinea prima di misurare.
domani, tempo permettendo, proverò ad utilizzare la tua macro. non conoscendo assolutamente il lisp però non so se la cosa mi sarà facile. intanto grazie, poi semmai ti contatto...
max
arklisp
19-07-2002, 10.19.47
gent.mo max,
il fatto che tu non conosca autolisp non ti impedisce di godere dei benefici che esso apporta ad autocad.
in breve, per caricare un lisp (o la lisp, se preferisci gli attributi femminili...)
devi digitare dal prompt il comando _appload e selezionare la macro, poi premere il pulsante "load" (carica). la macro verrà caricata in memoria, a questo punto dovrai lanciare il comando specifico.
comunque se incontri difficoltà sarò felice di aiutarti!
ciao e a presto.
p.s. io non impartisco lezioni di autolisp, ma se sei interessato ad avvicinarti a questo linguaggio (davvero semplice a livello base) puoi visitare il link "autolisp..." sul mio sito.
inoltre in giro per il web troverai migliaia di risorse ed info su autolisp.
fabrizio
http://webspace.omniway.sm/fbattistini/
marcog
21-07-2002, 20.15.30
ciao, volevo solo indicarvi (nel caso non ci aveste fatto caso) che esiste una sotto funzione del comando area che permette di calcolare "almeno" l'area di una figura chiusa.
se usate il comando area vedrete che compare in basso il sottocomando "object". con quel comando, selezionando la poly o la figura chiusa in genere, potrete calcolarne l'area velocemente senza lisp.
se volete potete inserire il comando in un vostro pulsante utilizzando la personalizzazione dei pulsanti.
^c^carea o
il comando chiederà solamente il click su un oggetto (chiuso) e visualizzerà l'area corrispondente
ciao, grazie
max
22-07-2002, 11.02.46
...sì, infatti, è quello che dicevo io sopra. fatalità avevo sempre calcolato le aree (ed i perimetri, perchè a me interessano i perimetri) in questo modo. tuttavia non si può negare l'utilità e la praticità della lisp proposta da arklisp.
max