Programmi
di AutoLisp
di
Gaetano G. Perlongo
(1999)
Indice
Il presente tutorial è l'antologia di alcuni listati da me redatti
presso l'Istituto Nazionale per la Formazione l'Addestramento e
l'Orientamento Professionale (INFAOP) di Palermo, durante l'anno formativo
1998/1999.
Esso costituisce un'indicazione (sui generis) sull'applicazione dell'AutoLisp
sul versante matematico.
L'utente AutoCad avrà a sua disposizione una discreta dotazione di funzioni
del tipo: conversioni di coordinate, equazioni di 2°, radice cubica, tracciato
sinusoidale per punti e per polilinea ecc.). Il progettista, inoltre, potrà
tracciare elementi grafici a partire da una funzione matematica.
Devo i miei ringraziamenti a Maurizio Gaziano e all'arch. Tindaro Tarantello,
rispettivamente docenti di informatica e di disegno assistito al calcolatore,
per avermi aiutato nella stesura dei programmi.
Trappeto (Palermo), 21 aprile 1999
16/12/1998

(defun c:rp ()
(setq x (getreal "inserisci l'ascisse:"))
(setq y (getreal "inserisci l'ordinata:"))
(setq m (sqrt (+ (* x x) (* y y))))
(setq a (atan (/ y x)))
(princ "Il modulo e l'argomento è:")
(princ m)
(princ)
(terpri)
(princ a)
(princ)
)
23/12/1998

(defun c:eq ()
(setq a (getint "inserisci il coefficiente a:"))
(setq b (getint "inserisci il coefficiente b:"))
(setq c (getint "inserisci il termine noto c:"))
(setq delta (- (* b b) (* 4 a c)))
(if (>= delta 0)(progn
(setq x1 (/ (* -1 (+ b (sqrt delta))) (* 2 a)))
(setq x2 (/ (- b (sqrt delta)) (* 2 a)))
(princ "Il valore di x1 e x2 è:")
(terpri)
(princ x1)
(princ)
(terpri)
(princ x2)
(princ)
))
(if (< delta 0) (princ "I valori delle radici non hanno significato
geometrico"))
(princ)
)
08/01/1999

Equazione
iterativa di Newton-Raphson
(defun c:root3 ()
(setq x 1.4072)
(setq a (getreal "inserisci il radicando a:"))
(repeat 100
(setq x (/ (+(* 2 x) (/ a (* x x))) 3))
)
(princ "Il valore della radice cubica è:")
(princ x)
(princ)
)
03/02/1999

(defun
c:funz1 ()
(graphscr)
(setq step (/ (* 3 6.28) 1000))
(setq x 0.0)
(setq a 0.0)
(repeat 1000
(SETQ a (+ a step))
(SETQ x (+ x 1.0))
(setq y (* 1000 (sin a)))
(command "point" (list x y) )
)
)
03/02/1999

(defun c:funz2 ()
(graphscr)
(setq xstep 30)
(setq xsize (/ 1000.0 xstep))
(setq ysize (/ 1000.0 2))
(setq step (/ (* 1 6.28) xstep))
(setq x 0.0)
(setq a 0.0)
(command "pline")
(repeat xstep
(setq a (+ a step))
(setq x (+ x xsize))
(setq y (* ysize (sin a)))
(command (list x y) )
)
(command "")
)
03/02/1999

(defun c:funz ()
(graphscr)
(setq xstep 50)
(setq xsize (/ 1000.0 xstep))
(setq ysize (/ 1000.0 2))
(setq fff (getstring T "inserisci la funzione:"))
(setq fff (read fff))
(setq step (/ 6.28 xstep))
(setq x 0.0)
(setq a 0.0)
(command "pline")
(repeat xstep
(setq a (+ a step))
(setq x (+ x xsize))
(setq y (* ysize (eval fff) ) )
(command (list x y) )
)
(command "")
)

Fig.1) Solido di rivoluzione con profilo logaritmico

Fig.2) Solido di rivoluzione con profilo definito dalla
seguente funzione:
Scarica sorgente
Bibliografia
- AA.VV., Manuale
di personalizzazione di AutoCad release 13, Autodesk Development
B.V., Neuchatel (Svizzera), 1994;
- Gambolati,
G., Elementi di calcolo numerico, Edizioni Libreria Cortina,
Padova, 1982;
- Grabowski, R., AutoCad 14, Apogeo, Milano,1998;
- Rusty, G., Smith, J., AutoLisp: Tecniche
di programmazione, Jackson Libri, Milano, 1993;
- Severino, B., AutoCad release R14: L'atteso
ritorno, "PC Professionale", Mondadori Informatica,
Milano, n°87/88, luglio/agosto 1998.
Home
|