You are on page 1of 40

LP TRNH NG DNG

Ngn ng AUTOLISP

I> TNG QUAN V NGN NG AutoLISP


1. Gii thiu chung:
LISP l ch vit tt ca cm t ting Anh: LISt Processor (X l danh sch)
AutoLisp l mt ng dng ca ngn ng Lisp c s dng trong mi trng AutoCad.
LISP l ngn ng lp trnh thuc nhm tr tu nhn to do MacCarthy son tho cui nhng nm
50. Vi AutoLisp ngi dng c th m rng v tu bin cc chc nng ca AutoCad.
Hin nay AutoLisp c hng Autodesk pht trin theo cc s hiu pht hnh ca
AutoCad. V cn bn nhng phin bn sau vn s dng c nhng chng trnh lp bng phin
bn trc, ngc li th khng c do c mt s bin h thng v lnh ca AutoCad gia cc
phin bn khng ging nhau nn vic dng chung c gp mt s tr ngi. Do vy yu cu ngi
lp trnh AutoLisp phi nm tht vng AutoCad s dng AutoLisp mt cch hiu qu.
AutoLisp l mt ngn ng lp trnh thng dch, ngha l dch n dng no thc hin
dng v cho kt qu, khng c trnh bin dch ring. Mt tp hp cc cu lnh ca AutoLisp
c gi l hm Lisp v tp (file) cha cc hm gi l tp (file) Lisp c phn m rng l *.Lsp.
Vi AutoLisp, ngi dng c th d dng truy cp n d liu ca AutoCad, c th thay
i, to mi, xo b cc i tng, thm cc thng tin vo bn v thc hin cc cng vic T
ng ho trong thit k...

2. Cc qui c ca AutoLisp:
a) Cch vit chng trnh ca AutoLisp
C 2 cch vit chng trnh AutoLisp:
- Vit trc tip:
Ti dng nhc Command: ca AutoCad ta c th g cc cu lnh theo c php ca AutoLisp.
Lnh ny s c thc thi ngay v cho kt qu trn mm hnh ti vng dng lnh, nhng lnh ny
khng lu tr c.
- Vit thnh chng trnh:
Dng chng trnh son tho (dng m ASCII) bt k hoc Visual LISP, vit thnh chng trnh
nh mt tp tin ngun c phn m rng *.lsp
Tn tp tun th theo qui c ca h iu hnh, thng khng qu 8 k t, gia cc k t khng
c khong trng.

21
LP TRNH NG DNG

b) Ti v chy chng trnh ng dng AutoLisp


T VLISP: Tools\ Load Text in Editor
T AutoCad: Tool\ Load Application hoc trn dng lnh Command: ap
AutoCad t ng ti ngay t khi khi ng hoc m bn v c 2 cch:
- t tn tp l ACAD.LSP v t trong th mc Support ca AutoCad
- Khi ti file ln u s dng Startup Suite\ Contents v chn ng dn cho file
c) Cc hm trong AutoLisp
AutoCad nhn v x l cc lnh trong hm ca AutoLisp theo c php sau:
- Tn hm do ngi dng nh ngha gm cc ch ci v con s tr cc k t c bit: nh: ? <
> , . * & ^ % $ # @ ! ~ \ | { } [ ] ..., tn hm khng nn qu di v phi d qun l.
- Hm v cu lnh ca AutoLisp phi c t trong cp du ngoc n, bt u bng ( v
kt thc bng )
- Hm c vit t tri qua phi theo kiu Ba-lan, ngha l phn t u tin sau du m ngoc
phi l tn hm (c sn hay do ngi lp trnh t nh ngha) hay ton t. Cc phn t ng
sau l cc tham s cn thit thc hin hm hay ton t .
- Phn cch gia tn hm (hay ton t) vi cc tham s, gia cc tham s vi nhau phi c t
nht mt du cch ( du Space).
- Mt cu lnh c th vit trn nhiu dng. Cc dng ch c th vit tht vo tu theo cu
trc on lnh cho d hiu.
- Khng phn bit ch hoa v ch thng, thng th tn hm nn vit bng ch thng, tn
cc lnh v cc bin h thng ca AutoCad vit bng ch hoa cho d c v chng trnh
sng sa hn.
- Bt k mt hm no cng tr v mt gi tr no , nu khng c gi tr tr v tr s mc nh
l nil.
- Li ch thch ghi trong chng trnh AutoLisp c ghi sau du ; v khng c thc thi
trong chng trnh.
d) Cc bin trong AutoLisp
- Cc bin ca chng trnh AutoLisp hot ng tng t nh cc bin ca chng trnh khc.
- Tn bin gm cc ch ci v cc con s (tr cc k t c bit: nh: ? < > , . * & ^ % $ # @ !
~ \ | { } [ ] ...), nu ch s ng u th tip sau phi l ch ci trnh nhm vi cc hng
s. Tn bin khng nn qu di
- Tn bin khng phn bit ch hoa v ch thng.

22
LP TRNH NG DNG

- C 2 loi bin:
+ Bin chung: l bin tn ti trong sut qu trnh lm vic ca AutoCad. kim tra gi
tr cu bin trong dm Command ca AutoCad g !ten_bin.
+ Bin ring: L bin ch tn ti bn trong mt hm. Kt thc hm bin ny nhn gi tr
Nil
Ch : Cc bin tham gia vo cc biu thc phi c gn gi tr hoc nh ngha nu khng ng
dng s b li.

23
LP TRNH NG DNG

II> CC KIU D LIU C BN TRONG AutoLISP


1. Kiu danh sch: (list)
y l kiu c trng ca ngn ng Lisp bao gm nhm cc gi tr ring l gm cc bin, cc
hng s, cc hm... cch nhau bng khong trng nm trong du ngoc n.
Danh sch c chia lm 3 loi chnh:
- Biu thc (expression list): Cha tn hm v cc tham s ca hm
- To im (Point Coordinate List): C hm Quote hoc du pha trc. y l trng
hp c bit ca danh sch kho d liu, trong thng tin lu tr l to im.
- Kho d liu (Data Storage List): C hm Quote hoc du pha trc c th cha bt k
kiu d liu no.
K hiu hon tr ca AutoLisp: LIST
V d: to ca 1 im c khai bo di dng danh sch: (1.0 1.0 1.0) hoc
(list 1.0 1.0 1.0)
2. Kiu s:
2.1. Kiu s nguyn
- Kiu s nguyn l s nguyn thng thng trong ton hc. Trong AutoLisp gii hn ca s
nguyn t: -32768 n +32767
- Cc php tnh trn s nguyn cho kt qu l mt s nguyn, nu l php chia cho kt qu l
mt s nguyn, phn d nu c s b ct b.
V d: (/ 5 2) cho kt qu l 2
- K hiu hon tr ca AutoLisp: INT
2.2. Kiu s thc
- Kiu s thc trong AutoLisp c chnh xc n 14 ch s sau du phy thp phn
- Cc s thc c th biu din theo dng ch thch khoa hc, qua mt s e hoc E c theo
sau bi s m ca con s .
- K hiu hon tr ca AutoLisp: REAL
3. Kiu chui:
- Chui k t l tp hp cc k t bt k t trong du ngoc kp . Trong AutoLisp chui di
khng qu 132 k t
- K hiu hon tr ca AutoLisp: STR

24
LP TRNH NG DNG

4. Kiu i tng v nhm i tng


4.1. Kiu i tng
- Mi i tng c v trong AutoCad u c qun l theo tn (ENAME Entity Name).
Mi tn i tng s lu tr ton b thng tin v i tng .
- K hiu hon tr ca AutoLisp: ENAME
4.2. Nhm i tng
- Nhm i tng (AutoCad selection set) l kiu c trng cho tp hp cha cc ENAME ca
cc i tng c la chn.
- Ta c th ly ENAME ca mt i tng trong tp hp cc i tng c chn
- K hiu hon tr ca AutoLisp: PICKSET
5. S Pi v Nil
- S Pi trong ton hc trong AutoLisp c k hiu l pi v nhn gi tr khng i l
3.1415926. Pi tham gia vo cc biu thc ton hc v l s o gc bng Radian
- Nil l k hiu ch ra rng bin hay hm khng c gi tr hoc biu thc lgc nhn gi tr
khng ng.

25
LP TRNH NG DNG

III> CC HM CHUN CA AutoLISP


1. Php gn
a. Hm (setq...):

Chc nng: Gn gi tr cho 1 bin

C php:
(setq b1 gt1 [b2 gt2] ...)
Gii thch:

Gn gt1 cho bin b1, gt2 cho bin b2 ... Mi bin nhn mt gi tr vit sau n
Gi tr c th l d liu, mt bin khc hoc mt biu thc xc nh trc
xo mt bin ra khi b nh: (setq bin Nil)
AutoCad thc hin lnh ca AutoLisp m khng hin th cc dng lnh hin trn mn
hnh ta gn gi tr 0 cho bin h thng CMDECHO bng lnh: (setq cmdecho 0)
b. Hm (setvar...):

Chc nng: Gn gi tr cho 1 bin h thng.

C php:
(setvar varname value)
Gii thch:
varname: Tn bin h thng
value: Gi tr cn gn
VD: (setvar FILLETRAD 10.00) ---> 10.00
c. Hm (set...):

Chc nng: Gn tn bin cho 1 bin

C php: (set bin1 bin2)

Gii thch:
Gn tn bin2 cho bin1
Mi khi ly gi tr ca bin1 th thc cht l ly gi tr ca bin2
VD: (setq a 10.00)
(set b a)
---> b = 10.00

26
LP TRNH NG DNG

2. Cc hm chuyn lnh t AutoLisp sang AutoCad


a. Hm (Load ...)

Chc nng: Gi mt chng trnh ng dng vo AutoCad

C php:
(Load Tn_tp)
Gii thch:
Tn_tp: l tn tp tin c phn m rng *.LSP, .ARX, .ADS hoc .EXE
Nu chng trnh t ngoi th mc lm vic ca AutoCad th phi ch r ng dn ca
tp tin
b. Hm (Command ...)

Chc nng: Thc hin lnh ca AutoCad

C php:
(Command Tn_lnh [cc p ng li nhc] [cc tu
chn]...)
Gii thch:
Tn_lnh: l tn cc lnh ca AutoCad
[cc p ng li nhc] v [cc tu chn]: Tun theo cc lnh ca
AutoCad
Nu Tn_lnh = _Tn_lnh hoc _.Tn_lnh Autocad s truy cp cc ga
tr trong bng s liu ca lnh thc thi trong AutoCad
VD: (Command CIRCLE (100.00 100.00) 10.00)
---> V ng trn tm c to (100.00, 100.00) c bn
knh 10.00
3. Cc hm nhp liu t ngi dng
Cc hm sau s tm dng chng trnh yu cu ngi dng nhp d liu vo t bn phm
hoc chut
a. Hm (getpoint ...)

Chc nng: Ch ngi dng nhp to mt dim

C php:
(getpoint [point] [prompt])

27
LP TRNH NG DNG

Gii thch:
point: Nu c, cho bng 1 danh sch im , l im th nht, cn im ngi dng
nhp vo s l im th 2. im th 2 c th cho bng to tng i.
[prompt]: Nu c, l dng nhc hoc gii thch v d liu s nhp. Dng nhc phi
c t trong ngoc kp
VD:
(setq pt1 (getpoint Cho tam duong tron:))
Kt qu cho trn dng nhc:
Cho tam duong tron:
b. Hm (getdist ...)

Chc nng: Ch ngi dng nhp vo:


- Mt s thc l mt khong cch
- To ca 1 hoc 2 im
Nu nhp to im, AutoLisp hon tr khong cch gia hai im
C php:
(getdist [point] [prompt])
Gii thch:
point: ging nh getpoint
[prompt]: l dng nhc hoc gii thch v d liu s nhp
VD:
(setq r1 (getdist Cho ban kinh duong tron:))
Kt qu cho trn dng nhc:
Cho tam duong tron: - Nhp vo mt s thc dng hoc
- Nhp to mt im, dng nhc xut hin:
Second point: Tip tc nhp vo im th 2 ly
khong cch gi 2 im
c. Hm (getangle ...)

Chc nng: Ch ngi dng nhp vo:


- Mt s thc l s o bng ca gc hoc cung trn
- To ca 1 hoc 2 im
Nu nhp to im, AutoLisp hon tr gc nghing gia on thng ni hai im so vi
phng nm ngang

28
LP TRNH NG DNG

Kt qu tr v: REAL ( s o l Radian)
C php:
(getangle [point] [prompt])
Gii thch:
point: ging nh getpoint
[prompt]: l dng nhc hoc gii thch v d liu s nhp
VD:
(setq a1 (getangle Cho goc nghieng cua duong thang:))
Kt qu cho trn dng nhc ch ngi dng nhp s liu:
Cho goc nghieng cua duong thang:
d. Hm (getint ...)

Chc nng: Ch ngi dng nhp vo mt s nguyn


Kt qu: INT
C php:
(getint [prompt])
Gii thch:
[prompt]: l dng nhc hoc gii thch v d liu s nhp
e. Hm (getreal ...)

Chc nng: Ch ngi dng nhp vo mt s thc


Kt qu: REAL
C php:
(getreal [prompt])
Gii thch:
[prompt]: l dng nhc hoc gii thch v d liu s nhp
f. Hm (iniget...)

Chc nng: Kim sot cc kiu gi tr nhp vo t ngi dng cho cc hm nhp s liu h
getxxx. Hm ny, nu dng phi t trc cc hm nhp s liu h getxxx cn khng ch
C php:
(iniget m_s [Chui_nh_dng])

29
LP TRNH NG DNG

Gii thch:
m_s: Gi tr m s kim sot cch nhp s liu vo. Gi tr m_s v cc hm chu
tc ng cho trong bng sau:
M s Chc nng kim sot Hm chu tc ng
Bnh thng tr v Nil nu g ENTER khi Ton b cc hm getxxx tr
0
cha nhp s liu hm getstr
getint, getreal, getdist,
Khng cho php ngi dng g ENTER
1 getangle, getpoint,
khi cha nhp s liu
getkword...
getint, getreal, getdist,
2 Khng cho php nhp s 0
getangle, getpoint,
4 Khng cho php nhp s m getint, getreal, getdist,
Cho php nhp to im nm ngoi
8 getpoint, getcorner
LIMITS ca bn v

Nu m s c gi tr tng ca mt gi tr cho trong bng th chc nng kim sot s l


tng cc chc nng.
Chui_dnh_dng: L mt chui k t dng lm t kho h tr cho cc hm getxxx
c cc tu chn khi nhp s liu
+ Mi t kho cch nhau mt du trng
+ Cc ch ci vit hoa vit lin nhau trong t kho s l du hiu ca t kho. Khi nhp
s liu, ngi dng g theo cc ch ci vit hoa la chn
+ Nu tt c cc ch ci trong t kho u vit hoa th cc t kho cch nhau bng du
phy (,)
VD1:
(iniget 1)
(setq a1 (getdist Cho ban kinh:))
Kt qu cho trn dng nhc ch ngi dng nhp s liu:
Cho ban kinh:
Nu ngi dng g ENTER m khng nhp g c s c dng thng bo:
Requires numeric distance or two poionts
Cho ban kinh:
i ngi dng nhp liu chng trnh mi tip tc

30
LP TRNH NG DNG

VD2:
(iniget 1 DAi ROng)
(setq d1 (getdist DAi/ROng/<Cho duong cheo>:))
Kt qu cho trn dng nhc ch ngi dng nhp s liu:
DAi/ROng/<Cho duong cheo>:
Ngi dng c th nhp s thc hoc cc ch ci DA hoc RO
g. Hm (getkword ...)

Chc nng: Ch ngi dng nhp vo mt k t hoc mt chui k t lin nhau khng c du
trng
Kt qu tr v: STR
C php:
(getkword [prompt])
Gii thch:
Hm ny lun t sau hm initget, nu chui nhp vo khng trng vi t kho trong
hm initget trc , getkword yu cu nhp li
Hm ny thng p dng khi ngi dng nhp vo cc la chn
[prompt]: l dng nhc nn ch r cc t kho ngi dng d nhp d liu.
VD:
(initget VUong DAgiac:)
(getkword Nhap cac lua chon: VUong/DAgiac:)
Kt qu cho trn dng nhc:
Nhap cac lua chon: VUong/DAgiac:
Ta ch cn nhp cc ch ci:
VU kt qu tr v: vuong
DA kt qu tr v: dagiac
h. Hm (getstring ...)

Chc nng: Ch ngi dng nhp vo mt chui k t . Nu chui k t di hn 132 k t,


hm ch ly 132 k t
Kt qu: STR
C php:
(getstring [string] [prompt])

31
LP TRNH NG DNG

Gii thch:
[string]: Nu khng c hoc nhn gi tr Nil, khng c nhp du trng, nu g
du trng tng ng g ENTER kt thc nhp.
Nu c gi tr khc Nil cho php nhp c du trng. Kt thc nhp phi g ENTER
[prompt]: l dng nhc hoc gii thch v d liu s nhp
i. Hm (getvar ...)

Chc nng: Ly gi tr hin hnh ca bin h thng trong AutoCad

C php:
(getvar varname)
Gii thch:
varname: Tn bin h thng
VD:
(getvar DIMLFAC 10)
---> cho gi tr bin DIMLFAC = 10
4. Cc hm ton hc
4.1. Cc php tnh
Chc nng: Thc hin cc php tnh s hc thng thng

C php:
(php_ton tham_s1 [tham_s2]...)
Gii thch:
php_ton: l cc php tnh ton s hc thng thng
Php cng: +
Php tr: -
Php nhn: *
Php chia: /
Php tng thm 1: 1+
Php gim i 1: 1-
tham_s1: Trong php tr v chia th tham_s1 l s b tr hoc b chia
tham_s2...: Trong php tr v chia th tham_s2... l s tr hoc s chia
Trong php tng thm 1 hoc gim i 1 th ch c 1 tham s

32
LP TRNH NG DNG

Ch :
Tham s c th l hng hoc biu thc
Kt qu tnh ph thuc ch yu vo kiu ca tham s tham gia php tnh.

4.2. Cc php so snh


Chc nng: Thc hin cc php so snh trong cc biu thc logc

C php:
(php_so_snh tham_s1 [tham_s2]...)
Gii thch:
php_so_snh: Bao gm:
Bng: =
Khng bng (khc): /=
Ln hn: >
Ln hn hoc bng: >=
Nh hn: <
Nh hn hoc bng: <=
V: and
Hoc: or
Ph nh: not
tham_s1, tham_s2: l cc i tng so snh
Ch :
Tham s c th l hng s, bin s hoc biu thc
Kt qu tnh ph thuc ch yu vo kiu ca tham s tham gia php tnh.
Ring i vi thc, my tnh coi s 0 ch l xp x 0 nn khi dng du = so snh vi s 0
c th tr gi tr Nil. Trong trng hp ny nn dng (equal...) so snh

33
LP TRNH NG DNG

4.3. Cc hm so snh
a. Hm (eq ...)

Chc nng: Thc hin so snh xem hai tham s c thc s bng nhau hay khng
Kt qu: cho T (ng) hoc Nil (sai)
C php:
(eq tham_s1 tham_s2)
Gii thch:
Kt qu ng khi tham_s1 ging ht tham_s2 (cng l kiu tham s, cng l s...)

b. Hm (equal ...)

Chc nng: Thc hin so snh xem hai tham s c thc s bng nhau hay khng theo tiu
chun l chnh xc km theo
Kt qu: cho T (ng) hoc Nil (sai)
C php:
(equal tham_s1 tham_s2 [_chnh_xc])
Gii thch:
Kt qu ng khi tham_s1 bng tham_s2 vi sai s l _chnh_xc (nu c)
c. Hm (max ...)

Chc nng: Tm gi tr ln nht trong mt dy cc tham s


Kt qu: tr v gi tr ln nht
C php:
(max tham_s1 tham_s2 [tham_s3]...)
d. Hm (min ...)

Chc nng: Tm gi tr nh nht trong mt dy cc tham s


Kt qu: tr v gi tr nh nht
C php:
(min tham_s1 tham_s2 [tham_s3]...)

34
LP TRNH NG DNG

e. Hm (gcd ...)

Chc nng: Tm c s chung ln nht trong mt dy cc tham s kiu s nguyn

C php:
(gcd tham_s1 tham_s2 [tham_s3]...)
Ch :
tham_s1 tham_s2 [tham_s3]...: Phi l kiu s nguyn
f. Hm (rem ...)

Chc nng: Tm phn d trong php chia 2 tham s.


Kt qu: tr v s d
C php: (rem tham_s1 tham_s2)

Gii thch:
tham_s1: S b chia
tham_s2: S chia

4.4. Cc hm i s
C php:
(sqrt number): Ly cn bc 2 ca s thc dng number
(expt c_s s_m): Ly lu tha bc s_m ca s thc c_s
(exp s_m): Ly lu tha bc s_m ca c s e
(abs number): Ly gi tr tuyt i ca mt s number
(log number): Ly logarit c s e ca mt s number
4.5. Cc hm lng gic
C php:
(sin angle)
(cos angle)
(atan mumber1 [number2])
Ch :
angle: L s o gc ly theo radian
mumber1 [number2]: L s thc
Kt qu ca hm atan l gc c s o l radian

35
LP TRNH NG DNG

4.6. Cc hm kim sot dng s


e. Hm (fix ...)

Chc nng: Tr v phn nguyn ca mt s. Phn s nguyn ny khng c lm trn

C php:
(fix number)
Ch :
Hm ny c s dng nh mt b lc d liu. D liu l s nguyn hay s thc s c
lc thnh s nguyn trc khi c gn cho tham s
Ngoi ra ta c th s dng hm ny ly phn thp phn (s dng kt hp vi php tr)
b. Hm (fload ...)

Chc nng: Chuyn mt s c kiu nguyn hoc thc sang kiu s thc

C php:
(fload number)

5. Cc hm to cu trc iu khin
a. Hm (if ...)

Chc nng: Ra iu lin thc hin mt s lnh

C php:
(if testexpr thenexpr [elseexpr])
Gii thch:
testexpr: L biu thc kim tra iu kin
thenexpr: Biu thc lnh c thc hin nu biu thc testexpr nhn gi tr T
elseexpr: Biu thc lnh c thc hin nu biu thc testexpr nhn gi Nil. Nu
khng c biu thc ny, hm khng thc hin v tr v gi tr nil
b. Hm (while ...)

Chc nng: Thc hin cc biu thc, lnh trong hm mt s ln lp c iu kin

C php:
(while testexpr expr)

36
LP TRNH NG DNG

Gii thch:
testexpr: L biu thc kim tra, khi no testexpr nhn gi tr nil, vng lp chng
trnh ngng thc hin
expr: Biu thc, lnh cn thc hin
V d:
(defun C:vdt()
(setq n 1)
(setq pt1 (list 0 0))
(while (<= n 10)
(setq pt2 (list n (+ n 0.5)))
(setq n (1+ n))
(command "LINE" pt1 pt2 "")
)
(command "ZOOM" "e")
)

c. Hm (repeat ...)

Chc nng: Thc hin cc biu thc, lnh trong hm mt s ln lp nht nh

C php:
(repeat int [expr]...)
Gii thch:
int: L s nguyn ch ln lp
expr: Biu thc, lnh cn thc hin
V d:
(defun C:vdt()
(setq n 1)
(setq pt1 (list 0 0))
(repeat 10
(setq pt2 (list n (+ n 0.5)))
(setq n (1+ n))
(command "LINE" pt1 pt2 "")
)
(command "ZOOM" "e")

37
LP TRNH NG DNG

d. Hm (progn ...)

Chc nng: Tp hp cc biu thc thnh mt biu thc v bt cc biu thc ny thc hin
theo mt iu khin chung
C php:
(progn [expr]...)
Gii thch:
expr: Biu thc, lnh cn thc hin
6. Cc hm x l danh sch
a. Hm (quote ...) hoc (...)

Chc nng: Tr ra 1 biu thc, kiu l kiu ca biu thc

C php:
(quote expr) hoc (expr)

Gii thch:
expr: Biu thc. Nu biu thc l s c th to danh sch im, nu l bin mc d
gn gi tr bng s cng khng to c danh sch im
b. Hm (list ...)

Chc nng: To ra mt danh sch

C php:
(list expr)
Gii thch:
expr: Biu thc, t nht c mt tham s. Biu thc l bin hay l s cng to c danh
sch im
c. Hm (car ...)

Chc nng: Hon tr phn u tin ca danh sch. Kt qu l mt gi tr, kiu l kiu ca
thnh phn .
C php:
(car list)
Gii thch:
list: L mt danh sch

38
LP TRNH NG DNG

d. Hm (cadr ...)

Chc nng: Hon tr phn phn t th 2 ca danh sch. Kt qu l mt gi tr, kiu l kiu
ca thnh phn .
C php:
(cadr list)
e. Hm (caddr ...)

Chc nng: Hon tr phn phn t th 3 ca danh sch. Kt qu l mt gi tr, kiu l kiu
ca thnh phn .
C php:
(caddr list)
f. Hm (last ...)

Chc nng: Hon tr phn phn t cui cng ca danh sch. Kt qu l mt gi tr, kiu l
kiu ca thnh phn .
C php:
(last list)

g. Hm (nth ...)

Chc nng: Hon tr phn phn t th int ca danh sch. Kt qu l mt gi tr, kiu l kiu
ca thnh phn . Th t bt u 0, 1, 2, ...
C php:
(nth int list)
Gii thch:
int: L th t ca phn t cn ly gi tr
list: L mt danh sch
h. Hm (cdr ...)

Chc nng: Hon tr danh sch khng c phn t u

C php:
(cdr list)
i. Hm (reverse ...)

Chc nng: Hon tr danh sch ngc vi danh sch ban u

C php:
(reverse list)

39
LP TRNH NG DNG

k. Hm (length ...)

Chc nng: Hon tr s thnh phn trong danh sch

C php:
(length list)
m. Hm (append ...)

Chc nng: Gp cc danh sch thnh phn thnh mt danh sch n

C php:
(append list1 list2 ...)
n. Hm (member ...)

Chc nng: To mt danh sch mi t mt danh sch c theo mt thnh vin cho trc,
danh sch mi c to ra c cc thnh vin l cch thnh vin ca danh sch gc bt u
t thnh vin expr cho n thnh vin cui
C php: (member expr list)

Gii thch:
expr: L mt trong cc phn t ca mt danh sch
list: L mt danh sch gc
o. Hm (assoc ...)

Chc nng: Tr v mt danh sch con trong danh sch phc hp

C php:
(assoc item alist)
Gii thch:
item: L phn t u tin ca danh sch con tr v, nu khng tm thy danh sch con
no cha phn t u tin l item, hm s tr gi tr nil
alist: Phi l mt danh sch phc hp
v d:
(setq alist ((1 ONE) (2 TWO) (3 THREE)))

(assoc 1 alist) --->(1 ONE)


(assoc 2 alist) --->(2 TWO)

40
LP TRNH NG DNG

p. Hm (subst ...)

Chc nng: Thay th cc thnh vin ca mt danh sch

C php:
(subst newitem olditem list)
Gii thch:
newitem: L thnh vin mi
oldwitem: L thnh vin c
list: Danh sch gc
v d:
(setq alist ((1 ONE) (2 TWO) (3 THREE)))
7. Cc hm nhp xut d liu
a. Hm (promt ...)

Chc nng: Xut mt k t ra mn hnh (dng command)

C php:
(promt msg)
Gii thch:
msg: Chui k t cn xut ra nh mt dng thng bo

b. Hm (open ...)

Chc nng: M mt tp tin d liu trn a

C php:
(open filename mode)
Gii thch:
filename: Tn tp tin (file) cha d liu.
Phn m rng ca tp tin l *.txt hoc bt k do ngi dng t
Nu tp tin ny khng nm trong th mc lm vic ca Autocad phi cho ng dn
mode: M ca tp tin
r : c tp tin ang c trn a
w : Ghi vo tp tin, mi ln ghi to mt tp tin mi
a : Ghi tip vo tp tin ang tn ti hoc to tp tin mi ghi nu cha c tp tin trn
a

41
LP TRNH NG DNG

c. Hm (close ...)

Chc nng: ng tp tin d liu ang m bng hm open gii phng b nh cho cc
chng trnh khc lm vic
C php:
(close filename)
Gii thch:
filename: Tn tp tin cha d liu c m bng hm open
d. Hm (findfile ...)

Chc nng: Tm tp tin d liu trn a, nu thy AutoLisp s tr v tn tp tin km theo


ng dn
C php:
(findfile filename)
e. Hm (read-line ...)

Chc nng: c mt dng k t t bn phm hoc tp tin

C php:
(read-line [fp])
Gii thch:
fp : Tn tp tin cha d liu va c m bng lnh open
Nu c ghi fp hm s c mt tp tin ny v hon tr 1 chui k t
Nu khng c hm s c mt chui k t c g vo t bn phm
Mi ln gi hm (read-line...) mt dng d liu tip theo c c vo, khi no
khng cn d liu th kt qu l nil
f. Hm (read...)

Chc nng: c mt chui k t v hon tr gi tr tham s ph hp vi kiu d liu nhp


vo
C php:
(read str)
Gii thch:
str : Chui k t hoc mt bin kiu chui

42
LP TRNH NG DNG

g. Hm (read-char...)

Chc nng: c mt k t t bn phm hoc t tp, kt qu tr v l mt s nguyn m ASCII


ca k t va c
C php:
(read-char [fr])
Gii thch:
[fr] : Tn tp tin cha d liu c m bng lnh open, nu khng c my ch ngi dng
nhp vo t bn phm
h. Hm (write-char...)

Chc nng: Ghi mt k t ra vng dng lnh trn mn hnh hoc vo tp tin

C php:
(write-char n [fr])
Gii thch:
n : S nguyn m ASCII ca k t ghi vo
[fr] : Tn tp tin cha d liu c m bng lnh open, nu khng c my ch ngi dng
nhp vo t bn phm
i. Hm (write-line...)

Chc nng: Ghi mt chui k t ra vng dng lnh trn mn hnh hoc vo tp

C php:
(write-line str [fr])
Gii thch:
str : chui
[fr] : Tn tp tin cha d liu c m bng lnh open, nu khng c my ch ngi dng
nhp vo t bn phm
k. Cc hm prin1, princ, print

Chc nng: In kt qu ra vng dng lnh trn mn hnh hoc vo tp

C php:
(prin1 expr [fr])
(princ expr [fr])
(print expr [fr])

43
LP TRNH NG DNG

Gii thch:
expr : Biu thc
[fr] : Tn tp tin cha d liu c m bng lnh open, nu khng c my ch ngi dng
nhp vo t bn phm
S khc nhau gia cc hm:
- Cc k t iu khin nh: \n, \r... khng c tc dng i vi hm prin1
m c tc dng i vi hm princ
- Hm print lun ghi kt qu xung dng mi v sau kt qu c mt du trng
8. Cc hm kim tra d liu
a. Hm (type...)

Chc nng: Xc nh kiu d liu

C php:
(type item)
Gii thch:
item : L bin hay biu thc

b. Hm (atom...)

Chc nng: Nu tham s khng phi l danh sch tr ra T, ngc li Nil

C php:
(atom item)
Gii thch:
item : L tham s
c. Hm (listp...)

Chc nng: Nu tham s l danh sch tr ra T, cc kiu cn li Nil

C php:
(listp item)
Gii thch:
item : L tham s

44
LP TRNH NG DNG

d. Hm (numberp...)

Chc nng: Nu tham s l s tr ra T, cc kiu cn li Nil

C php:
(numberp item)
Gii thch:
item : L tham s
e. Hm (nminusp...)

Chc nng: Nu tham s l s m tr ra T, cc trng hp khc Nil

C php:
(nminusp number)
f. Hm (zerop...)

Chc nng: Nu tham s l s 0 tr ra T, cc trng hp khc Nil

C php:
(zerop number)

9. Cc hm chuyn i kiu d liu


a. Hm (angtof...)

Chc nng: Chuyn i chui k t (cha cc ch s) thnh s thc dng cho gc v tr v s


o gc bng radian
C php:
(angtof str [mode])
Gii thch:
str : L chui cha ch s
mode: L s nguyn xc nh dng n v nhp vo, nu khng c s tun theo cc ci t ca
lnh units
Mode nhn cc gi tr sau:
0 : Dng thp phn ()
1 : Dng / pht/ giy
2 : Dng Grads
3 : Dng Radian
4 : Dng trc c c km theo ch hng
b. Hm (angtos...)

45
LP TRNH NG DNG

Chc nng: Chuyn i s o gc thnh chui k t (cha cc ch s)

C php:
(angtos angle [mode] [precision]])
Gii thch:
angle : L s o gc bng radian
mode : L s nguyn xc nh dng n v xut ra, nu khng c s tun theo cc ci t ca
lnh UNITS. Cc gi tr ca mode tng t nh hm (angtof...)
precision : L chnh xc (s ch s sau du phy thp phn)
c. Hm (atof...)

Chc nng: Chuyn i chui k t thnh s thc

C php:
(atof str)
Gii thch:
str : L chui k t (cha cc ch s)
d. Hm (atoi...)

Chc nng: Chuyn i chui k t thnh s nguyn

C php:
(atoi str)
Gii thch:
str : L chui k t (cha cc ch s)
e. Hm (itoa...)

Chc nng: Chuyn i s nguyn thnh chui k t

C php:
(itoa int)
Gii thch:
int : L s nguyn, nu cho kiu khc hm s bo li

46
LP TRNH NG DNG

f. Hm (rtos...)

Chc nng: Chuyn i s thc thnh chui k t

C php:
(rtos number [mode [precision]])
Gii thch:
number : L mt s
mode: L m iu khin dng xut ra chui k t
Mode nhn cc gi tr sau:
1 : Dng khoa hc
2 : Dng thp phn
3 : Dng k thut
4 : Dng kin trc
5 : Dng hu t (phn s)
precision : L chnh xc (s ch s sau du phy thp phn)
g. Hm (distof...)

Chc nng: Chuyn i chui k t (cha cc ch s) thnh s thc

C php:
(distof str [mode])
Gii thch:
str : L chui k t cha cc ch s
mode: L m iu khin nhp vo ca s thc nhn cc gi tr sau:
1 : Dng khoa hc
2 : Dng thp phn
3 : Dng k thut
4 : Dng kin trc
5 : Dng hu t (phn s)
h. Hm (fix...)

Chc nng: Chuyn i s thc thnh s nguyn, ct b phn thp phn

C php:
(fix number)

47
LP TRNH NG DNG

Gii thch:
number : L mt s thc
i. Hm (fload...)

Chc nng: Chuyn i s thnh s thc

C php:
(fload number)
Gii thch:
number : L mt s nguyn hoc s thc
10. Cc hm x l chui k t
Trong AutoLisp chui l cc k t c vit trong ngoc kp . Du \ km theo cc ch ci c
tc dng iu khin:
Cch vit ngha
\\ : \
\n : Xung dng
\t : Tab
\e : ESC
\ :
\r : ENTER

a. Hm (strcat...)

Chc nng: Ni cc chui thnh phn thnh mt chui chung

C php:
(strcat str1 str2 [str3]...)
Gii thch:
str1, str2, str3... : L cc chui thnh phn cn c ghp li
b. Hm (strcase...)

Chc nng: Chuyn chui ra ch in hoa hoc ch thng

C php:
(strcase str which)

48
LP TRNH NG DNG

Gii thch:
str: L chui cn chuyn i
which: Nu khng c, tt c chui bin thnh ch in hoa, nu l ch T tt c chui tr thnh
ch thng
c. Hm (strlen...)

Chc nng: m s k t trong chui

C php:
(strlen str)
Gii thch:
str: L chui cn m
d. Hm (substr...)

Chc nng: Trch mt phn ca chui k t thnh mt chui khc

C php:
(substr str start [length])
Gii thch:
str: L chui cn trch
start: V tr k t trong chui cn trch ra
length: Chiu di ca chui mi (s k t), nu khng c th chui mi bt u t v tr
start cho n ht

11. Cc hm x l chui k t

11.1. Cc hm thao tc vi cc i tng c lp


a. Hm (entlast)

Chc nng: Chn i tng v cui cng trong bn v v tr v m ENAME ca n

C php:
(entlast)
Gii thch: Hm ny khng c i s
b. Hm (entnext...)

Chc nng: Chn i tng v u tin trong bn v hoc i tng tip sau mt i tng
khc v tr v m ENAME ca n
C php:
(entnext [ename])

49
LP TRNH NG DNG

Gii thch:
ename: Nu khng c hon tr thc th u tin ca bn v
Nu c hon tr tn thc th tip sau thc th c tn l ename
V d:
(setq e1 (entnext)) ;Gn tn thc th u tin cho e1
(setq e2 (entnext e1)) ;Gn tn thc th tip sau e1 cho e2
c. Hm (entsel...)

Chc nng: Ch ngi dng chn i tng v tr v m ENAME ca n

C php:
(entsel [promt])
Gii thch:
promt: Li nhc, nu khng c dng nhc s l : Select object:
V d:
(setq e1 (entsel Chon doi tuong thu nhat:))
(setq e2 (entsel Chon doi tuong thu hai:))
(command EXTEND e1 e2 )

d. Hm (nentselp...)

Chc nng: Chng trnh t ng chn i tng i qua mt im cho trc

C php:
(nentselp [promt] [pt])
Gii thch:
promt: Li nhc
pt: im m i tng i qua
e. Hm (entdel...)

Chc nng: Xo mt i tng trong bn v hoc khi phc li i tng va b xo

C php:
(entdel ename)
Gii thch:
ename: M tn i tng, hm ny ch dng cho thc th chnh, tn thc th do hm
(entlast), (entnext)

50
LP TRNH NG DNG

f. Hm (entget...)

Chc nng: Hon tr danh sch lit k cc thng tin v i tng c trong bn v c gi

C php:
(entget ename [applist])
Gii thch:
ename: M tn i tng
applist: Nu c, danh sch cc chui k t cha cc thng tin m rng c lin quan s c
gi ra v hon tr.
g. Hm (entmod...)

Chc nng: Cp nht li thng tin ca i tng b thay i bng cc hm v v ra i


tng vi cc thng tin cp nht. Hm ny thng c dng vi hm (entget)
C php:
(entmod entlist)
Gii thch:
entlist: L danh sch cha thng tin ca i tng ly t hm (entget)

h. Hm (entmake...)

Chc nng: To mt thc th mi bng cch xy dng mt danh sch cc c d liu ca n,


khng cn qua cc lnh ca AutoCad
C php: (entmake edata)

Gii thch:
edata: L danh sch cc c s d liu ca i tng cn to.
V d: V ng trn
(entmake
((0 . CIRCLE) ; Kiu i tng ng trn
(62 . 1) ; Mu
(10 4.0 4.0 0.0) ; Tm (4.0 4.0 0.0)
(40 . 1.0)
(40 . 1.0) ; Bn knh 1.0
)
)

51
LP TRNH NG DNG

11.2. Cc hm thao tc vi bng cc i tng


Bng cc thc th l tp hp cc thc th trong mt khi ho chun ca AutoCad. Cc
thc th ny khng thy hin hu trn bn v m nm trong cc bng d liu. Cc bng d liu
bao gm: LAYER, BLOCK, LTYPE, STYLE, DIMSTYLE, UCS, VPORT...
Mi bng i tng ni trn c 3 d liu chnh:
+ Tn bng nh: LAYER, BLOCK...
+ Tn i tng trong bng: Lp 0, khi A1
+ D liu ca i tng: mu sc, ng nt....
a. Hm (tblnext...)

Chc nng: Tm bng d liu v tr ra d liu ca bng

C php:
(tblnext tblname [rewind])
Gii thch:
tblname: Chui k t cha tn bng
rewind: Nu c gi tr khc nil, s tr v tn v cc d liu ca bng cc i tng u tin
m AutoCad tm thy.Nu khng c hoc nhn gi tr nil, s tr v tn v cc d liu ca bng
cc i tng tip theo m AutoCad tm thy
b. Hm (tblsearch...)

Chc nng: Tm thnh phn c ch nh ca bng i tng v tr ra d liu ca thnh


phn
C php:
(tblsearch tblname symbol [setnext])
Gii thch:
tblname: Chui k t cha tn bng
symbol: Tn thnh phn ca bng
Nu tm thy, s tr v tn v cc d liu ca tn gi ny
Nu khng tm thy s tr v nil
setnext: L lc chn dng khi c mt lnh tblnext tip sau lnh ny

52
LP TRNH NG DNG

11.3. Cc hm thao tc vi nhm cc i tng


Trong AutoCad ngi ta s dung ch vit tt ss (Selection Set) gi tn nhm i tng
(Object) hoc nhm thc th (entities) c chn sau dng nhc Select object: ca AutoCad.
Kiu ca nhm l PICKSET. C th coi nhm i tng l mt mng cc phn t, mi phn t l
tn mt i tng
a. Hm (ssget...)

Chc nng: Chn cc i tng trong bn v v tr v nhm i tng chn. Nu khng


c i tng no hm tr kt qu l nil
C php:
(ssget [mode] [pt1 [pt2]] [pt-list] [filter-list])
Gii thch:
mode: Chui k t cha cc m iu khin vic la chn, nhn cc m sau:
L : Last - i tng v cui cng cn tn ti trong bn v c chn
P: Previous Tp hp i tng va chn trc
W : Windows Cc i tng nm trong ca s chn
C : Cross Cc i tng nm trong v ct qua ca s chn
X : Tt cc i tng trong bn v c chn

WP : Cc i tng nm trong mt a gic cho trc c chn


WC : Cc i tng nm trong v ct qua mt a gic cho trc c chn
pt1 pt2: Hai im l 2 nh i nhau ca mt ca s hnh ch nht dng cho chn i tng
bng Crossing v windows
pt-list: Cc im to thnh a gic dng cho la chn WP, WC
filter-list: L danh sch cha cc tiu chun lc cho vic chn nhm cc i tng
b. Hm (ssadd...)

Chc nng: Thm mt i tng vo tp i tng

C php:
(ssadd [ename] [ss])

53
LP TRNH NG DNG

Gii thch:
ename: Chui k t cha tn m i tng cn thm vo, nu i tng ename c trong tp
i tng, khng thm vo c na
ss: Tn tp i tng
Nu c 2 tham s ny khng c, s tr ra mt tp rng
Nu ename khc nil tp i tng l nil, hm s tr ra mt tp i tng ch c mt phn t l
ename cho
Nu c 2 u khc nil, hm s tr ra tp i tng c thm phn t ename va thm vo
c. Hm (sslength...)

Chc nng: Tr ra s nguyn l s cc i tng c trong tp cc i tng

C php:
(sslength ss)
Gii thch:
ss: Tn tp i tng c trong bn v
d. Hm (ssdel...)

Chc nng: Loi b mt i tng ra khi tp i tng

C php:
(ssdel ename ss)
Gii thch:
ename: Chui k t cha m tn i tng cn loi b. Nu i ename ny c trong tp i
tng, th n b loi b, nu khng c tr nguyn tp i tng
ss: Tn tp i tng c trong bn v
e. Hm (ssname...)

Chc nng: Tr v ename ca mt i tng c trong tp cc i tng

C php:
(ssname ss index)
Gii thch:
ss: Tn tp i tng c trong bn v
index: S th t ca cc i tng trong tp hp cc i tng c tnh t 0, 1, 2....

54
LP TRNH NG DNG

IV> HM DO NGI LP TRNH NH NGHA

Cc hm ny tng t nh hm (Function) trong ngn ng lp trnh C v C++, th tc


(Procedure) trong Pascal, hoc hm con (Subroutine) trong Fortran
C php chung ca hm do ngi dng nh ngha:
C php:
(defun tn_hm (tham_s/ bin_s_ring)
...........................; Thn hm
...........................; Thn hm
)
Hoc:
(defun tn_hm ()
...........................; Thn hm
...........................; Thn hm
)
Gii thch:
defun: Hm nh ngha ca AutoLisp
Tn_hm: Do ngi lp trnh t, tn hm nn vit bng ch hoa v khng c khong trng
Thm hm: l cc lnh x l ca AutoLisp. Mt hm c th triu gi nhiu hm khc
Trong thn hm bao gm c cc tham s, bin_s_ring, bin_s_chung
tham s: L mt hoc nhu bin hnh thc, cc bin ny chung cho c chng trnh, tham gia
vo cc biu thc trong thn hm v c tn ti khi thot ra khi AutoCad
Khi c triu gi, cc bin hnh thc ny c thay bng cc gi tr
Trong hm c th khng c tham s
bin_s_ring: Trong hm c th c mt hay nhiu bin s ring, c phn cch nhau
bng du trng
Cc bin s ny nhn gi tr hoc nh ngha v ch tn ti bn trong hm, khi ra khi
hm, gi tr cc bin ny s c xo khi b nh
bin_s_chung: Khi hm khng c c tham s ln bin ring, th cc bin s ca n mc
nhin l bin chung

55
LP TRNH NG DNG

V d:
a. V d v tham s:
(defun VD1(x y)
...........................; Thn hm
...........................; Thn hm
)
Hm ny c 2 tham s x v y. Hm c triu gi nh sau:
(VD1 x y)
b. V d v bin s ring:
(defun VD2(/ x y)
...........................; Thn hm
...........................; Thn hm
)
Hm ny c 2 bin s ring x v y. Hm c triu gi nh sau:
(VD2)
c. V d v bin s chung:
(defun VD3()
...........................; Thn hm
...........................; Thn hm
)
Hm ny khng c tham s v bin ring. Hm c triu gi nh
sau:
(VD3)
d. Tn hm l mt lnh ca AutoCad:
(defun C:VD4()
...........................; Thn hm
...........................; Thn hm
)
Khi chng trnh AutoLisp cha hm trn c gi vo
AutoCad th vd4 l mt lnh ca AutoCad, c th gi trn
dng ln Command: vd4

56
LP TRNH NG DNG

1. Cc trng hp c bit ca tn hm:


1.1. Tn hm tr thnh mt lnh ca AutoCad
(defun C:tn_hm(...)
...........................; Thn hm
...........................; Thn hm
)
1.2. Hm c thc hin ngay sau khi khi ng AutoCad
(defun S::tn_hm(...)
...........................; Thn hm
...........................; Thn hm
)

2. Mt s v d minh ho
2.1. To Layer
(defun C:TAOLOP()
(command "-layer" "n" "dut" "l" "DASHED" "dut" "c" 3 "dut" "")
(command "-layer" "n" "tam" "l" "CENTER" "tam" "c" 1 "tam" "")
(command "Ltscale" 300)
(command "ZOOM" "a")
); Kt thc hm
Chng trnh khi chy trong AutoCad s to 2 lp c tn l dut v tam
2.2. V khung tn
(defun c:KBV(/ tyle loai KBV1 KBV2)
(setq tyle (getreal "\Cho ty le ban ve : "))
(setq loai (getstring "\Cho kho giay in ban ve A0,A1,A2,A3,A4:
<A3> "))
(setq KBV1 (getpoint "\Cho diem chen khung ban ve: "))
(if (= loai "a0")
(setq KBV2 (list (+ (car KBV1) (* 1188.0 tyle)) (+ (cadr
KBV1) (* 840.0 tyle))))
(if (= loai "a1")
(progn
(setq KBV2 (list (+ (car KBV1) (* 840.0 tyle)) (+
(cadr KBV1) (* 594.0 tyle)))))

57
LP TRNH NG DNG

(if (= loai "a2")


(progn
(setq KBV2 (list (+ (car KBV1) (* 560.0 tyle)) (+
(cadr KBV1) (* 418.0 tyle)))))
(if (= loai "a4")
(progn
(setq KBV2 (list (+ (car KBV1) (* 285.0 tyle)) (+
(cadr KBV1) (* 198.0 tyle)))))

(if (= loai "a3")


(setq KBV2 (list (+ (car KBV1) (* 396.0 tyle)) (+
(cadr KBV1) (* 285.0 tyle))))
)
)
)
)
)
(command "-layer" "n" "Dam" "l" "CONTINUOUS" "Dam" "c" 5 "Dam"
"")
(command "-layer" "s" "Dam" "")
(command "Rectangle" KBV1 KBV2 )
); Ht hm
Chng trnh chy trong AutoCad s v kch thc khung bn v theo kh bn v m ngi dng
yu cu
2.3. i mu ca i tng
(defun C:1()
(prompt "_.change ")
(princ "\n Change Colour to Red - 1")
(setq sset (ssget))
(if (null sset)
(progn
(princ "\nERROR: Nothing selected.")
(exit)
)
)
(command "_.change" sset "" "P" "C" "1" "")

58
LP TRNH NG DNG

(princ)
); Ht chng trnh

Chng trnh chy trong AutoCad s i mu ca i tng chn sang mu


2.4. i lp ca i tng
(defun C:DAM()
(prompt "_.change ")
(princ "\n Change Layer Dam")
(setq sset (ssget))

(if (null sset)


(progn
(princ "\nERROR: Nothing selected.")
(exit)
)
)
(command "_.change" sset "" "P" "LA" "Dam" "LT"
"BYLAYER" "C" "BYLAYER" "")
(princ)
); Ht chng trnh
Chng trnh chy trong AutoCad s i lp hin hnh ca i tng sang lp dam
2.5. To underline cho mt nhm text c chn
(defun c:UU( / sset ssl temp ed old new )
(text_uu_ssget); Gi hm con
(setq ssl (sslength sset))
(while (> ssl 0)
(progn
(setq temp (ssname sset (setq ssl (1- ssl))))
(setq ed (entget temp))

(setq old (cons 1 (DXF 1 ed))


new (cons 1 (strcat "%%u" (DXF 1 ed)))
ed (subst new old ed)
)
(entmod ed)

59
LP TRNH NG DNG

)
(princ)
)

);Ht hm chnh
;------------------------------------------------------------
(defun text_uu_ssget ( / ssl nsset temp ed ); Hm con
(setq sset (ssget))
(setq ssl (sslength sset)
nsset (ssadd)
)

(print ssl)
(while (> ssl 0)
(progn
(setq temp (ssname sset (setq ssl (1- ssl))))
(setq ed (entget temp))
(if (= (DXF 0 ed) "TEXT") (ssadd temp nsset))
)
)
(setq ssl (sslength nsset)
sset nsset
)
(print ssl)
(princ)
(print)
);Ht hm con

60

You might also like