lẬp trÌnh trong autocad

187
CHƯƠNG 1: GIỚI THIỆU CHUNG I. Ngôn ngữ lập trình trong CAD Autocad cho ta các cách để có thể tự động quá quá trình vẽ như sau: Sử dụng các ngôn ngữ lập trình, sau đó kiết xuất ra bản vẽ dưới dạng các file văn bản DFX. Tự động hóa bằng các file Script. Lập trình trong môi trường CAD như Lisp, Object ARX, VBA. AutoDesk cung cấp cho chúng ta một bộ các phần mở rộng để kiểm soát AutoCad từ ngôn ngữ. Những phần mở rộng này được gọi là Object ARX. Đây là một phương pháp tiếp cận với CAD một cách chuyên nghiệp nhất tuy nhiên nó lại quá phức tạp. AutoLisp là một ngôn ngữ lập trình thông dịch, Nó là một phiên bản mới nhất về ngôn ngữ lập trình nhân tạo cũ nhất mà ngày nay vẫn còn được sử dụng. Autolisp nằm trong bộ Common LISP. LISP viết tắt của LIST Processor !. Nói chung Lisp dễ học bởi cú pháp của nó đơn giản nhưng nó không tương tác được với các cơ sở dữ liệu như Excel, access. Nên việc sử dụng nó tạo ra các ứng dụng phức tạp là rất khó. Tuy nhiên mức độ phức tạp cũng đã được giảm bớt đi rất nhiều trong Visual LISP! VBA viết tắt của Visual Basic Application. Cũng như Object Arx thì VBA cũng là một môi trường lập trình hướng đối tượng sử dụng ngôn ngữ VB. Ưu điểm của VBA là Sử dụng VB, một ngôn ngữ lập trình tương đối thông dụng và dễ học. VBA nằm trong CAD nên tốc độ chạy cũng tương đối nhanh. Dễ dàng trong việc tạo ra các giao diện (hộp thoại, menu). Tương tác với các ứng dụng khác và các cơ sở dữ liệu khác.

Upload: hoacvxd

Post on 18-Jun-2015

6.428 views

Category:

Documents


7 download

TRANSCRIPT

CHNG 1: GII THIU CHUNG I. Ngn ng lp trnh trong CAD Autocad cho ta cc cch c th t ng qu qu trnh v nh sau: S dng cc ngn ng lp trnh, sau kit xut ra bn v di dng cc file vn bn DFX. T ng ha bng cc file Script. Lp trnh trong mi trng CAD nh Lisp, Object ARX, VBA. AutoDesk cung cp cho chng ta mt b cc phn m rng kim sot AutoCad t ngn ng. Nhng phn m rng ny c gi l Object ARX. y l mt phng php tip cn vi CAD mt cch chuyn nghip nht tuy nhin n li qu phc tp. AutoLisp l mt ngn ng lp trnh thng dch, N l mt phin bn mi nht v ngn ng lp trnh nhn to c nht m ngy nay vn cn c s dng. Autolisp nm trong b Common LISP. LISP vit tt ca LIST Processor !. Ni chung Lisp d hc bi c php ca n n gin nhng n khng tng tc c vi cc c s d liu nh Excel, access. Nn vic s dng n to ra cc ng dng phc tp l rt kh. Tuy nhin mc phc tp cng c gim bt i rt nhiu trong Visual LISP! VBA vit tt ca Visual Basic Application. Cng nh Object Arx th VBA cng l mt mi trng lp trnh hng i tng s dng ngn ng VB. u im ca VBA l S dng VB, mt ngn ng lp trnh tng i thng dng v d hc. VBA nm trong CAD nn tc chy cng tng i nhanh. D dng trong vic to ra cc giao din (hp thoi, menu). Tng tc vi cc ng dng khc v cc c s d liu khc. Cho php ta ghi Project ra file ring hoc tch hp lun vo bn v. To iu kin pht trin ng dng mt cch mm do trong vic chia s d liu gia cc ng dng khc trong mi trng Window. II. Tng quan v Activex Automation 2 u im ca AutoCAD ActiveX Activex automation l chun mc c to ra bi hng Microsoft, trc y c gi l OLE activex, cho php mt ng dng Windows ny kim sot mt ng dng Windows khc qua m hnh cc i tng r rng. AutoCAD ActiveX l giao din cho php ngi lp trnh lm vic vi cc i tng ca AutoCAD. AutoCAD Activex cho php bn s dng mt cch t ng khng ch trong phm vi AutoCAD m ngoi c AutoCAD. Cc i tng ca AutoCAD c th c truy nhp n bi nhiu ngn ng lp trnh khc nhau nh Ms word VBA, Ms Excel VBA,...

2 u im ca AutoCAD ActiveX Tt c cc ngn ng lp trnh u c th lm vic vi cc i tng trong AutoCAD (khng gii hn vi C++ v AutoLISP nh trc) Chia s d liu vi cc ng dng khc trn mi trng Windows (Excel, Word...) M hnh client server. Mc d Activex lun lun bao gm mt cuc hi thoi gia hai ng dng, n khng phi l cuc hi thoi hai chiu gia cc thnh phn tng ng. Mi thnh phn chng trnh Activex Automation bao gm hai chng trnh vi cc vai tr khc nhau. Client l ng dng khi to cuc hi thoi. Server l ng dng hi p client. M Activex Automation chy trong client, trong khi cc hnh ng m ny c kim sot thc hin trn server. Hnh di y trnh by mi quan h gia Client v Server trong mt cuc trao i Activex Automation c th. ClientClientStarts conversationRequest ObjectSupplies ObjectInvokes MethodClose conversationServerPrinciple Activex Automation Supplies Object Di y l mt s ng dng bn c th dung kim sot cc server activex, k c AutoCAD. Visual Basic Excel VBA Word VBA 8. M hnh i tng ca Automation. Mt Server Activex Automation (chng hn nh AutoCAD) thc hin cc chc nng qua cc i tng. Mt i tng l mt i din ca thnh ng dng. Mt i tng c phn bit vi cc di tng khc b ba c tnh: Phn loi ca i tng Cc c tnh ca i tng Phng thc ca i tng V d i tng Line, c tnh ca i tng cho php bn xc nh: - Mu sc - Lp - im khi u - im kt thc - di Phng thc i tng l - Sao chp

- xa - i xng qua gng - di chuyn - quay Ch , cc Autocad activex s khng hot ng nu cad ang thc hin lnh. III. Ngn ng lp trnh AutoLisp 1. Gii thiu chung u im: Tc chy nhanh Nhc im: L ngn ng lp trnh thng dch, ko cu trc Khng kt ni c vi cc c s d liu nh Access, Excel 2. Cn bn v AutoLisp 2.1. Xy dng biu thc AutoLisp Cu trc d liu c bn ca Lisp l danh sch (List) Danh sch l tp hp cc phn t cha trong cc du ngoc n, cc phn t c cch nhau bi mt hoc nhiu du cch Danh sch c 2 loi: Biu thc ton hc (expression) v danh sch d liu (data list). Phn t u tin ca ca mt biu thc lun lun l mt hm Mt biu thc bao gm tn hm v cc tham s cha trong cc du ngoc n. Khc vi biu thc ton hc, cc tham s trong biu thc Lisp l cc tham s c th t. Tham s l cc gi tr cung cp cho hm tnh ton AutoLisp tr v kt qu tnh ton t biu thc. V d: (+ 30 20 50) Tr v kt qu: 100 2.2. Cch nhp biu thc AutoLisp Biu thc Lisp c th c nhp nh cc dng lnh ca AutoCAD, ch rng biu thc ca Lisp lun lun nm trong du ngoc n ( ). Khi nhp trc tip bng dng lnh, bn nn ch ko di ca s AutoCAD Text Window ra c th theo di c kt qu cng nh li ca n. Command: (( + 140 10) 30) 2.3. Cc hm s hc Hm cng (+): (+ [number 1] [number 2] [number 3].) Danh sch bt u bng du + bo cho lisp l hm, cc phn t ng

sau n s l tham s. D liu s c chia lm 2 loi: S nguyn (ko c du chm) S thp phn (c du chm) Kt qu tr v s c kiu l kiu rng nht trong cc kiu ca tham s. V d: Command: ( + 140 10 30) 180 Command: ( + 140 10 30.0) 180.0 Command: (+ 140 10.10 30) 180.1 Command: (+ 10 a) ; error: bad argument type: numberp: nil Hm tr () Hm nhn (*) Hm chia (/) Command: ( / 120 10 3) 4 Command: ( * 3.75 3.775) 14.0625 Lisp lu tr ti 14 s thp phn nhng kt qu tr v trn mn hnh s ch c 6 ch s c ngha tnh t tri sang phi. V d: 18[(3+6+9):(96)12] Command: ((18 (/ (+ 3 6 9) (9 6))) 12) 0 3. Bin trong Lisp K hiu Tn bin cng nh tn hm ko phn bit ch hoa, ch thng. Bin khng nht thit cn khai bo Gn gi tr cho bin S dng hm Setq gn gi tr cho mt bin. C php nh sau: (SetQ Symbol1 value1 [symbol2 value2] )

Ging nh cc hm khc, hm SetQ tr v mt gi tr. Gi tr ny c th l nill (rng), T (True) hoc cc s, chui, danh sch. V d: Command (Setq x 3) 3 Command (Setq x 3 y 4) 4 Command (Setq z (+ x y) 7 Command (Setq A Xyabg) Xyabg Phm vi bin Bin ch c tc dng trong phm vi bn v S dng bin trong dng lnh Command: (setq x 10) 10 Command: (!X) 10 Command: circle 3P/..: Nhp ta tm Diameter : !x 4. File chng trnh Lisp 4.1. File lisp Quy nh chung: File Lisp c phn m rng l *.lsp Mt biu thc c th vit trn nhiu dng Cc biu thc khng phn bit ch hoa, ch thng Chui ch thch bt u bng du chm phy Cc ti file lisp vo trong AutoCAD S dng hm Load Command: (Load E:/autoLisp/CHT.lsp) Hoc Command: (Load E:\\toLisp\\T.lsp)

S dng hm Appload (Application Load) 4.2. Hm t to Ngoi cc hm AutoCAD cung cp, ta cn c th to ra cc hm t to. nh ngha hm t to Bng cch s dng hm Defun (define function). C php nh sau: (Defun Function_Name Argument_List expresstion) Function_Name: tn hm t to. Tun theo quy tc t tn bin Argument_List: gm hai phn ngn cch nhau bi du /, Phn th nht cha cc tham s cn thit khi gi l hm. Phn th hai ch cc bin cc b ca hm. Expression: cc biu thc tnh ton ca hm. Cc biu thc ny s ln lt c tnh ton theo th t t trn xung di. V d: (Defun ZA() (command Zoom all) ) Bin ton cc v bin cc b Bin ton cc l cc bin hot ng trong phm vi bn v Bin cc b l bin c nh ngha trong phm vi hm v gi tr ca n s mt i khi hm kt thc. 4.3. To lnh AutoCAD mi. Tham s C: c th s dng hm t to nh l mt lnh trong AutoCAD, ta t k hiu C: vo trc tn hm trong phn nh ngha hm t to. V d: (Defun C: (/PT1 PT2) (Setq PT1 (getpoint \n nhap diem thu nhat)) (Setq PT2 (getpoint \n nhap diem thu hai)) (command Line PT1 PT2 ); (Princ) ) ;ket thuc Tham s S::Startup Khi khi ng AutoCAD, hm S::startup nh ngha trong file ACADRx.lsp s c t ng gi v thi hnh. y l hm duy nht c tnh cht ny.

5. Nhp d liu 5.1. Nhp d liu ngi dng Nhp ta mt im: Hm getpoint (GetPoint [pt] [prompt]) Hm ny s tr v mt danh sch. Danh sch ny thuc sng danh sch lu tr d liu (Data Storage list). Loi danh sch ny khc vi biu thc ch, phn t u tin ca danh sch khng phi l mt hm. Khi ta nhp d liu vo, AutoCAD nhn bit c kiu d liu danh sch ta dng hm Quote (hoc du ). V d ta v ng thng i qua mt im c ta (2,2,0) v mt im nhn c t ngi dng. (Defun C: (/PT1) (setq PT1 (getpoint \n Nhap diem thu nhat)) (Command Line PT1 Quote(2 2 0)) ) Hoc: (Defun C: (/PT1) (setq PT1 (getpoint \n Nhap diem thu nhat)) (Command Line PT1 2,2,0) 12 ) Trnh t cc tham s hm Command tng ng vi trnh t nhp lnh ti dng nhc. C php y : (Command [argument]) Nhp s nguyn (interger): Hm getint C php: (Getint [prompt]) V d: Command: (Getint \n Enter an integer) 12.0 Requires an integer value Try again: 23 23 Nhp d liu s thc (real): Hm Getreal C php nh sau: (Getreal [Prompt]) Nhp d liu kiu chui (string)

C php nh sau: (Getstring [Prompt]) 5.2. Kim sot d liu nhp vo Hm getint cung cp danh sch cc gi tr nhp vo hp l bng cch gn cc bit kim tra (bit code) v danh sch cc t kha. Cc loi hm nhp d liu nh Getpoint, getcorner, getint, Getreal, (ngoi tr hm GetstringO u b kim sot bi hm initget. Hm c tc dng i vi hm nhp d liu tip theo sau n. C php ca hm nh sau: (Initget [bits] [string]) Bits l mt s nguyn. Gi tr tham s ny bng tng cc bit code tng ng vi cc ch kim sot m t among mun Tham s String cha danh sch cc t kha. Bit code Ch kim sot 1 Gi tr phi c nhp vo; khng chp nh gi tr null 2 Gi tr nhp vo phi khc khng 4 Gi tr nhp vo khng c l s m 128 Cho php nhp chui k t khng c trong danh sch cc t kha. Cc bit code khc s c u tin trc. Hm GetKword Hm ny yu cu nhp d liu dng t kha. C php nh sau: (GetKWord [Prompt]) Hm getkword ch chp nhn 2 bit code trong hm initget l 1 v 128. V d: Command: (initget 1 Y N) Nil Command: (setq abc (getkword \n ban co ghi lai khong ? )) 5.3. Bin h thng Ly gi tr bin h thng (Getvar Varname) Gn gi tr bin h thng (Setvar varname value) Bin h thng quan trng CmdEcho Value =1: Kt qu tnh ton trung gian s c hin ln trn mn hnh.

Value =0: Kt qu tnh ton trung gian s ko c hin ln trn mn hnh. 13 6. Mt s hm c bn 6.1. Hm chuyn kiu d liu Chuyn i mt s thnh s thc: Hm (Atof String) Command: (Atof 15.4a) 15.4 Chuyn i mt chui thnh mt s nguyn: hm (Atoi String) Command: (Atof 15.4a) 15 Chuyn i mt s thnh mt chui (real to string):Hm (Rtos Number [mode [precision]]) Precision: s ch s thp phn Mode l kiu s (scientific, decimal,) Mode Format 1 Scientific 2 Decimal 3 Engineering 4 Architectural Number: s s c chuyn qua kiu (mode) vi s ch s thp phn c quy nh trong (precision) sau c chuyn thnh chui tng ng. Nu khng c 2 tham s ny th AutoCAD s ly bin h thng trong Units thc hin php ton. V d (Rtof 215 2) tr v: 2.15E+2 Chuyn i mt s nguyn thnh chui: hm (Itoa integer) V d: (Itoa 21) tr v 21 (Itoa 30.2) tr v li Hm ASCII C php: (Ascii String): chuyn i k t u tin ca chui thnh m k t ascii tng ng. V d:

(Ascii Abc) tr v 65. (Ascii 9Ac) tr v 57. Hm CHR C php: (Chr Integer): chuyn i m ascii thnh k t tng ng trong bn m ASCII. Cc m ascii chun c gi tr t 32 n 126. 6.2. Hm ton hc Hm kim sot dng s (Fix Number): tr v phn nguyn ca mt s thc. (Float Number): Chuyn s Number thnh kiu s thc. (Abs Number): tr v tr tuyt i ca mt s. Hm max,min (Max Number1 Number 2 ) Ch khng chp nhn chui. (Mim Number1 Number 2 ) Hm lng gic (Sin Angle) Tr v gi tr ca mt gc, n v Angle l radians. (Cos Angle) (Atan Angle). Gi tr tr v t pi/2 n pi/2 Hm ly tha, khai cn, logarit

14 (Expt Base Power)

(Expt 4.0 4) tr v gi tr 64.0 (SQRT Number) (Log Number) tr v logarit ca mt s. (Exp Number) Tr v e m n. 6.3. Cc hm v khong cch v gc o Hm Cvunit (convert units) C php: (cvunit Value From To) Value: s nguyn, s thc, hoc ta im 2D, 3D From n v o hin ti (kiu chui) To n v o s chuyn sang (kiu chui) V d: (Cvunit Pi RADIANS DEGREE) tr v 3.14159 (Cvunit (1 3) FT IN tr v (12.0 36.0) Hm Angle C php (Angle PT1 PT2): Tr v gc (Radians) gia ng thng i qua 2 im vi trc X trong mt phng XY. Nu 2 im ny khng nm trn mt phng XY, n s c chiu ln mt phng XY v tnh gc. V d Command: (Angle (5 6.10) (quote (10 5))) 6.06664 6.4. Cc hm v chui Hm hin th thng tin kiu chui C php: (Princ [Expr [file]] Hm ny in ra mn hnh hoc in ra file

C php: (Print [Expr [file]] Hm ny in ra mn hnh hoc in ra file trn mt dng mi. C php: (Prin1 [Expr [file]] Hm ny in ra mn hnh hoc in ra file trn mt dng mi. V d: Command: (princ "\nabc \nabc\n") abc abc "\nabc \nabc\n" Command: (prin1 "\nabc \nabc\n") "\nabc \nabc\n""\nabc \nabc\n" Command: (print "\nabc \nabc\n") "\nabc \nabc\n" "\nabc \nabc\n" Cc k t c bit cho hm Princ \n: xung dng \t: cch ra nh mt khong Tab Hm StrCase C php: (StrCase String [switch]) Nu switch nill hm s tr v chui String trong cc k t hoa c chuyn thnh ch thng Nu Switch ko c hoc bng nill th hm s tr v chui String trong cc k thng s c chuyn thnh k t hoa. Hm StrCat C php: (StrCat String [string2]): kt ni cc chui tham s. Hm StrLen

15

C php: (StrLen String [string]): tr v chiu di ca mt xu. Nu c nhiu xu hm s tr v tng chiu di ca cc xu tham s. Hm SubStr C php: (SubStr String Start [length]): Tr v mt xu con ca xu String bt u t v tr Start v di length k t. Nu khng c length, n s ly n tn cui xu. 7. X l danh sch 7.1. Tng quan Danh sch (List) c phn lm 3 loi chnh Biu thc (Expression list): cha tn hm v cc tham s ca hm. Biu thc tr v gi tr Ta dim (Point Coordinate list): c hm quote hoc du ng trc. Cha ta X, Y, Z ca mt im. Kho d liu (Data storage List): Cng nh Point coordinate list. Nhng n cha d liu bt k. 7.2. To danh sch Tt cc d liu ca AutoCAD (Auotcad database) u c lu di dng danh sch v c nh s th t theo m (DXF Code). Khi vit chng trnh, qun l d liu, thng thng ta lu vo cc bin. Nhng khi s lng lu tr d liu tng ln. Lisp khng cung cp kiu d liu ng v mng ng. gii quyt vn ny, ta s dng kiu d liu List. Mt trong nhiu phng php to ra danh sch l s dng hm List C php: (List expression) V d Command: (set q L1 (list abc 10 30.0 hoang) (abc 10 30.0 hoang) Trong v d trn L1 c 4 phn t. Ngoi ra ta c th s dng hm Quote hoc du ng trc. V d: Command: (setq a1 (quote("abc" 1 30 40)))

("abc" 1 30 40) Hoc Command: (setq a1 '("abc" 1 30 40)) ("abc" 1 30 40) S khc nhau c bn gia List v quote (hoc ). List to ra danh sch nh gi tr, khi to ra danh sch, lisp s nh gi tr v kiu d liu tng ng cho cc phn t trong danh sch. Cn quote to ra danh sch cha nh gi tr. Chng ta xem xt v d sau: Command: (setq a2 '( a b c)) (A B C) Command: (setq a2 (list a b c)) (nil nil nil) (V a b c l 3 bin cha c gi tr) 7.3. Hm x l danh sch c bn Hm Car C php: (Car List): Dng ly gi tr u tin ca danh sch. V d: Command: (Car a1) abc Hm CDR C php: (CDR list): To ra mt danh bng cch loi b phn t u tin ca danh sch gc. V d:

16 Command: (setq a3 (CDR a1) (1 30 40) Hm CADR, CADDR (CADR list) tr v phn t th 2 ca danh sch.

(CADDR list) tr v phn t th 3 ca danh sch. Hm Last C php: (Last list): Tr v phn t cui cng ca danh sch. Hm Length C php: (Length List): tr v s lng phn t c trong danh sch. 7.4. Hm x l danh sch nng cao Hm Assoc (association) C php: (Assoc Item AList): Danh sch Alist phi cha phn t Item, v l danh sch phc hp. Hm s tr v mt danh sch con ca Alist m phn t u tin l Item. Nu khng tm thy phn t Item trong Alist th hm s tr v gi tr nill. V d: Command: (Setq Alist '((1 "Name" "NGuyen hoang anh") (2 "Toan" 10) (3 "Ly" 6))) ((1 "Name" "NGuyen hoang anh") (2 "Toan" 10) (3 "Ly" 6)) Command: (setq Toan (assoc 2 Alist)) (2 "Toan" 10) Command: !toan (2 "Toan" 10) Command: (last (assoc 2 Alist)) 10 Hm Cons (construct) C php: (Cons Item List) b xung phn t Item vo v tr u tin ca danh sch. V d: Command: (Setq AL (list (Cons COLOR 4) (Cons LAYER 0) Hm Member C php: (Member Item list): tr v mt danh sch bt u bng phn t Item. V d: Command: (Setq L (1 2 3 4 5) ( 1 2 3 4 5)

Command: (member 3 L) (3 4 5) Hm Append C php: (Append list1 list2 ): Gp nhiu danh sch thnh mt danh sch. Command: (setq L2 (Append (member 3 L) (list 6))) (3 4 5 6) 8. Biu thc iu kin 8.1. Biu thc iu kin Cc hm so snh Hm C php Gii thch = (= Atom Atom ..) Tr v gi tr T nu tt c cc phn t bng nhau. Tham s kiu s hoc kiu chui. /= (/= Atom Atom ..) Tr v T nu cc phn t i mt khc nhau

17 < (< Atom Atom ..) Tr v T nu mi phn t nh hn phn t ng bn phi n =; > Tng t Tng t

EQ (EQ Expr1 Expr2) So snh s trng nhau ca 2 danh sch. Equal (Equal Expr1 Expr2 [fuzz] Hm nh gi tr cc biu thc v kim tra cc gi tr ny c bng nhau hay khng. i vi d liu kiu s Fuzz quy nh sai s trong php so snh Cc hm kim tra d liu Hm C php Gii thch Atom (Atom Item.) Tr v gi tr Nil nu Item l list Listp (Listp Item) Tr v T nu Item l danh sch hoc gi tr Nill Numberp (numberp Item) Tr v T nu gi tr l s nguyn Minusp (minusp Item) Tr v T nu gi tr l s m Zerop (Zerop Item) Tr v T nu d liu =0 or 0.0 Null (Null Item) Kim tra mt bin c rng hay ko Type (Type Item) Tr v kiu d liu ca bin 8.2.

Hm If v Progn Cu trc r nhnh vi If C php: (If LogicExpr ThenExpr) (If LogicExpr ThenExpr ElseExpr) Ch : Hm If ch chp nhn mt biu thc ThenExpr v ElseExpr. Nu s dng nhiu hn mt biu thc th phi s dng cu trc Progn (Progn Expression .) V d: (DEFUN C:11 () (if (= (getvar "pickstyle") 0) (setvar "pickstyle" 1) (setvar "pickstyle" 0)) (PRINC) ) Bi tp Gii phng trnh bc nht Nhp vo 2 im, kim tra xem chng c nm trong gii hn Limmax v Limmin hay khng. Nu c hy a ra khong cch gia 2 im . S dng hm (Distance PT1 PT2). 8.3. Hm logic (Setq A 10 b 20 c 30) Hm C php V d And (And Expression .. )

(And (> 10 0) (< 10 20)) tr v gi tr T Or (or Expression .. ) (Or (= A 10) (< b 0)) tr v git tr T Not (Not Item) (Not nill) = T. (Not T) = nill

18 8.4. Hm Cond (Condition) Hm if cho php ta r ti a 2 nhnh. Hm Cond gip ta r nhiu hn 2 nhnh. C php hm nh sau: (Cound (Test1 result1 ) (Test2 result2 ) (Testn resultn ) ) Bi tp Gii phng trnh bc 2. 9. Vng lp 9.1. Vng lp c bn Vng lp Repeat. Hm Repeat to ra vng lp vi s ln nht nh C php: (Repeat Number Expr .. ) V d:

(Setq I 10) (setq j 1) (Repeat 10 (setq i (+ 2 i) (setq j (* 2 j) ) ; kt thc hm repeat Lp 10 ln khi I = 10+2*10 = 30; j= 2^10. Vng lp While. Hm while to ra vng lp c iu kin. Vng lp ny s jt thc khi iu kin Testexpr khng tha mn. C php: (While testexpr Expr ..) V d: V ng thng i qua 2 im (defun c:L2P (/ ch PT1 pt2) (setq ch "Y") (while (or (= ch "Y") (= ch "y") ) (setq PT1 (getpoint "\nnh?p vo ?i?m th? nh?t: ")) (setq PT2 (getpoint "\nnh?p vo ?i?m th? hai: ")) (command "Line" PT1 PT2 "") (initget 1 "Y N y n") (Setq ch (getkword "\n b?n c v? n?a khng (Y/N): ")) ); ket thuc while ); ket thuc defun 9.2. Hm foreach C php: (Foreach Name List Expr ) Hm Foreach duyt tng phn t trong danh sch LIST. Ti mi thi im, gi tr ca tng phn t trong danh sch s c gn cho bin Name. Sau cc biu thc Expr s c nh gi tr. V d: (setq I 0) (foreach So (list 1 2 3 4 5 6 7 8 9 10) (Setq I (1+ i)) (Princ (Strcat \nCc gi tr th (itoa i) trong danh sch l (itoa so))) )

19 10. Tp hp cc i tng c chn 10.1. Hm Ssget Hm SSget C php: (Ssget [Mode][PT1][PT2][PTList][FilterList]) Mode Phng php chn C php None S dng mi phng php chn (hay dng) (Ssget) Chn i tng i qua im Point (Ssget point) L Last: chn i tng c to ra cui cng (Ssget l) P Previous (ssget p) W Window (Ssget W PT1 PT2) C Crossing window (Ssget C PT1 PT2) F

Fence (Ssget F PTlist WP Window polygon (ssget wp PTlist CP Crossing polygon (ssget cp PTlist X All (ssget x) V d: Setq PT1 (0 0 0) PT2 (4 0 0) PT3 (4 4 0) PT4 (0 4 0)) (setq SS (ssget WP (list pt1 pt2 pt3 pt4))) Bng Group code. S dng filter V d: (ssget ( (0 . text) (40 . 2.5))) (ssget ( (0 . line) (62 . 4))) S dng cc php so snh. Ch cc php so snh ch p dng i vi cc group code c kiu s (nguyn hoc thc). Cc php so snh bao gm * = /= != > = ,