Professional Documents
Culture Documents
2012t
2012
t
t
AutoLISP
2012
tt
tt
M u
Cc ni dung cn nm trc:
S dng AutoCAD c bn
VisualLISP
M mu
D li: Tools/CheckTextInEditor
2. Cc thnh phn c bn
Danh sch v biu thc
Cc li ch thch
Bin,, hng
g v cc kiu d liu
Cc hm c s trong AutoLISP
2012
tt
tt
2012
tt
tt
2.2. Cc li ch thch
(* do (/ ppi 180.0)) ; gi tr tr v ca hm
ppi l bin cc b
Cc hng s:
2012t
2012
t
t
C cn
Cng
lu
l ki
kiu kt
k qu
tr
v
khi s
dng
d
cc
hm
h c s.
PI
hng s pi = 3.14159
NIL
PAUSE
sai do vt qu gii hn 32 b
Lu :
2012
tt
tt
) ; kt thc hm
File d liu
File d liu trong AutoLISP ch s dng kiu file text, truy cp tun
t, khng c kiu file truy cp ngu nhin.
D liu trong file c ghi vo v c ra theo dng, ln lt t
dng
th
nht
n
dng
cui
cng.
( (11 12 13 14 15)
(21 22 23 24 25))
2012
tt
tt
Cu trc rt t do:
; dng 2, 5 phn t
Php gn
Vng lp
R nhnh
setq
- t kha hm gn s liu
var1, var2,
- tn cc bin
val1, val2,
V d
(setq a 10)
gn cho bin a gi tr 10
(setq a 10 b (5 8))
2012t
2012
t
t
3.1. Php gn
defun
arg
var
- tn cc bin cc b
Gi hm nh ngha
V d: to lnh tnh n!
(* n (giaithua(- n 1))))
(initget 5)
; hn ch nhp sai d liu (s m, s khng nguyn,)
(setq n (getint Hy nhp mt s nguyn khng m: ))
(setq c (giaithua n))
(princ (strcat (itoa n) ! = (itoa c))) ; nh dng v in kt qu
(princ)
; rt lui im lng
)
; kt thc hm
2012
tt
tt
- t kha khai bo hm
testexpr
elseexpr
(testn resultn)
(T elsewise)
)
test1, test2..
result1, result2
elsewise
2012
tt
tt
V d:
(if (= 1 3)
(setq ans Sometime) ; thnh thong 1 = 3 !!!
(progn
) ; kt thc if
(while test [expr]) - thc hin cc b.thc expr khi test khc NIL
2012t
2012
t
t
3.4. Vng lp
2012
tt
tt
4. Cc hm c s
2012
tt
tt
Cc hm s hc (+ - * / )
Cc hm x l chui k t
Cc hm x l danh sch
Cng
(+ n1 n2 )
Tr
(- n1 n2 )
m tng
(1+ n)
m gim
(1- n)
Nhn
(* n1 n2 )
Chia
(/ n1 n2 )
Tr tuyt i (abs n)
; kq: n1 + n2 +
; kq: n1 n2 -
; tr v gi tr n+1
; tr v gi tr n-1
; tr v n1*n2*
; tr v n1/n2/
; tr v |n|
; tr v gi tr nguyn sau khi b
phn thp phn
Cc hm s hc (2)
2012t
2012
t
t
4.1. Cc hm s hc
Gi tr nh nht
(min n1 n2 )
Gi tr ln nht
(max n1 n2 )
Hm m
;ex
;ax
(sqrt x+)
; cn bc 2
Hm logarit t nhin (log x+)
; loge (x)
Lng gic (cos rad), (sin rad) cos v sin ca gc bng rad
(exp x)
(expt a x)
So snh
(= ns1 ns2 )
so snh gn ng gi tr cc
biu thc, vi fuzz l sai s. Nu b qua fuzz
hm thc hin nh so snh =
Cc hm logic (2)
2012
tt
tt
4.2. Cc hm logic
(null expr)
(numberp item)
so snh ln hn
(read [str])
2012
tt
tt
4.3. Cc hm x l k t
(quote expr)
(list [expr])
; gn bin n1 gi tr 10
(setq n2 20)
; gn bin n2 gi tr 20
(setq lst (list n1 (+ n1 n2) a (1 2))) ; gn bin lst l danh sch gm cc phn
t 10 (n1) 30 (n1+n2) a (hng s, kiu symbol) v danh sch
con (1 2) hng s, tc l lst s l danh sch (10 30 a (1 2))
2012t
2012
t
t
(setq n1 10)
X l danh sch
(append [lst])
(reverse lst)
(length lst)
(last lst)
(car lst)
(nth n lst)
2012
tt
tt
(cdr lst)
(cddr lst)
(cadar lst)
(cddar lst)
v.v
item
asslst
5. Lp trnh ng dng
bng AutoLISP
To cc i tng AutoCAD
2012t
2012
t
t
2012
tt
tt
i thoi
c
thc
hin
q
qua dng
g lnh
Command hoc
hp
p
thoi.
(alert msg)
2012
tt
tt
5.1.1. Thng bo
getX
msg
[]
msg
Hm GetReal
2012
tt
tt
Hm GetInt
cr
pt
ni tm
Hm GetDist
Hm GetAngle
pt
msg
ni tm
cu nhc hin trn dng lnh AutoCAD
Nhp gi tr t bn phm
2012
tt
tt
Hm GetPoint
2012t
2012
t
t
Hm GetString
pt
im tham chiu.
msg
msg
Hm InitGet
2012
tt
tt
Hm GetKWord
bit
str
bit0
bit1
bit2
bit3
(initGet 6)
( t goc ((getReal
(setq
tR l Nhp
Nh gc
Pi/Two-pi/thRee-pi
Pi/T
i/thR
i <Pi>))
Pi )) ; nhp
h s
thc
th
; x l s liu do ngi dng nhp
Hm atof
2012
tt
tt
Hm InitGet (3)
2012t
2012
t
t
Hm InitGet (2)
str
chui k t
V d
(atof 97.1)
(atof 97)
tr v s thc 97.1
tr v s thc 97.0
(atof a78)
tr v s thc 0.0
str
chui k t
V d
(atoi 97)
tr v s nguyn 97
(atoi 97.91)
cng tr v s nguyn 97
(atoi 097)
tr v s nguyn 97
(atoi a97)
tr v s nguyn 0
Hm distof
2012
tt
tt
Hm atoi
str
chui k t
mode
(distof 17.5 2)
(distof 1.75E+01 1)
tr v s thc 17.5
cng tr v s thc 17.5
(distof 1-5.5\ 3)
(distof 1-5.5\ 2)
str
chui k t
mode
(angtof 45r 3)
Hm ascci v chr
2012t
2012
t
t
Hm angtof
tr v s nguyn 65 (m ascii ca A)
tr v chui k t A, nhng
(chr 12)
tr v chui 123
(itoa 123456767889900)
(itoa 123.456)
Hm rtos
2012
tt
tt
Hm itoa
num
s cn chuyn i
mode
kiu khoa hc
k thut (Anh)
kiu phn s
17 1/2
10
ang
mode
Cc mode
XdYZ
Radian
Hng hi
2012
tt
tt
Hm angtos
in ra:
(print str)
in ra:
Write-char v Write-line
2012t
2012
t
t
Cc hm prinX
(write-line Abc)
(write-line Def)
2012
tt
tt
Rt lui im lng !
M file
( l
(close
fil )
file)
fil
ng
file
(findfile filename)
(getfiled tit def ext flg) Nhp tn file qua hp thoi file
tiu chun ca AutoCAD
11
; Khai bo tn file
; M file c
c, nu thnh cng th
; con tr file c gn cho bin ctfile
(setq ct 0)
; Khi to b m
Findfile
Getfiled
Hm (getfiled tit def ext flg) dng nhp tn file qua hp thoi
file tiu chun ca AutoCAD, kt qu tr v tn y ca file.
tit
def
ext
Chui
Ch
k t ch
h phn
h m
rng
((phn
h
ui)
) ca
tn
ffile.
l Nu
gn
flg
(close ctfile)
2012t
2012
t
t
2012
tt
tt
Close
2012
tt
tt
Open
12
c d liu t file
Hm (read-char ctfile) c tng k t trong file v tr v s
nguyn l m ascii ca k t va c. Nu gi tip hm mt
ln na, n s c k t tip theo. Khi ht dng, hm tr v s
10 v con tr chuyn xung dng k tip. Khi ht file, hm tr
v
NIL.
2012
tt
tt
5.5. To cc i tng
AutoCAD
2012t
2012
t
t
5.5.1. Hm Command
2012
tt
tt
;gn tn file
AB
Dong 2 2XY
Dong 3 3TWZ
<xung dng>
Tn lnh AutoCAD
13
V d
Lu : cn nm r cc lnh AutoCAD phng n dng lnh. V
d v vng trn cn nm r:
Tn lnh: Circle
Mt vi v d minh ha
;khai bo bn knh
;v vng trn
2012
tt
tt
V d (2)
V d 2: V vng trn qua 2 v qua 3 im (nhp trc tip). V cc
on thng ni 3 im nhp.
(setq p1 (getpoint Nhp im u: )
p2 (getpoint p1 im th 2: ))
(command _.Circle .2P p1 p2)
(setq p3 (getpoint im th 3: ))
(command _.Circle 3P p1 p2 p3) ;v vng trn qua 3 im
;v cc on thng ni 3 im nhp
(command _.Line p1 p2 p3 )
; lu thm du k t trng vo sau im cui cng ca lnh Line do
; lnh ny v cc on lin nhau cho n khi nhn Enter kt thc.
Cc hm hnh hc
2012t
2012
t
t
- tm
im
qua ta
tng i
vi
1 im
khc
Distance
Angle
- xc nh gc ng ni hai im v trc X
Inters
- tm giao im ca 2 on thng
Osnap
;nhp thm im
th 3
V d (3)
;khai bo im 1
;khai bo im 2
(command _.Line m n p )
pt
ang
dist
pt1 v pt2
- cc im 2D hoc 3D.
pt1
ang
pt
Hm Distance v Angle
2012
tt
tt
Hm Polar
gc tr v
X
14
pt1 v pt2
pt3 v pt4
onseg
- tham s ty chn
chn.
pt1
pt3
(osnap pt mode)
pt
pt4
Hm Getvar v Setvar
2012t
2012
t
t
Hm Osnap
2012
tt
tt
Hm Inters
Value
- gi tr cn t cho bin
2012
tt
tt
Lu thm v hm command
(command _c)
(princ)
; rt lui im lng
15
V d (2)
2012
tt
tt
V d
(setq elist ((0 . CIRCLE) (8 . MYLAYER) (10 5.0 7.0 0.0) (40 . 1.0)))
(entmake elist)
Vng
g trn c
v v nu chy
y tip
p cc biu thc v d
1,, kt qu
q
nhn c nh sau:
ssGet
2012t
2012
t
t
V d
(setq ss1 (ssadd))
ssDel
2012
tt
tt
ssAdd
ss tn nhm chn.
V d
(setq ss (ssadd (entlast))
; to nhm ss gm i tng va v.
16
Chnh sa cc i tng
2012
tt
tt
V d 2
2012t
2012
t
t
V d 1
(defun ss-rcopy (ss pt ang / ss1 ent num ind)
; khai bo hm ss-rcopy
(if (null ss) (setq ss1 NIL)
; ss nhm chn
(progn
; pt tm quay
(setq ss1 (ssadd))
; ang gc quay
(setq num (sslength ss)
ind 0)
(while (< ind num)
(setq ent (ssname ss ind))
; copy ti ch
(command _.Copy ent pt pt)
(command _.Rotate (entlast) pt ang) ; quay
(ssadd (entlast) ss1)
(setq ind (1+ ind))
; kt thc while, progn, if
)))
ss1 ; kt qu tr v: nhm i tng mi to hoc NIL nu nhm chon rng.
)
; kt thc hm
2012
tt
tt
V d 3
17