Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 101 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
101
Dung lượng
1,83 MB
Nội dung
LP TRÌNH TRONG AUTOCAD Ging Viên : Trn anh Bình Cp nht ngày 25/8/2007 Sách tham kho : • AutoCAD 2004 Bible – Wileys & Sons • Mastering in AutoCAD 2000 – George Omura • AutoCAD 2004 For Dummies – John Wiley & Sons • AutoCAD 2000 (1,2) – KTS.Lu Triu Nguyên. • AutoCAD 2004 (1,2) c bn và nâng cao – TS.Nguyn Hu Lc. • Các tin ích thit k trên AutoCAD – TS.Nguyn Hu Lc. – Nguyn Thanh Trung. • AutoCAD 2004 (1,2) c bn và nâng cao – TS.Nguyn Hu Lc. • AutoCAD 2004 Activex and VBA – KS.Hoàng Thành An. Liên h : KS. GV. Trn Anh Bình : - T : 0983039940 - Mail 1 : anhbinh0310@yahoo.com - Mail 2 : binhta@uce.edu.vn ón đc : Sách lp trình ARX và .DLL trong AutoCAD B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 2 LP TRÌNH TRONG AUTOCAD CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD II. Tng quan v Activex Automation III. Ngôn ng lp trình AutoLisp 1. Gii thiu chung 2. Cn bn v AutoLisp 3. Bin trong Lisp 4. File chng trình Lisp 5. Nhp d liu 6. Mt s hàm c bn 7. X lý danh sách 8. Biu thc điu kin 9. Vòng lp 10. Tp hp các đi tng đc chn 11. Lp trình vi c s d liu ca AutoCAD. 12. Phân tích ví d : IV. Ngôn ng lp trình Visual Lisp V. C bn v ngôn ng lp trình Visual Basic VI. Làm quen vi VBA. 1. VBA Projects 2. To mi project 3. T chc các project vi VBA Manager 4. Son tho project vi VBA IDE 5. Làm vic vi các Macro VII. Cn bn v VBA. 1. Mô hình đi tng ca AutoCAD. 2. Object Hierarchy. 3. i tng Collection. 4. Property & Method (thuc tính & phng thc). 5. Truy cp đn đi tng trong Object Hierarchy. 6. Truy cp đn đi tng Collection trong Object Hierarchy. 7. Truy cp đn Object Hierarchy bng VB, VBA trong các môi trng khác. CHNG 2 : LÀM VIC VI MÔI TRNG AUTOCAD B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 3 I. M, đóng và ghi li bn v 1. M bn v. 2. To mi bn v. 3. Lu bn v. II. iu khin ca s bn v 1. iu khin ca s AutoCAD. 2. iu khin ca s bn v. 3. iu khin s hin th bên trong ca s bn v. III. Ly và thit lp các thông s h thng 1. Ly và thit lp các bin h thng 2. Grid và Snap. 3. Ly và thit lp bin h thng trong Option. IV. S dng command line trong VBA V. Nhp d liu ngi dùng 1. Nhp Chui 2. Nhp ta đ mt đim 3. Nhp mt ký t đin hình cho Option 4. Nhp s thc, s nguyên. 5. GetCorner Method, GetAngle Method, GetDistance Method 6. GetEntity Method, GetSubEntity Method CHNG 3 : TO VÀ SA CÁC THC TH HA I. To đi tng bn v 1. Xác đnh đi tng cha thc th. 2. V Line, Arc, Circle, and Ellipse objects 3. To các khi đc 4. To đi tng hatch 5. To đi tng Region, các phép toán trên Region II. Thêm Text vào bn v 1. To các TextStyle 2. Chèn Text vào bn v 3. Chèn các ký t đc bit, các ký t Unicode. III. Sa các đi tng bn v 1. Các phép sa đi c bn 2. Các phép bin đi nâng cao 3. Chnh sa PolyLine, SpLine B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 4 IV. Block và thuc tính ca block 1. Blocks và Block References V. Chn đi tng 1. To Selectionset. 2. Thêm đi tng vào selection set 3. Lc đi tng trong selection set VI. Làm vic vi Group 1. To mt Group Object 2. Truy cp ti các Group Object 3. Thêm bt thc th vào Group 4. Xóa Group Object VII. S dng layer, color và linetype 1. S dng layer, color 2. S dng linetype 3. Gán layer, color, linetype cho đi tng VIII. Làm vic vi kích thc 1. Làm vic vi DimStyle 2. To các đng đo kích thc 3. To các leader. CHNG 4 : TÙY BIN MENUS VÀ TOOLBARS I. C bn v menu group và toolbar 1. Menugroup collection 2. Menugroup Object II. Thay đi menu bar 1. Chèn thêm menu vào menubar 2. Xoá b menu trên menubar 3. Sp xp li các menu trên menubar III. To và chnh sa Pull-down và Shorcut menus 1. To mi Pull-down menu 2. Chèn mt menu Item vào Pull-down menu 3. Chèn mt khong trng vào Pull-down menu 4. Thêm mt Menu Item vào Shortcut Menu 5. To Submenu cho menu item 6. Xóa bt menu item IV. To và chnh sa Toolbars B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 5 1. To mi toolbar 2. Thêm mt nút chn vào toolbar 3. nh ngha hình nh cho các nút Toolbar Button. 4. Thêm mt khong trng vào toolbar 5. Floating và Docking Toolbars 6. To các flyout toolbar 7. Xóa Toolbar và Toolbar Button V. To các macro 1. Các quy đnh v macro 2. Các ví d v macro CHNG 5 : PHÁT TRIN NG DNG VI VBA I. AutoCAD Events 1. Application-level events 2. Document-level events 3. Object-Level Events II. S dng Form 1. Làm vic vi Form và Macro 2. Làm vic vi module và macro III. Tng tác vi các ng dng và các c s d liu khác 1. Tng tác vi Visual Lisp 2. S dng c s d liu DAO 3. Giao tip vi các ng dng khác. IV. Làm vic vi Xdata 1. Khái nim v XData 2. Sets the extended data (XData) associated with an object. 3. Gets the extended data (XData) associated with an object. 4. Các Ví d V. Làm vic vi Xrecord 1. Khái nim v Xrecord 2. Phng thc AddXRecord 3. Phng thc SetXRecordData 4. Phng thc GetXRecordData B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 6 CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD Các cp ca ngi dung khi thao tác vi AutoCAD : – Cp I : Bit s dng CAD – Cp II : Bit qun lý và làm ch môi trng CAD – Cp III : Bit lp trình t đng hóa quá trình v Autocad cho ta các cách đ có th t đng quá quá trình v nh sau : – S dng các ngôn ng lp trình, sau đó kit xut ra bn v di dng các file vn bn DFX. – T đng hóa bng các file Script. – Lp trình trong môi trng CAD nh Lisp, Object ARX, VBA. AutoDesk cung cp cho chúng ta mt b các phn m rng đ kim soát AutoCad t ngôn ng. Nhng phn m rng này đc gi là Object ARX. ây là mt phng pháp tip cn vi CAD mt cách chuyên nghip nht tuy nhiên nó li quá phc tp. AutoLisp là mt ngôn ng lp trình thông dch, Nó là mt phiên bn mi nht v ngôn ng lp trình nhân to c nht mà ngày nay vn còn đc s dng. Autolisp nm trong b Common LISP. LISP vit tt ca LIST Processor !. Nói chung Lisp d hc bi cú pháp ca nó đn gin nhng nó không tng tác đc vi các c s d liu nh Excel, access. Nên vic s dng nó to ra các ng dng phc tp là rt khó. Tuy nhiên 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 môi trng lp trình hng đi tng s dng ngôn ng VB. u đim ca VBA là – S dng VB, mt ngôn ng lp trình tng đi thông dng và d hc. – VBA nm trong CAD nên tc đ chy cng tng đi nhanh. – D dàng trong vic to ra các giao din (hp thoi, menu). – Tng tác vi các ng dng khác và các c s d liu khác. – Cho phép ta ghi Project ra file riêng hoc tích hp luôn vào bn v. To điu kin đ phát trin ng dng mt cách mm do trong vic chia s d liu gia các ng dng khác trong môi trng Window. II. Tng quan v Activex Automation • 2 u đim ca AutoCAD ActiveX Activex automation là chun mc đc to ra bi hãng Microsoft, trc đây đc gi là OLE activex, cho phép mt ng dng Windows này kim soát mt ng dng Windows khác qua mô hình các đi tng rõ ràng. AutoCAD ActiveX là giao din cho phép ngi lp trình làm vic vi các đi tng ca AutoCAD. AutoCAD Activex cho phép bn s dng mt cách t đng không ch trong phm vi AutoCAD mà ngoài c AutoCAD. Các đi tng ca AutoCAD có th đc truy nhp đn bi nhiu ngôn ng lp trình khác nhau nh Ms word VBA, Ms Excel VBA, B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 7 • 2 u đim ca AutoCAD ActiveX • 2 u đim ca AutoCAD ActiveX – Tt c các ngôn ng lp trình đu có th làm vic vi các đi tng trong AutoCAD (không gii hn vi C++ và AutoLISP nh trc) – Tt c các ngôn ng lp trình đu có th làm vic vi các đi tng trong AutoCAD (không gii hn vi C++ và AutoLISP nh trc) – Chia s d liu vi các ng dng khác trên môi trng Windows (Excel, Word ) – Chia s d liu vi các ng dng khác trên môi trng Windows (Excel, Word ) • Mô hình client server. • Mô hình client server. Mc dù Activex luôn luôn bao gm mt cuc hi thoi gia hai ng dng, nó không phi là cuc hi thoi hai chiu gia các thành phn tng đng. Mi thành phn chng trình Activex Automation bao gm hai chng trình vi các vai trò khác 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 các hành đng mã này đc kim soát thc hin trên server. Hình di đây trình bày mi quan h gia Client và Server trong mt cuc trao đi Activex Automation đc thù. Mc dù Activex luôn luôn bao gm mt cuc hi thoi gia hai ng dng, nó không phi là cuc hi thoi hai chiu gia các thành phn tng đng. Mi thành phn chng trình Activex Automation bao gm hai chng trình vi các vai trò khác 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 các hành đng mã này đc kim soát thc hin trên server. Hình di đây trình bày mi quan h gia Client và Server trong mt cuc trao đi Activex Automation đc thù. ClientClient Starts conversation Request Object Supplies Object Invokes Method Close conversation Server Principle Activex Automation Supplies Object Di đây là mt s ng dng bn có th dung đ kim soát các server activex, k c AutoCAD. – Visual Basic – Excel VBA – Word VBA B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 8 – • Mô hình đi tng ca Automation. Mt Server Activex Automation (chng hn nh AutoCAD) thc hin các chc nng qua các đi tng. Mt đi tng là mt đi din ca thành ng dng. Mt đi tng đc phân bit vi các di tng khác b ba đc tính : – Phân loi ca đi tng – Các đc tính ca đi tng – Phng thc ca đi tng Ví d đi tng Line, đc tính ca đi tng cho phép bn xác đnh : – Màu sc – Lp – im khi đu – im kt thúc – dài Phng thc đi tng là – Sao chép – xóa – đi xng qua gng – di chuyn – quay Chú ý, các Autocad activex s không hot đng nu cad đang thc hin lnh. III. Ngôn ng lp trình AutoLisp 1. Gii thiu chung u đim : Tc đ chy nhanh Nhc đim : – Là ngôn ng lp trình thông dch, ko cu trúc – Không kt ni đc vi các c s d liu nh Access, Excel… 2. Cn bn v AutoLisp 2.1. Xây dng biu thc AutoLisp • Cu trúc d liu c bn ca Lisp là danh sách (List) • Danh sách là tp hp các phn t cha trong các du ngoc đn, các phn t đc cách nhau bi mt hoc nhiu du cách • Danh sách có 2 loi : Biu thc toán hc (expression) và danh sách d liu (data list). • Phn t đu tiên ca ca mt biu thc luôn luôn là mt hàm • Mt biu thc bao gm tên hàm và các tham s cha trong các du ngoc đn. Khác vi biu thc toán hc, các tham s trong biu thc Lisp là các tham s có th t. • Tham s là các giá tr cung cp cho hàm đ tính toán • AutoLisp tr v kt qu tính toán t biu thc. Ví d : (+ 30 20 50) Tr v kt qu : 100 2.2. Cách nhp biu thc AutoLisp Biu thc Lisp có th đc nhp nh các dòng lnh ca AutoCAD, chú ý rng biu thc ca Lisp luôn luôn nm trong du ngoc đn ( … ). Khi nhp trc tip bng dòng lnh, bn nên chú ý kéo dài ca s AutoCAD Text Window ra đ có th theo dõi đc kt qu cng nh li ca nó. Command: (- ( + 140 10) 30)↵ 120 B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 9 2.3. Các hàm s hc Hàm cng (+) : (+ [number 1] [number 2] [number 3]….) Danh sách bt đu bng du + báo cho lisp đó là hàm, các phn t đng sau nó s là tham s. D liu s đc chia làm 2 loi : • S nguyên (ko có du chm) • S thp phân (có du chm) Kt qu tr v s có kiu là kiu rng nht trong các 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 Hàm tr (-) Hàm nhân (*) Hàm chia (/) Command: ( / 120 10 3)↵ 4 Command: ( * 3.75 3.775)↵ 14.0625 Lisp lu tr ti 14 s thp phân nhng kt qu tr v trên màn hình s ch có 6 ch s có ngha tính t trái sang phi. Ví d : 18-[(3+6+9):(9-6)-12] Command: (- (- 18 (/ (+ 3 6 9) (- 9 6))) 12) 0 3. Bin trong Lisp Ký hiu • Tên bin cng nh tên hàm ko phn bit ch hoa, ch thng. • Bin không nht thit cn khai báo Gán giá tr cho bin S dng hàm Setq đ gán giá tr cho mt bin. Cú pháp nh sau : (SetQ Symbol1 value1 [symbol2 value2] …) Ging nh các hàm khác, hàm SetQ tr v mt giá tr. Giá tr này có th là “nill” (rng), “T” (True) hoc các s, chui, danh sách. 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ó tác dng trong phm vi bn v B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 10 S dng bin trong dòng lnh Command : (setq x 10)↵ 10 Command : (!X) 10 Command : circle↵ 3P/ <Center point> : Nhp ta đ tâm Diameter <Radius> : !x 4. File chng trình Lisp 4.1. File lisp Quy đnh chung : • File Lisp có phn m rng là *.lsp • Mt biu thc có th vit trên nhiu dòng • Các biu thc không phân bit ch hoa, ch thng • Chui chú thích bt đu bng du chm phy Các ti file lisp vào trong AutoCAD • S dng hàm Load Command : (Load E:/autoLisp/CHT.lsp) Hoc Command : (Load E:\\toLisp\\T.lsp) • S dng hàm Appload (Application Load) 4.2. Hàm t to B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG [...]... t Ví d : u tiên c a danh sách g c 15 KS GV TR N ANH BÌNH Command : (setq a3 (CDR a1) (1 30 40) NG Hàm CADR, CADDR (CADR list) tr v ph n t th 2 c a danh sách (CADDR list) tr v ph n t th 3 c a danh sách IN H C XÂY D Hàm Last Cú pháp : (Last list) : Tr v ph n t cu i cùng c a danh sách T NLength Ô Hàm M Cú pháp : (Length List) : tr B v s l ng ph n t có trong danh sách 7.4 Hàm x lý danh sách nâng cao Hàm... Expr …) Hàm Foreach duy t t ng ph n t trong danh sách LIST T i m i th i i m, giá tr c a t ng ph n t trong danh sách s c gán cho bi n Name Sau ó các bi u th c 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 “\nCác giá tr th “ (itoa i) trong danh sách là” (itoa so))) ) 18 IH NG TR C XÂY KS GV TR N ANH BÌNH 10 T p h p các 10.1 it ng c ch n... GT N HÔ T IH IN C XÂY D NG NG TR 22 KS GV TR N ANH BÌNH IV V C b n v ngôn ng l p trình Visual Basic VI B Ngôn ng l p trình Visual Lisp Làm quen v i VBA NT Ô IN H 1 VBA Projects Ch ng trình VBA form VBA Project có th riêng (*.DVB) M C XÂY D NG c t ch c trong các project, 1 Project là t p h p các module: mã, l p, c l u trong file b n v DWG (ch nhúng) ho c c l u trong 1 file 2 T o m i project M VBA Manager,... thi u ch c n ng các nút trong h p tho i VBA Manager IH C XÂY D NG NG TR 4 So n th o project v i VBA IDE 23 KS GV TR N ANH BÌNH Gi i thi u các c a s c a VBA IDE NT Ô B IN H C XÂY D NG M H NG G ÔN AC GT N HÔ T IN C a s Project Manager Objects ( i t ng) Forms G m các h p tho i do ng i l p trình t o ra, s d ng trong project Modules Các hàm dùng chung trong toàn b Project c t ch c trong các module riêng... Khi kh i ng AutoCAD, hàm S::startup nh ngh a trong file ACADRx.lsp s và thi hành ây là hàm duy nh t có tính ch t này ct c tên ng g i 5 Nh p d li u 5.1 Nh p d li u ng i dùng Nh p t a m t i m : Hàm getpoint (GetPoint [pt] [prompt]) Hàm này s tr v m t danh sách Danh sách này thu c s ng danh sách l u tr d li u (Data Storage list) Lo i danh sách này khác v i bi u th c ch , ph n t u tiên c a danh sách không... n d hi u qu n lý t t c các i t ng và m i quan h gi a chúng IH 2 Object Hierarchy G i thi u : C XÂY D NG TR 25 KS GV TR N ANH BÌNH NT Ô B IN H C XÂY D NG M KHO H NG G ÔN AC GT N HÔ T IH IN C XÂY D NG NG TR 26 KS GV TR N ANH BÌNH 3 i t ng Collection AutoCAD nhóm h u h t các i t ng (Object) trong m t collections Cho dù các collections này ch a nhi u lo i d li u khác nhau, nh ng chúng có th có chúng c tao... acadPref.Display.CursorSize = 100 End Sub KHO IH IV C XÂY D NG NG S d ng command line trong VBA S d ng SendCommand method g i l nh m t cách tr c ti p cho AutoCAD Ph ng th c SendCommand s g i m t chu i n t i dòng l nh command line Chu it ph i ch a các tham s cho TR 33 KS GV TR N ANH BÌNH l nh, th t vi t trong chu i nh vi t trong macro ã h c trong ph n Customize menu Phím cách ho c mã ASCII t ng ng s t ng ng v i... (association) Cú pháp : (Assoc Item AList) : Danh sách Alist ph i ch a ph n t Item, và là danh sách ph c h p Hàm s tr v m t danh sách con c a Alist mà ph n t u tiên là Item N u không tìm th y ph n t Item trong Alist thì hàm 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... thì ch ng trình s l y Session u tiên trong Windows Running Object Table KHO H NG G ÔN AC GT N HÔ T IH IN C XÂY D NG NG TR 29 KS GV TR N ANH BÌNH CH I NG 2 : LÀM VI C V I MÔI TR M , óng và ghi l i b n v D XÂY NG NG AUTOCAD 1 M b n v m b n v , s d ng ph ng th c Open method S d ng hàm DIR c a Visual Basic ki m tra s t n t i c a b n v tr c khi m B n c ng có th thay i tên và ng d n c a b n v trong ng d... : (Ssname ss index) : tr v tên c a i t ng th index trong t p h p ch n SS (l u ý : u tiên c a t p h p ch n index=0) Ví d xóa ph n t th nh t c a danh sách ch n (command “erase” (Ssname SS 0) “”) Hàm EntGet (entity get) Cú pháp : (ENTGET entname) (SETQ DS (ENTGET (SSNAME SS DEM))) (SETQ KDL (CDR (ASSOC 0 DS))) IH C NG TR 19 KS GV TR N ANH BÌNH 11 L p trình v i c s d li u c a AutoCAD 11.1 L y Record d . XÂY DNG KS. GV. TRN ANH BÌNH 2 LP TRÌNH TRONG AUTOCAD CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD II. Tng quan v Activex Automation III. Ngôn ng lp trình AutoLisp. THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 6 CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD Các cp ca ngi dung khi thao tác vi AutoCAD. Hàm này s tr v mt danh sách. Danh sách này thuc sng danh sách lu tr d liu (Data Storage list). Loi danh sách này khác vi biu thc ch, phn t đu tiên ca danh sách không phi là