Anda di halaman 1dari 20

B GIO DC V O TO

TRNG I HC DN LP HI PHNG

N TT NGHIP I HC H CHNH QUY


NGNH CNG NGH THNG TIN

Tm hiu ngn ng AutoLISP


V
ng dng trong AutoCAD

Gio vin hng dn: Thc s Vn Chiu


Sinh vin
: Lu Th Thu Trang

Hi Phng, 2007

Tm hiu AutoLISP v ng dng trong autoCAD

Mc lc
Li cm n .................................................................................................................................. 4
Phn 1: Gii thiu ....................................................................................................................... 5
1 Tn v mc ch ca ti .................................................................................................. 5
2 Gii thiu vi nt v c quan thc tp ................................................................................. 5
Phn 2: Ni dung ........................................................................................................................ 6
Li m u ............................................................................................................................. 6
1. Khi qut v lp trnh trong AutoCAD ............................................................................ 8

1.1 K thut t ng ActiveX (ActiveX Automation).........................................8


1.2 AutoCAD VBA .................................................................................................8
1.3 AutoLISP v Visual LISP ................................................................................9
1.4 ObjectARX........................................................................................................9
2.

Gii thiu chung ............................................................................................................ 10

2.1 Vi nt s lc v LISP .................................................................................10


2.2 Lch s pht trin AutoLisp ..........................................................................10
2.3 u nhc im ca AutoLisp .......................................................................11
3.Ngn ng lp trnh AutoLISP ........................................................................................... 12

3.1. Cn bn v AutoLisp ....................................................................................12


3.1.1 Xy dng biu thc AutoLISP ............................................................................ 12
3.1.2 Cch nhp biu thc AutoLISP: ......................................................................... 13
3.1.3 Cc hm s hc ................................................................................................... 13

3.2. Bin v k hiu trong AutoLISP ..................................................................14


3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6

Gn gi tr cho bin ............................................................................................ 14


Gi tr tr v ca hm AutoLISP ........................................................................ 14
S dng cc bin ti dng lnh AutoCAD ......................................................... 14
Cc quy nh v t tn bin .............................................................................. 14
Nhp gi tr cho tham s ..................................................................................... 14
Phm vi cc bin trong AutoLISP ...................................................................... 15

3.3. File chng trnh AutoLISP ........................................................................16


3.3.1 Tn file AutoLISP ............................................................................................... 16
3.3.2 To file chng trnh ........................................................................................... 16
3.3.3 Gi file chng trnh AutoLISP .......................................................................... 17
3.3.4 Ch thch ............................................................................................................ 17
3.3.5 Cc hm t to ..................................................................................................... 17
3.3.6 Bin ton cc v bin cc b .............................................................................. 18
3.3.7 To cc lnh AutoCAD mi ............................................................................... 18

3.4. Nhp d liu..................................................................................................19


3.4.1 Nhp s nguyn .................................................................................................. 19
3.4.2
Nhp s thc................................................................................................. 19
3.4.3 Nhp chui .......................................................................................................... 19
3.4.5 Tham s khng rng ........................................................................................... 19
3.4.6 Kim sot d liu nhp vo ................................................................................ 19
3.4.7 Bin h thng ....................................................................................................... 19

3.5. Mt s hm c bn ........................................................................................20
3.5.1 Hm chuyn kiu d liu t chui thnh s v ngc li ................................. 20
3.5.2. Cc hm s hc ................................................................................................... 21
3.5.3. Cc hm v chui ............................................................................................... 23

3.6. X l danh sch .............................................................................................25


3.6.1 Phn loi : ............................................................................................................ 25

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD


3.6.2 To danh sch ...................................................................................................... 25
3.6.3 Cc hm x l danh sch c bn ......................................................................... 25
3.6.4 Cc hm x l danh sch nng cao ...................................................................... 26

3.7. Biu thc iu kin........................................................................................28


3.7.1. Biu thc iu kin ......................................................................................... 28
3.7.2. R nhnh chng trnh ................................................................................... 29
3.7.3 Cc hm logic ...................................................................................................... 30

3.8. Vng lp .........................................................................................................31


3.8.1 Hm Repeat ......................................................................................................... 31
3.8.2 Hm While........................................................................................................... 31
3.8.3 Hm Append ........................................................................................................ 31
3.8.4 Hm 1+ ................................................................................................................ 32
3.8.5 Hm 1- ................................................................................................................. 32
3.8.6 Truy xut tng phn t trong danh sch .............................................................. 32

3.9. To hp thoi .................................................................................................33


3.9.1 Khi nim v file .DCL v cc thnh phn ca hp thoi ................................... 33
3.9.2. Phn loi cc ttile ................................................................................................ 34
3.9.3 Cc thuc tnh ca tile ......................................................................................... 40
3.9.4 Cc hm iu khin hp thoi ............................................................................. 41
3.9.5 Cc hm iu khin cc tile ................................................................................. 42
3.9.6 Mt s ch khi thit k hp thoi ..................................................................... 42

3.10. Cc hm x l mn hnh ho v thit b nhp ....................................44


3.10.1 Mn hnh ha ................................................................................................ 44
3.10.2 Gi hin th cc menu ....................................................................................... 45
3.10.3 Cc hm truy xut mn hnh ha v thit b nhp ........................................ 46
4. Chng trnh minh ho ..................................................................................................... 48

4.1 L Gujong .......................................................................................................48


4.2 Dm ch I ........................................................................................................51
5 Kt lun ............................................................................................................................. 55
6 Cc ti liu tham kho ....................................................................................................... 56

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

Li cm n
Li u tin, em mun by t lng bit n chn thnh i vi cc thy gio, c
gio trng i hc Dn lp Hi Phng, nhng ngi thy khng nhng tn tnh
truyn t kin thc m cn lun ng vin, quan tm, gip chng em trong hc tp
cng nh trong cuc sng sut bn nm hc ti trng.
Em xin chn thnh cm n thy gio Th.S Vn Chiu, ngi thy trc
tip ging dy v hng dn em trong qu sut trnh lm n tt nghip ny. Cm n
thy lun ng vin, hng dn v nh hng cho em trong thi gian qua.
Cui cng, hn ht em mun by t lng bit n ti cha m ti, cc thnh vin trong
gia nh em, cng nh tt c bn b em, nhng ngi lun bn ng vin, c v v
gip em trong hc tp cng nh trong cuc sng.

Sinh vin
Lu Th Thu Trang

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

Phn 1: Gii thiu


1 Tn v mc ch ca ti
Tn ti: Tm hiu ngn ng AutoLISP v ng dng trong AutoCAD
Mc ch ca ti: tm hiu AutoLISP v cch lp trnh cc tin ch cho phn
mm AutoCAD.

2 Gii thiu vi nt v c quan thc tp


Cng ty CP in T Tin Hc Vin Thng c tin thn l Cng Ty u T v
Pht Trin K Thut Pht Thanh Truyn Hnh Hi Phng c thnh lp nm 1993.
n nm 1996 cng ty i tn thnh Cng ty dch v tin hc Hi Phng (quyt nh s
25/4Q-UB) trn c s hp nht hai n v: Cng Ty u T v Pht Trin K Thut
Pht Thanh Truyn v Cng ty in t tin hc Hi Phng. Nm 2004, thc hin ngh
quyt TW3, cng ty chuyn thnh Cng ty c phn in t tin hc Vin Thng (Cty c
phn c s gp vn ca Nh Nc. Giy chng nhn ng k kinh doanh Cty c phn
s 0203000819-Quyt nh s 1869/Q-UB ngy 22/4/2004 ca y Ban Nhn Dn
thnh ph Hi Phng).
Ngy 01/5/2004 Cty C Phn in T Tin Hc Vin Thng chnh thc i vo
hot ng vi tng vn iu l l 3 t VN ng, tn giao dch quc t l Electronic
Telecommunication Informatic Joint.
Tr s chnh ca Cty: s 18 Trn Hng o, phng Hong Vn Th, qun
Hng Bng, thnh ph Hi Phng
Cng ty C Phn in T Tin Hc Vin thng kinh doanh cc ngnh ngh
sau:
- Kinh doanh v dch v hng in t, in lnh, in my, vt t, thit b v
cc dng dn dng. i l hng in my.
- Sa cha bo hnh, lp gip cc thit b truyn thanh, truyn hnh, tin hc.
- Sn xut my thu thanh FM, my tng m v ng ten thu pht v tuyn.
- Vn ti v dch v vn ti hng ha.
- Dch v vn ha th thao.
- Lp t bo dng sa cha cung ng vt t thit b truyn hnh cp MMDS.
- Kinh doanh khch sn nh ngh v cho thu vn phng .
- Kinh doanh cc thit b tin hc v o to tin hc .
- Sn xut bao b v bng km.
- Xy dng cng trnh dn dng, cng nghip, giao thng thy li, thng
mi v ng ng cp thot nc.
- Kinh doanh vn ti hnh khch bng xe taxi.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

Phn 2: Ni dung
Li m u
Khi mi ra i, cng ngh thng tin khng c nhiu ng dng trong cuc sng
m ch yu phc v cho ngnh khoa hc c bn nhm gii quyt cc bi ton ln, mt
nhiu thi gian tnh ton hay nhng bi ton i hi s chnh xc gn nh tuyt i.
Trc kia, thit k ra cc cng trnh xy dng hay ch to ra chi tit my
mi, cc k s thit k phi tn rt nhiu thi gian thit k v tnh ton cc thng s
k thut sao cho chnh xc. Trong qu trnh thit k cc bn v bng tay h phi lp i
lp li mt s chi tit hay khi v sai phi thc hin bn v li t u. iu ny
khin cho ngi thit k mt rt nhiu thi gian v lm gim cht lng bn v. T
thc t , rt nhiu k s thit k mong mun c c cng c h tr mnh trong
cng vic thit k nhm nng cao cht lng bn v. Nm bt nhu cu ny, cc cng ty
phn mm cho ra i mt lot cc phn mm h tr nh AutoCAD, SAP,
AutoCAD Mechanical
Tuy nhin, trn thc t cc phn mm h tr cng ch p ng c cc yu
cu chung nht, tng qut nht ca cc k s thit k. V d nh trong ngnh thit k
cng trnh nh , cu ng, Vit Nam c nhng tiu chun ring do b Cng
Nghip t ra i vi cc bn v ny m khng theo tiu chun chung ca th gii.
Trong khi , cc phn mm h tr cng vic thit k li tun theo nhng tiu chun
chung ca th gii. Do bt buc ngi k s thit k phi t mnh thc hin cc
thao tc v cc chi tit tun theo cc tiu chun ca ring nc mnh d i khi vic
ny tn kh nhiu thi gian hay cc chi tit ny lp i lp li qua tng bn v.
C th ni trong s cc phn mm ca h thng CAD/CAM th AutoCAD ca
hng Autodesk l mt cng c tuyt vi ca k s mi ngnh ngh t in t, vi mch
ti ch to my, t v tuyn ti xy dng. C nhiu chng trnh v k thut tin ch
khc ra i nh ArchiCAD, COMPAS 3D, Turbo CAD... nhng c th ni trong lnh
vc v 2D, AutoCAD l ng trm.
iu y s d tn ti c l bi 2 l do[6]: 1- AutoCAD khng ngng hon
thin mnh, 2- AutoCAD ng cho ngi s dng cch t hon thin theo nhu cu
ring mt cch d dng. Trong AutoCAD c tn ti t nht l 3 ngn ng lp trnh ln
VisualLisp, VisualBasic v Visual C.
Vy thnh tho ngn ng lp trnh trong AutoCAD lm g?
Vic vit code trong AutoCAD ni ring v vic lp trnh thng chim thi
gian rt lu i vi ngi khng chuyn. Trong ba ngn ng k trn th Visual LISP
c yu thch hn c bi cu lnh n gin li c th s dng sn cc cu lnh ca
AutoCAD mt cch tin li. t cu lnh v t thut ton rc ri, d hc, d vit. Chnh
v th Visual LISP trong i a s ngi s dng l mt phng php hon thin, tch
hp cc lnh v c sn ca AutoCAD theo yu cu ca tng c nhn.
Visual Studio trong AutoCAD l cng c mnh nht gip t ph cc gii hn
ca cc cu lnh AutoCAD cho ngi s dng. V d nh khi v cu thang cun, cc

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD


mt phc tp bc cao, nu khng mun b hin r ch gp khc khi phng i t l th
ch c la chn duy nht l VS (trong AutoCAD 2007 h tr helix). VS cng l
cng c lp trnh dng cho cc bi ln nh t ng ha tnh ton n nh cho p
b tng, t ng ha thit k nh my thy in, chuyn d liu excel thnh a
hnh 3D....
VBA khng mnh nh VS, khng tin nh Visual LISP, bi th ngi hc
VBA thng l ngi c cn bn v VB v mun tit kim thi gian.
Ni n VisualLISP (Visual List Processor) th trc ht nn ni n
AutoLISP. AutoLisp, tp con ngn ng LISP, l ngn ng lp trnh bc cao thch hp
vi cc ng dng ho. AutoLISP l mt ngn ng thng dch, c vit theo c
php v th tc cht ch nh ngn ng LISP. Tuy nhin, n c b sung thm cc
hm ph hp vi AutoCAD.
S dng AutoLISP ta c th vit cc chng trnh marco to lnh mi cho
AutoCAD hoc cc chng trnh t ng thit k bn v c s dng thng xuyn,
thc hin vi cc lnh c sn ca AutoCAD gp phn tng nng sut thit k. Bn
c th s dng bt k trnh son tho vn bn no to cc chng trnh AutoLISP
v gi chng vo trong CAD kim tra v thc hin.
C th ni, lm ch lp trnh AutoCAD th AutoLISP chnh l cnh ca u
tin m bn cn vt qua.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

1. Khi qut v lp trnh trong AutoCAD


Cc ngn ng thng c s dng lp trnh cho AutoCAD gm c:
ActiveX, VBA, AutoLISP, Visua LISP v ObjectARX. Vic s dng ngn ng no
lp trnh cho AutoCAD l tu thuc vo mc ch ca chng trnh v thi quen lp
trnh ca mi ngi.
1.1 K thut t ng ActiveX (ActiveX Automation)
K thut t ng ActiveX c pht trin bi Microsoft trn nn tng kin
trc COM (m hnh i tng thnh phn). Bn c th s dng ActiveX tu chnh
AutoCAD, chia s bn v ca bn vi cc ng dng khc v t ng ho cc thao tc.
S dng ActiveX tch hp trong AutoCAD c hai u im sau y:
Chng trnh truy cp bn v AutoCAD c m rng i vi nhiu
mi trng lp trnh khc. Trc ActiveX, nhng chuyn vin thit k
gii hn ch trong AutoLISP hoc C++.
Chia s d liu vi nhng ng dng Windows nh Exel, Word d
dng hn.
1.2 AutoCAD VBA
S tch hp VBA vo AutoCAD cung cp mt cng c trc quan d s dng
ty chnh AutoCAD. V d bn c th to ra ng dng trch thuc tnh thng tin mt
cch t ng, chn kt qu trc tip vo bng tnh Exel v thc hin bt k s chuyn
i thng tin m bn cn.
C ba thnh phn c bn ca chng trnh VBA trong AutoCAD. u tin chnh
l AutoCAD, n c b thit lp i tng rng ln bao gm cc thc th, d liu, v
cc cu lnh AutoCAD. AutoCAD l mt cu trc ng dng m vi rt nhiu mc
giao tip. Thnh phn th hai l b giao tip t ng ActiveX AutoCAD, n thit lp
s giao tip vi cc i tng AutoCAD. Lp trnh trong VBA yu cu s hiu bit c
bn v ActiveX. Phn t th ba chnh l bn thn VBA. N c b thit lp i tng
i tng, t kho, hng sca ring n, cung cp chng trnh iu khin, g ri
v thi hnh.
S dng VBA cho AutoCAD c nhng u im sau:
Tc : ng dng trong cng tin trnh vi VBA, ActiveX chy
nhanh hn cc ng dng trong AutoLISP.
D s dng: ngn ng lp trnh v mi trng pht trin d s dng v
ci t vi AutoCAD.
Kh nng lin vn hnh gia cc window: ActiveX v VBA c thit
k s dng vi cc ng dng Windows khc v cung cp mt
ng dn tuyt vi trao i thng tin gia cc ng dng.
Cung cp nhiu mu khc nhau: s pht trin giao din nhanh chng
ca VBA cung cp mt mi trng hon ho cho cc ng dng mu,
d l nhng ng dng ny s c pht trin bi ngn ng khc.
D hc.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

1.3 AutoLISP v Visual LISP


AutoLISP da trn nn tng ca ngn ng lp trnh LISP, d hc v l mt ngn
ng lp trnh mnh. Do AutoCAD c b trnh thng dch LISP, bn c th a on
m AutoLISP du nhc lnh ca AutoCAD hoc ti cc file vo autocad chy.
Visual LISP (VLISP) l cng c phn mm c thit k thc hin cc chng
trnh AutoLISP.
AutoLISP c tng cng vi Visual LISP, a ra mt mi trng pht trin tch
hp (IDE) gm trnh bin dch, trnh g ri v nhng cng c pht trin khc tng
hiu sut. VLISP c thm nhiu kh nng v m rng ngn ng tng tc vi cc
i tng s dng ActiveX. VLISP cng cho php AutoLISP p ng nhng s kin
thng qua i tng phn ng.
Cc ng dng hay thng trnh AutoLISP c th tng tc vi AutoCAD bng
nhiu cch. Nhng thng trnh ny c th nhc ngi dng nhp cu lnh, truy cp
cu lnh c sn trong AutoCAD mt cch trc tip v inh dng hoc to cc i
tng trong c s d liu. Bng cch to cc thng trnh AutoLISP bn c th thm
nhng cu lnh c bit vo AutoCAD. Mt vi cu lnh chun ca AutoCAD thc ra
l nhng ng dng AutoLISP.
Do AutoCAD c th c on m AutoLISP mt cch trc tip m khng cn
bin dch. Trong khi Visual LISP a ra mt IDE, bn c th th nghim bng cch
a on m vo ti dng nhc lnh, n s cho bn nhn thy kt qu ngay lp tc.
1.4 ObjectARX
K thut ObjectARX cung cp nhng thit lp cho cc ng dng thit k phn
mm chia s d liu i tng thng minh.
ObjectARXTM (Phn m rng thi gian thc AutoCAD) l mt mi trng bin
dch ngn ng lp trnh pht trin cc ng dng AutoCAD. Mi trng lp trnh
ObjectARX bao gm mt s th vin lin kt ng chy trong mt khng gian a ch
ging nh AutoCAD v thao tc trc tip vi li cu trc c s d liu v m
AutoCAD. Nhng th vin ny c c u im ca kin trc m AutoCAD, cung
cp cc truy cp trc tip n cu trc c s d liu, h thng ho, v phng tin
hnh hc m rng cch lp v cc kh nng ca AutoCAD ti thi gian thc. Thm
vo , bn c th s dng DLLs to cc cu lnh mi thc hin chnh xc ging
nh cc cu lnh c sn ca AutoCAD.
C th ni, trong s cc ngn ng lp trnh m AutoCAD h tr th AutoLISP v
Visual LISP d hc v d tng tc vi AutoCAD hn c. Bn c th son tho cc
on m AutoLISP bng bt k trnh son tho no thm ch c th son tho ngay
trong AutoCAD m khng cn ci t cc chng trnh son tho ring nh VS,
VBA
Trong khun kh ca n ny, em xin trnh by v ngn ng AutoLISP_ c
xem nh l cch ca u tin tip xc vi lp trnh trong AutoCAD.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

Tm hiu AutoLISP v ng dng trong autoCAD

2. Gii thiu chung


2.1 Vi nt s lc v LISP
LISP_List Processing l mt chun ngn ng lp trnh c John McCarthay
pht trin vo nm 1956 trong d n nghin cu Artificial Intellegence. Phin bn u
tin LISP 1.5 c gii thiu vo u thp nin 60 v pht trin vi nhiu bin th nh
BBNLisp, Interlisp, MacLisp, NIL(New Implementation of Lisp), Franz Lisp Vo
thp nin 70 v u nhng nm 80 c my tnh chuyn dng nh Lisp Machines
c thit k ring chy nhng chng trnh LISP. n nm 1981, chun ha
LISP cc nh lp trnh tp hp v chun ha thnh Common LISP. Nm 1984
Golden Common Lisp tr thnh chun chnh thc cho my tnh IBM v sau ny pht
trin thnh XLISP- tin thn ca AutoLISP ngy nay.
2.2 Lch s pht trin AutoLisp
AutoLISP l mt nhnh ca Common LISP - mt ngn ng lp trnh c c
dng lp trnh cho tr tu nhn to. AutoLisp l ngn ng lp trnh thng dch, bn
c th chy trc tip chng trnh.
AutoLISP c pht trin trn nn ngn ng XLISP l ngn ng lp trnh trn
mi trng AutoCAD do David Betz xy dng ln v c cng b phin bn u
tin 2.18 vo thng 1nm 1986. Cng vi s pht trin ca AutoCAD cc phin bn
AutoLisp ngy cng c hon thin vi nhiu tnh nng mi cho n tn phin bn
Release 12 vo thng 6 nm 1992. Sau , s pht trin ca n b sao nhng bi hng
Autodesk ch n vic pht trin cc ngn ng mi. Tuy nhin n vn c duy tr
trong AutoCAD.
Vital-LISP c coi nh l mt phin bn m rng ca AutoLISP gm cc
phn IDE, debugger v complier c pht trin v bn bi cng ty th 3 Basis
Software. Vital LISP l phin bn mnh nht trong cc phin bn AutoLisp v c
tch hp trong VBA. AutoDesk mua li n v t tn l Visual Lisp, v trong mt
thi gian ngn bn n nh l mt phn mm add-on. N c tch hp vo
AutoCAD thay th cho AutoLisp trong AutoCAD 2000 phin bn ra i thng
3/1999. Sau Autodesk tm dng pht trin Visual LISP mt thi gian tp
trung pht trin VBA v ObjectARX. C th khng nh rng AutoLISP chnh l hin
thc ho ca LISP [6].
Ta c th k n mt vi phin bn tiu biu nh sau:
-Phin bn 2.5 tch hp vo AutoCAD R7 vi mt s tnh nng c bn v cc
tng tc vi cc i tng trong bn v .
- Phin bn 2.6 tch hp vo AutoCAD R7 vi chc nng 3D v mt s hm
mi getcorner,getword v initget .
-Phin bn tch hp vo AutoCAD R12 gii thiu mt s hm GUI v ngn ng
iu khin hp thoi DCL(Dialog Control Language) .
-Phin bn Visual LISPTM gii thiu cng AutoCAD R14 l mt mi trng
pht trin AutoLisp c lp trc quan vi s h tr ca cc cng c g ri .
- Visual LISPTM c chnh thc tch hp vo AutoCAD2000 v t n nay
c b sung nhiu tnh nng mi .
Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

10

Tm hiu AutoLISP v ng dng trong autoCAD


AutoLisp l mt ngn ng lp trnh rt mnh , bn s cn tn mt thi gian
hc v lm ch n .
2.3 u nhc im ca AutoLisp
u im
Lm vic rt tt v d dng vi im v cc yu t hnh hc.
Rt mm do , khng kht khe.
Khng cn trnh dch , lp trnh v thc hin lnh.
Chy c trn cc h iu hnh vi cng 1 file Lisp.
Qun l i tng vi List-kiu d liu rt thch hp trong qun l ta
im.
M ngun m v cng ng pht trin Autolisp rng ln.
Nhc im
Hnh thc khng p .
Khng c trnh bin dch .
Ngn ng trung gian nn thc thi chm .
Hu nh khng th tng tc vi h thng .
C th khng nh AutoLisp l ngn ng d tip cn so vi mt s ngn ng
lp trnh khc v n l ngn ng lp trnh theo kch bn. Tuy nhin c th tip cn
vi AutoLisp yu cu ngi hc phi c kim thc nn v lp trnh v nm vng v
AutoCAD, ng thi phi c kin thc nht nh v hnh hc. Chng trnh AutoLisp
l mt t hp nhng kch bn c nh trc nm iu khin AutoCAD thc thi theo
suy ngh ca ngi thit k .
a s mi ngi mun hc Autolisp l gii quyt nhng bi ton trong lnh
vc chuyn mn ca mnh. tip cn v ng dng tt Autolisp trong cng vic yu
cu ngi lp trnh phi c s lin h vi nhu cu cng vic thc t, iu ny ph
thuc rt ln vo s trng ca mi ngi. Bn ang thc hin mt vi thao tc
hon thin bn v ca mnh v bn cht nhn ra n c lp li lin tc. Mt tng ny
ra l bn cn thc hin mt on chng trnh Autolisp t ng thc hin cc thao
tc ny v chng trnh Autolisp c hon thnh.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

11

Tm hiu AutoLISP v ng dng trong autoCAD

3.Ngn ng lp trnh AutoLISP


3.1. Cn bn v AutoLisp
3.1.1 Xy dng biu thc AutoLISP
Khi ta nhp dng text ti dng nhc lnh th AutoCAD s so snh dng text vi
danh sch lnh ca n. Nu tng ng vi lnh trong AutoCAD th s thi hnh. Khi
code AutoLISP c chuyn vo trong AutoCAD th AutoCAD s chuyn code ny
n b bin dch AutoLISP.
Danh sch (List) l cu trc c bn trong AutoLISP. Danh sch l tp hp cc
phn t cha trong du ngoc n v cch nhau bi khong trng. C hai loi danh
sch l :
Biu thc
Danh sch d liu
Biu thc l thnh phn c bn nht trong cc chng trnh AutoLISP. Phn t
u tin ca biu thc l mt hm. Hm ny s c AutoLISP nh gi tr v tr v
kt qu.
Mt biu thc AutoLISP n gin ging nh mt biu thc ton hc.S khc
nhau ch yu gia chng la th t cc phn t v phi c du () trong AutoLISP.
Biu thc ton hc

Biu thc AutoLISP


hm
hm

1 + 2
Tham s

Command: ( + 1 2 )
Tham s

= 3
kqu

Gi tr tr v : 3

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

12

Tm hiu AutoLISP v ng dng trong autoCAD

3.1.2 Cch nhp biu thc AutoLISP:


Ta c th nhp ging nh nhp lnh AutoCAD:
Nhp trc tip ti dng nhc lnh.
Gi t menu.
Ti file chng trnh.
Nu biu thc khng b li, kt qu s c tr v ti dng nhc lnh. Nu b
li, thng bo li s xut hin km vi biu thc b li.
3.1.3 Cc hm s hc
a. Hm cng :nhn vo nhiu tham s v tr v tng cc tham s ny.
(+ [thams1 thams2] )
Hm tr :
( - [thams1 tham s2.])
Hm nhn:
(* [thams1 tham s2])
Hm chia:
(/ [thams1 thams2.])
Trong AutoLISP ta c th lng cc hm vi nhau tnh cc biu thc
phc tp. Khi chuyn cc biu thc ton hc phc tp thnh cc biu thc
AutoLISP, trc tin ta nn to cc biu thc mc su nht, sau chuyn
dn sang cc biu thc bn ngoi.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

13

Tm hiu AutoLISP v ng dng trong autoCAD


3.2. Bin v k hiu trong AutoLISP
Cc gi tr tnh nh tn hm AutoLISP, tn hm t to hay cc hng s gi
chung l cc k hiu, cc d liu thay i trong cc chng trnh gi l bin. D liu
cha trong cc bin thay i tu theo cc tham s cung cp cho chng trnh. Trong
hu ht cc chng trnh, d liu v cc bin c to ra v qun l l tng t nhau.
Tn gi ca chng ph thuc vo gi tr tnh hay ng. Tn bin v k hiu khng
phn bit hoa, thng.
3.2.1 Gn gi tr cho bin
C php: ( setq tnbin1 giatr1 tnbin2 gitr2..)
3.2.2 Gi tr tr v ca hm AutoLISP
Hm setq c th tr v gi tr rng nil, true T hoc cc s, chui, danh sch.
i du gi tr kiu s cha trong bin, ta dng hm tr vi mt tham s duy
nht.
Khi tham s ca hm l tn bin, AutoLISP s nh gi tr ca bin v s dng
gi tr ny lm tham s.
Kiu d liu cha trong bin phi ph hp vi kiu d liu m hm yu cu.
Cc d liu chui khng th dng lm tham s cho cc hm s hc.
3.2.3 S dng cc bin ti dng lnh AutoCAD
ly gi tr ca bin, ta t du ! trc tn bin.
VD: V ng trn vi bn knh X=10
(setq X 10 )
Cirlec
3P /2P / TTR / <Center point>:
Diameter /< Radius >: ! X
3.2.4 Cc quy nh v t tn bin
Tn bin c th cha bt k k t no, tr ( ) . v khong trng.
AutoLISP cha cc hng s to sn nh pi = 3.1415926, ta khng nn gn gi
tr khc cho cc hng s ny v gi tr c s b mt i khng ly li c.
Khng t tn bin trng vi tn hn AutoLISP.
Khng t tn qu di v phc tp.
Tn ngn d nhp, khi nhp khng b li v c truy xut nhanh hn.
3.2.5 Nhp gi tr cho tham s
C php: (getpoint [pt] [prompt])
Hm getpoint khng tham s s dng qu trnh tnh ton cho n khi ngi
dng nhp vo mt im hoc thot ra khi hm.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

14

Tm hiu AutoLISP v ng dng trong autoCAD


Hm ny tr v gi tr dng danh sch. AutoLISP khng xem danh sch ny
l biu thc ta dng hm quote hoc du .
3.2.6 Phm vi cc bin trong AutoLISP
Trong cc phin bn c ca AutoCAD, cc bin AutoLISP c khi to li
v nhn cc gi tr mc nh ban u khi ta to mi hoc m bn v khc. Do , cc
gi tr gn cho bin ch c tc dng trong phm vi mt bn v.
T AutoCAD 14, cc bin AutoLISP ch c khi to li khi ta ng ca s
chng trnh AutoCAD. Gi tr gn cho bin vn tn ti khi ta to mi hay m bn v
khc. Nu m nhiu chng trnh AutoCAD cng mt lc th bin ca chng trnh
ny khng th c truy xut bi chng trnh kia.
khi to li cc bin AutoLISP khi to mi hay m bn v khc trong cng
mt ca s chng trnh, ta gn gi tr bin h thng LISPINIT = 1 hoc m hp thoi
Preference/Compatibility nh du mc Reload AutoLISP between drawings.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

15

Tm hiu AutoLISP v ng dng trong autoCAD


3.3. File chng trnh AutoLISP
3.3.1 Tn file AutoLISP
Tn file c th di 256 k t, phn m rng l .LSP. Trong mt s trng hp
c th dng tn m rng khc : .mnl,
3.3.2 To file chng trnh
S dng cc trnh son tho notepad, MS word
S dng AutoCAD:
Lnh Vlide
Tools / AutoLISP / Visual Lisp Editor

Hnh1.Ca s son tho lnh


Ch :

Mt biu thc c th vit trn nhiu dng.


Dng cc khong trng chng trnh d c.
Mi biu thc AutoLISP phi c t trong du ngoc n.
Cc d liu kiu chui phi t trong du nhy chui. Nu chui
d liu khng t trong du nhy chui, AutoLISP s xem l
tn hm.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

16

Tm hiu AutoLISP v ng dng trong autoCAD


3.3.3 Gi file chng trnh AutoLISP
Hm load dng c file chng trnh, kim tra li c php, nh gi tr cc
biu thc v tr v gi tr ca biu thc cui cng.
C php : (load tnfile [onfailure])
Tn file: tn m rng mc nh l *.LSP. Khi cn thit ta phi cung cp
y tn file v ng dn.
VD: (load E:/Autolisp/vd.LSP)
hoc
(load E:\\Autolisp\\vd.lsp)
o onfailure: tham s tu chn: nu AutoLISP gp phi li khi thi
hnh hm load, n s tr v kt qu v gi tr ca tham s ny. Tham s
onfailure c th cha cc biu thc to ra cc hnh vi tng ng vi nguyn
nhn gy ra li: hin th thng bo li, cung cp ng dn th mc khc tm
kim file
o VD: (load vd Loi:khong tim thay file); lnh s tr v dng
thng bo li :Loi:khong tim thay file v khng tn ti file
vd.lsp trong my.
o Ngoi hm load ta cn s dng Appload ti cc ng dng
AutoLISP, ARX, ADS
3.3.4 Ch thch
Tt c cc k t ng bn phi du chm phy( ; ) cho n ht dng c xem
nh l ch thch trong AutoLISP. Cc ch thch c th ng u dng hoc
ng sau biu thc.

Ch thch c th ng gia biu thc, ch trong cp ;| ch thch |;


VD: (setq R ;| gn gi tr cho R |; 10 )

Hm prompt dng hin dng thng bo ln mn hnh. Hm ny hin kiu d


liu chui cha trong tham s Message v tr v gi tr nil.
C php: (prompt Message)
Princ tng t Prompt nhng khng tr v gi tr nil m tr v chui thng bo.
3.3.5 Cc hm t to
C php :
(defun [tn hm] [danh sch bin] [biu thc])
Tn hm: tn hm tun theo cc quy nh v t tn bin.
Danh sch bin: gm hai phn ngn cch nhau bi du /. Phn
th nht cha cc tham s cn thit khi gi hm, phn th hai
cha cc bin cc b ca hm.
Biu thc: khi hm c gi cc biu thc ny ln lt c
tnh.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

17

Tm hiu AutoLISP v ng dng trong autoCAD


V d: to hm nhn i gi tr tham s a vo
(defun nhandoi (n) (* 2 n))
3.3.6 Bin ton cc v bin cc b
Bin ton cc l cc bin vn gi nguyn gi tr trong phm vi bn v hin
hnh.
Bin cc b l cc bin c nh ngha trong phm vi mt hm v gi tr
ca n s mt khi i vic gi hm kt thc.
3.3.7 To cc lnh AutoCAD mi
Ta c th s dng mt trong hai c im sau p dng cho cc hm t
to: C: Option v S::Startup Option.
C: Option
c th s dng hm t to tng t lnh ca AutoCAD, ta t k
hiu C: vo trc tn hm trong phn nh ngha hm t to.
V d: xy dng hm v ng thng i qua 2 im
; nhp vo 2 im
(defun C:duongthang (/ diem1 diem2)
(prompt \n Ve duong thang qua hai diem)
(setq diem1 (getpoint \n nhap diem thu nhat))
(setq diem2 (getpoint \n nhap diem thu nhat))
(command LINE diem1 diem2 )
(prompt \n Hoan thanh) ;thong bao ket thuc ham
)
Ta c th ti file ny v gi lnh duongthang nh mt lnh ca
AutoCAD.
S::Startup Option
o Khi khi ng AutoCAD, hm ny nh ngha trong file
ACADR14.LSP s c t ng gi thi hnh. y l hm duy nht
c tnh cht ny.V c thc hin t ng nn n khng c cha
bt k tham s no. Thng thng hm ny c dng thc hin
cc thao tc khi to bn v.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

18

Tm hiu AutoLISP v ng dng trong autoCAD


3.4. Nhp d liu
3.4.1 Nhp s nguyn
C php: (getint [prompt])
V d: (getint \n Nhap vao so hang:)
3.4.2 Nhp s thc
C php: (getreal [prompt])
Cc s thc c cha di dng du chm ng vi chnh xc kp,
cung cp ti thiu 14 ch s thp phn c ngha.
3.4.3 Nhp chui
Chui nhp vo khng c qu 132 k t
C php : (getstring [prompt])
3.4.5 Tham s khng rng
Tham s khng rng l tham s ch chp nhn cc gi tr khc rng. C hai
cch cung cp tham s khng rng : dng bin T hoc dng mt gi tr c
th.
Bin T c AutoLISP nh ngha trc v c gi tr l T (True). Ta khng
nn thay i gi tr bin T.
3.4.6 Kim sot d liu nhp vo
Hm initget cung cp danh sch cc gi tr nhp hp l bng cch gn cc
bit kim tra (bit code) v danh sch cc t kho.
C php: (initget [bits] [string])
Hm getkword
Hm ny yu cu nhp d liu dng t kho
Hm ny ch chp nhn 2 bit code l 1 v 128
C php : (getkword [prompt])
3.4.7 Bin h thng
Ly gi tr bin h thng
C php : (getvar tn bin)
Gn gi tr bin h thng
C php : (setvar [tn bin] [gi tr])
Bin CmdEcho:
CmdEcho =1: kt qu tnh ton trung gian s hin ln mn hnh.
CmdEcho =0: kt qu tnh ton trung gian s khng hin ln mn
hnh.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

19

Tm hiu AutoLISP v ng dng trong autoCAD


3.5. Mt s hm c bn
3.5.1 Hm chuyn kiu d liu t chui thnh s v ngc li
AutoLISP cung cp cc hn getreal v getstring nhp s thc v chui. D
liu nhp vo c th s dng cho cc hm AutoLISP hoc cc lnh AutoCAD. Tuy
nhin trn thc t d liu c th nhp vo t cc ngun khc nhau v khng ng cc
dng mong mun. Do ta phi chuyn i kiu d liu t s sang kiu chui v
ngc li.
a. Hm ATOF (Ascii TO Floating point decimal): chuyn i mt chui thnh s
thc
C php: (Atof string)
V d:
(setq A 5.25 B 45 )
(atof 21)
;tr v 21.0
(atof A)
;tr v 5.25
b. Hm DISTOF (Distance TO Floating point decimal): tng t hm atof
C php: (distof string [mode])
V d :
(distof 8.2500E+01 1) ;tr v 82.5 MODE 1
(distof 82.50 2)
;tr v 82.5 MODE 2
(distof 6-10.50\ 3) ;tr v 82.5 MODE 3
(distof 6-10 \ 4) ;tr v 82.5 MODE 4
(distof 82 1/2 5)
;tr v 82.5 MODE 5
c. Hm ATOI (Ascii TO Integer): chuyn mt chui thnh s nguyn
C php: (Atoi string [mode])
V d:
(setq A 5.25 B 45 )
(atoi 5.55)
;tr v 5
(atoi A)
;tr v 3
(atoi 4.3E03)
;tr v 4
d. Hm RTOS (Real TO String): chuyn mt s thnh mt chui
C php: (Rtos number [mode [precision]])
e. Hm ITOA (Integer TO Ascii): chuyn s nguyn thnh chui
C php: (Itoa integer)
Hm itoa ch chp nhn tham s l s nguyn, khng nhn tham s l chui,
ch c mt tham s.

Khoa Cng Ngh Thng Tin_Trng i hc dn lp Hi Phng

20

Anda mungkin juga menyukai