Professional Documents
Culture Documents
AUTOLISP
Chng 1. CN BN V AUTOLISP
LISP l mt ngn ng lp trnh bc cao thng c dng cho vic nghin cu tr tu
nhn to. LISP vit tt ca List Processing c Jonh McCarthy v cc ng nghip
ti vin k thut Massachusets bin son t nhng nm u ca thp nin 1960. LISP l
ngn ng khai bo, lp trnh vin ch cn son cc danh sch biu th cc mi quan h gia
cc gi tr k hiu. Cc bn danh sch l cu trc d liu c bn ca LISP v chng trnh
s tin hnh cc php tnh bng cc gi tr c din t trong cc danh sch .
Mt s phin bn ca LISP c tiu chun ho, cu hnh y v c tiu chun
ho v c chp nhn rng ri hin nay l COMMON LISP.
AutoLISP tp con ca ngn ng LISP, l ngn ng lp trnh bc cao thch hp vi cc
ng dng ho. AutoLISP l ngn ng thng dch, c vit theo cc c php v th tc
cht ch nh ngn ng LISP. Tuy nhin n c b sung thm cc hm ph hp vi phn
mm AutCAD.
1.1. Xy dng biu thc AutoLISP.
Khi bn nhp dng text ti dng lnh, AutoCAD dch dng text bng cch so snh cc
k t vi danh sch cc tn lnh. Nu dng text tng ng vi cc lnh ca AutoCAD th
chng s nh gi v thi hnh cc lnh nh mong mun. Khi AutoCAD nhn cc AutoLISP
code th chng chuyn cc code ny n b bin dch AutoLISP.
Cu trc d liu c bn ca AutoLISP l danh sch (List). Danh sch l tp hp cc
phn t cha trong cp du ngoc n (). Cc phn t tron danh sch phn cch nhau bi cc
khong trng.
C hai loi danh sch: biu thc (expression) v danh sch d liu (data list). Biu
thc l thnh phn c bn trong tt c cc chng trnh AutoLISP. Phn t u tin ca biu
thc l mt hm (function). Hm ny s c AutoLISP nh gi tr v tr v kt qu. Cc
phn t tip theo l cc tham l s l cc gi tr cung cp cho hm. Gi tr tr v l kt qu
tnh ton ca hm.
S khc nhau c bn gia mt biu thc AutoLISP vi mt biu thc ton hc l cc
phn t AutoLISP c th t khc vi ng thc v chng phi c cha trong cp du
ngoc n.
1+2=3 Command: (+ 1 2)
3
Tham s Kt qu
Gi tr tr v tham s
V d:
Command: (* 10 10) 100 (kt thc biu thc bng phm SPACEBAR)
Command: (- 30 10) (kt thc biu thc bng nhn phm )
20
1.3. Cc hm s hc.
a) Hm cng (+).
Hm cng nhn vo nhiu tham s v tr v tng ca cc tham s ny.
Examples
(+ 1 2) returns 3
(+ 1 2 3 4.5) returns 10.5
(+ 1 2 3 4.0) returns 10.0
b) Hm tr (-):
Examples
(- 50 40) returns 10
(- 50 40.0) returns 10.0
(- 50 40.0 2.5) returns 7.5
(- 8) returns -8
c) Hm nhn (*):
Examples
Examples
5.0
Khi cn nh gi mt biu thc AutoLISP n gin, ta nhp trc tip ti dng nhc
lnh AutoCAD. Khi cn thc hin lin tip nhiu biu thc phc tp, ta c th lu chng vo
mt file vn bn ASCII, v sau gi file ny thc hin. File ny gi l file chng trnh
AutoLISP.
- AutoCAD tnh ton cc biu thc trong file chng trnh nhanh hn khi chng c
nhp t dng nhc lnh.
Tn file AutoLISP ph thuc vo h iu hnh. Khi dng Windows 95, 98, 2000, NT
v cc phin bn mi hn ta c th t tn file di n 256 k t. Phn m rng mc nh
ca file l .LSP.
Nhng cng c tt nht cho vic son chng trng AutoLISP l dng phn mm
Visual LISP. c gi bng lnh Vlisp hoc chn t Tools menu -> AutoLISP->Visual
LISPEditor s xut hin mn hnh son tho chng trnh AutoLISP nh hnh di y.
Hnh 2.2. Son tho chng trnh AutoLISP bng phn mmVisual LISP.
- Trong phn ln cc trng hp, cc biu thc khng phn bit dng ch hoa ch
thng.
2.1.3. Cc du ngoc n.
V d:
(setq ds nil)
(defun dtor(do)
(* (/ do 180.0)pi)
1 2 3 4 5 4 3 2 1 2 3 2 1 0
Cc d liu kiu chui phi t trong cp du nhy chui. Nu chui d liu khng t
trong du nhy chui, AutoLISP xem l tn hm v tt nhin l b li.
V d:
(defun dtor(do)
); kt thc th tc
Hoc ang trong chng trnh Visual Lisp th ta kch vo (c v tr nh hnh 2.4)
trn thanh cng c tin hnh load file hin hnh vo AutoCAD thc hin.
LOAD
Hnh 2.4. Giao din chng trnh Visual Lisp v nt lnh LOAD
2.2. Cc hm t to.
+ C php:
(bt1)
(bt2)
- Defun: hm to hm mi ca AutoLISP;
- y1, y2, :cc bin cc b ca hm, phn bit vi bin dng khi gi hm bng k t
chia (/)
(defun dtor(do)
(* (/ do 180.0)pi)
Bng cch thm C: vo trc tn hm t to th khi thc thi chng trnh AutoLISP s to ra
lnh mi cho AutoCAD c tn trng tn hm. C php nh sau:
(bt1)
(bt2)
V d:
(defun c:hv(/ p a)
(setq p(getpoint "\n nhap diem goc trai phia duoi cua hinh vuong:"))
_$ (- -2147483648 1)
-2.14748e+009 (kt qu sai)
Thng thng s nguyn c dng lm gi tr cho bin m. Nu khng cn thit th nn
khai bo dng s thc tranh nhng sai st.
\r Return character
V d:
Khi khng dng k t \ :
(setq a(getreal "cho biet he so a="))
(setq b(getreal "cho biet he so b="))
Kt qu tr v:
Command: cho biet he so a=10 (ghi tip vo m khng xung
dng)
cho biet he so b=10 (xung dng l v nhn Enter khi nhp 10 cho bin
a)
Khi dng k t \ :
(setq a(getreal "\n cho biet he so a="))
(setq b(getreal "\n cho biet he so b="))
Kt qu tr v:
Command:
cho biet he so a=10
cho biet he so b=20
3.4. D liu kiu file
Kiu d liu file l mt con tr dng m mt file bng hm open trong AutoLISP.
Hm open tr v cho con tr gi tr k t v s ca file c m. Khi phi cung cp
bin nh cc hm khc ca AutoLISP thc hin c v ghi file c m.
(princ t1)
(close f)
Nh vy ta c th s dng d liu t file, v sau khi thot phi ng file lai bng hm
(close)
V d:
Hm QUOTE: (setq a(quote (x y))) hoc (setq a'(x y)) (X Y) (x y): a l list cha
hai bin x,y cha c nh gi tr.
4.2.1. Hm CAR
4.2.2. Hm CDR
4.2.3. Hm CADR
4.2.4. Hm CADDR
4.2.5. Hm LAST
4.2.6. Hm LENGTH
4.2.7. Hm NTH
4.2.8. Hm APPEND
5.1. Cc hm iu khin
Khi tnh ton trong AutoLISP th kiu s (real, integer) l kiu d liu c bn, i lc ta phi
chuyn i qua li p ng lp trnh. Ta thng s dng cc hm x l s sau lm iu
:
a) Hm ABS: ly tr tuyt i
Num: mt s bt k.
Gi tr tr v: tr tuyt i ca num.
V d:
(abs 100) 100
Number: s thc
d) Hm REM: chia ly s d.
C php: (rem num1 num2 )
num1: s bt k
num2, : s nguyn
Nu cung cp nhiu hn mt s chia th Rem chia lin tip t tri sang phi, s d s c chia cho
s tip theo v ly s d cui cng.
Gi tr tr v: s d ph thuc vo s b chia nu s b chia l real thi s d l real, cn s b chia l
Integer th s d l integer.
A number. If any number argument is a real, rem returns a real; otherwise, rem returns an integer. If
no arguments are supplied, rem returns 0. If a single number argument is supplied, rem returns
number.
V d:
Command: (rem 42 12) 6
Command: (rem 12.0 16) 12.0
Command: (rem 26 7 2) 1
Command: (rem 26) 26
Command: (rem ) 0
V d:
Command: (atan 1) 0.785398
Command: (atan 1.0) 0.785398
Command: (atan 0.5) 0.463648
Command: (atan 1.0) 0.785398
Command: (atan -1.0) -0.785398
Command: (atan 2.0 3.0) 0.588003
Command: (atan 2.0 -3.0) 2.55359
Command: (atan 1.0 0.0) 1.5708
S dng hm Atan ta c th ta c th tnh c hm asin v acos (hai hm ny khng c trong
autoLISP). Bng bin i ton hc nh sau:
sin x 1 cos 2 x
tan x = =
cos x cos x
1 cos 2 x
Ly atan hai v: x = a tan
cos x
t: t=cosx x =acost
1 t2
Suy ra: a cos t = a tan
t
t
Tng t: a sin t = a tan
1 t2
d) Hm GETANGLE: nhp gi tr gc
pt: im gc trong UCS hin hnh c th c hoc khng, nu c th ngi dng phi nhp thm
im th hai, gi tr gc nhp vo chnh l gc ca ng thng ny vi trc ox ca UCS hin hnh.
msg: li nhc.
V d:
180
3.14159 (gi tr tr v)
Which way? 90
1.5708
Which way? 45
0.785398
msg: li nhc
V d:
Hm OSNAP
Hm INTERS
Hm EXP
Hm SQRT
Hm LOG
Hm EXPT