Giáo trình lập trình trong Autocad, GV Trần Anh Bình

101 458 0
Giáo trình lập trình trong Autocad, GV Trần Anh Bình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LP TRÌNH TRONG AUTOCAD Ging Viên : Trn anh Bình Cp nht ngày 25/8/2007 Sách tham kho : • AutoCAD 2004 Bible – Wileys & Sons • Mastering in AutoCAD 2000 – George Omura • AutoCAD 2004 For Dummies – John Wiley & Sons • AutoCAD 2000 (1,2) – KTS.Lu Triu Nguyên. • AutoCAD 2004 (1,2) c bn và nâng cao – TS.Nguyn Hu Lc. • Các tin ích thit k trên AutoCAD – TS.Nguyn Hu Lc. – Nguyn Thanh Trung. • AutoCAD 2004 (1,2) c bn và nâng cao – TS.Nguyn Hu Lc. • AutoCAD 2004 Activex and VBA – KS.Hoàng Thành An. Liên h : KS. GV. Trn Anh Bình : - T : 0983039940 - Mail 1 : anhbinh0310@yahoo.com - Mail 2 : binhta@uce.edu.vn ón đc : Sách lp trình ARX và .DLL trong AutoCAD B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 2 LP TRÌNH TRONG AUTOCAD CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD II. Tng quan v Activex Automation III. Ngôn ng lp trình AutoLisp 1. Gii thiu chung 2. Cn bn v AutoLisp 3. Bin trong Lisp 4. File chng trình Lisp 5. Nhp d liu 6. Mt s hàm c bn 7. X lý danh sách 8. Biu thc điu kin 9. Vòng lp 10. Tp hp các đi tng đc chn 11. Lp trình vi c s d liu ca AutoCAD. 12. Phân tích ví d : IV. Ngôn ng lp trình Visual Lisp V. C bn v ngôn ng lp trình Visual Basic VI. Làm quen vi VBA. 1. VBA Projects 2. To mi project 3. T chc các project vi VBA Manager 4. Son tho project vi VBA IDE 5. Làm vic vi các Macro VII. Cn bn v VBA. 1. Mô hình đi tng ca AutoCAD. 2. Object Hierarchy. 3. i tng Collection. 4. Property & Method (thuc tính & phng thc). 5. Truy cp đn đi tng trong Object Hierarchy. 6. Truy cp đn đi tng Collection trong Object Hierarchy. 7. Truy cp đn Object Hierarchy bng VB, VBA trong các môi trng khác. CHNG 2 : LÀM VIC VI MÔI TRNG AUTOCAD B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 3 I. M, đóng và ghi li bn v 1. M bn v. 2. To mi bn v. 3. Lu bn v. II. iu khin ca s bn v 1. iu khin ca s AutoCAD. 2. iu khin ca s bn v. 3. iu khin s hin th bên trong ca s bn v. III. Ly và thit lp các thông s h thng 1. Ly và thit lp các bin h thng 2. Grid và Snap. 3. Ly và thit lp bin h thng trong Option. IV. S dng command line trong VBA V. Nhp d liu ngi dùng 1. Nhp Chui 2. Nhp ta đ mt đim 3. Nhp mt ký t đin hình cho Option 4. Nhp s thc, s nguyên. 5. GetCorner Method, GetAngle Method, GetDistance Method 6. GetEntity Method, GetSubEntity Method CHNG 3 : TO VÀ SA CÁC THC TH  HA I. To đi tng bn v 1. Xác đnh đi tng cha thc th. 2. V Line, Arc, Circle, and Ellipse objects 3. To các khi đc 4. To đi tng hatch 5. To đi tng Region, các phép toán trên Region II. Thêm Text vào bn v 1. To các TextStyle 2. Chèn Text vào bn v 3. Chèn các ký t đc bit, các ký t Unicode. III. Sa các đi tng bn v 1. Các phép sa đi c bn 2. Các phép bin đi nâng cao 3. Chnh sa PolyLine, SpLine B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 4 IV. Block và thuc tính ca block 1. Blocks và Block References V. Chn đi tng 1. To Selectionset. 2. Thêm đi tng vào selection set 3. Lc đi tng trong selection set VI. Làm vic vi Group 1. To mt Group Object 2. Truy cp ti các Group Object 3. Thêm bt thc th vào Group 4. Xóa Group Object VII. S dng layer, color và linetype 1. S dng layer, color 2. S dng linetype 3. Gán layer, color, linetype cho đi tng VIII. Làm vic vi kích thc 1. Làm vic vi DimStyle 2. To các đng đo kích thc 3. To các leader. CHNG 4 : TÙY BIN MENUS VÀ TOOLBARS I. C bn 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. Sp xp li các menu trên menubar III. To và chnh sa Pull-down và Shorcut menus 1. To mi Pull-down menu 2. Chèn mt menu Item vào Pull-down menu 3. Chèn mt khong trng vào Pull-down menu 4. Thêm mt Menu Item vào Shortcut Menu 5. To Submenu cho menu item 6. Xóa bt menu item IV. To và chnh sa Toolbars B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 5 1. To mi toolbar 2. Thêm mt nút chn vào toolbar 3. nh ngha hình nh cho các nút Toolbar Button. 4. Thêm mt khong trng vào toolbar 5. Floating và Docking Toolbars 6. To các flyout toolbar 7. Xóa Toolbar và Toolbar Button V. To các macro 1. Các quy đnh v macro 2. Các ví d v macro CHNG 5 : PHÁT TRIN NG DNG VI VBA I. AutoCAD Events 1. Application-level events 2. Document-level events 3. Object-Level Events II. S dng Form 1. Làm vic vi Form và Macro 2. Làm vic vi module và macro III. Tng tác vi các ng dng và các c s d liu khác 1. Tng tác vi Visual Lisp 2. S dng c s d liu DAO 3. Giao tip vi các ng dng khác. IV. Làm vic vi Xdata 1. Khái nim 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 vic vi Xrecord 1. Khái nim v Xrecord 2. Phng thc AddXRecord 3. Phng thc SetXRecordData 4. Phng thc GetXRecordData B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 6 CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD Các cp ca ngi dung khi thao tác vi AutoCAD : – Cp I : Bit s dng CAD – Cp II : Bit qun lý và làm ch môi trng CAD – Cp III : Bit lp 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 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. – Cho phép ta ghi Project ra file riêng hoc tích hp luôn vào bn v. To điu kin đ phát trin ng dng mt cách mm do trong vic chia s d liu gia các ng dng khác trong môi trng Window. II. Tng quan v Activex Automation • 2 u đim ca AutoCAD ActiveX Activex automation là chun mc đc to ra bi hãng Microsoft, trc đây đc gi là OLE activex, cho phép mt ng dng Windows này kim soát mt ng dng Windows khác qua mô hình các đi tng rõ ràng. AutoCAD ActiveX là giao din cho phép ngi lp trình làm vic vi các đi tng ca AutoCAD. AutoCAD Activex cho phép bn s dng mt cách t đng không ch trong phm vi AutoCAD mà ngoài c AutoCAD. Các đi tng ca AutoCAD có th đc truy nhp đn bi nhiu ngôn ng lp trình khác nhau nh Ms word VBA, Ms Excel VBA, B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 7 • 2 u đim ca AutoCAD ActiveX • 2 u đim ca AutoCAD ActiveX – Tt c các ngôn ng lp trình đu có th làm vic vi các đi tng trong AutoCAD (không gii hn vi C++ và AutoLISP nh trc) – Tt c các ngôn ng lp trình đu có th làm vic vi các đi tng trong AutoCAD (không gii hn vi C++ và AutoLISP nh trc) – Chia s d liu vi các ng dng khác trên môi trng Windows (Excel, Word ) – Chia s d liu vi các ng dng khác trên môi trng Windows (Excel, Word ) • Mô hình client server. • Mô hình client server. Mc dù Activex luôn luôn bao gm mt cuc hi thoi gia hai ng dng, nó không phi là cuc hi thoi hai chiu gia các thành phn tng đng. Mi thành phn chng trình Activex Automation bao gm hai chng trình vi các vai trò khác nhau. Client là ng dng khi to cuc hi thoi. Server là ng dng hi đáp client. Mã Activex Automation chy trong client, trong khi các hành đng mã này đc kim soát thc hin trên server. Hình di đây trình bày mi quan h gia Client và Server trong mt cuc trao đi Activex Automation đc thù. Mc dù Activex luôn luôn bao gm mt cuc hi thoi gia hai ng dng, nó không phi là cuc hi thoi hai chiu gia các thành phn tng đng. Mi thành phn chng trình Activex Automation bao gm hai chng trình vi các vai trò khác nhau. Client là ng dng khi to cuc hi thoi. Server là ng dng hi đáp client. Mã Activex Automation chy trong client, trong khi các hành đng mã này đc kim soát thc hin trên server. Hình di đây trình bày mi quan h gia Client và Server trong mt cuc trao đi Activex Automation đc thù. ClientClient Starts conversation Request Object Supplies Object Invokes Method Close conversation Server Principle Activex Automation Supplies Object Di đây là mt s ng dng bn có th dung đ kim soát các server activex, k c AutoCAD. – Visual Basic – Excel VBA – Word VBA B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 8 – • Mô hình đi tng ca Automation. Mt Server Activex Automation (chng hn nh AutoCAD) thc hin các chc nng qua các đi tng. Mt đi tng là mt đi din ca thành ng dng. Mt đi tng đc phân bit vi các di tng khác b ba đc tính : – Phân loi ca đi tng – Các đc tính ca đi tng – Phng thc ca đi tng Ví d đi tng Line, đc tính ca đi tng cho phép bn xác đnh : – Màu sc – Lp – im khi đu – im kt thúc –  dài Phng thc đi tng là – Sao chép – xóa – đi xng qua gng – di chuyn – quay Chú ý, các Autocad activex s không hot đng nu cad đang thc hin lnh. III. Ngôn ng lp trình AutoLisp 1. Gii thiu chung u đim : Tc đ chy nhanh Nhc đim : – Là ngôn ng lp trình thông dch, ko cu trúc – Không kt ni đc vi các c s d liu nh Access, Excel… 2. Cn bn v AutoLisp 2.1. Xây dng biu thc AutoLisp • Cu trúc d liu c bn ca Lisp là danh sách (List) • Danh sách là tp hp các phn t cha trong các du ngoc đn, các phn t đc cách nhau bi mt hoc nhiu du cách • Danh sách có 2 loi : Biu thc toán hc (expression) và danh sách d liu (data list). • Phn t đu tiên ca ca mt biu thc luôn luôn là mt hàm • Mt biu thc bao gm tên hàm và các tham s cha trong các du ngoc đn. Khác vi biu thc toán hc, các tham s trong biu thc Lisp là các tham s có th t. • Tham s là các giá tr cung cp cho hàm đ tính toán • AutoLisp tr v kt qu tính toán t biu thc. Ví d : (+ 30 20 50) Tr v kt qu : 100 2.2. Cách nhp biu thc AutoLisp Biu thc Lisp có th đc nhp nh các dòng lnh ca AutoCAD, chú ý rng biu thc ca Lisp luôn luôn nm trong du ngoc đn ( … ). Khi nhp trc tip bng dòng lnh, bn nên chú ý kéo dài ca s AutoCAD Text Window ra đ có th theo dõi đc kt qu cng nh li ca nó. Command: (- ( + 140 10) 30)↵ 120 B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 9 2.3. Các hàm s hc Hàm cng (+) : (+ [number 1] [number 2] [number 3]….) Danh sách bt đu bng du + báo cho lisp đó là hàm, các phn t đng sau nó s là tham s. D liu s đc chia làm 2 loi : • S nguyên (ko có du chm) • S thp phân (có du chm) Kt qu tr v s có kiu là kiu rng nht trong các kiu ca 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 lu tr ti 14 s thp phân nhng kt qu tr v trên màn hình s ch có 6 ch s có ngha tính t trái sang phi. Ví d : 18-[(3+6+9):(9-6)-12] Command: (- (- 18 (/ (+ 3 6 9) (- 9 6))) 12) 0 3. Bin trong Lisp Ký hiu • Tên bin cng nh tên hàm ko phn bit ch hoa, ch thng. • Bin không nht thit cn khai báo Gán giá tr cho bin S dng hàm Setq đ gán giá tr cho mt bin. Cú pháp nh sau : (SetQ Symbol1 value1 [symbol2 value2] …) Ging nh các hàm khác, hàm SetQ tr v mt giá tr. Giá tr này có th là “nill” (rng), “T” (True) hoc các s, chui, 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 Phm vi bin Bin ch có tác dng trong phm vi bn v B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 10 S dng bin trong dòng lnh Command : (setq x 10)↵ 10 Command : (!X) 10 Command : circle↵ 3P/ <Center point> : Nhp ta đ tâm Diameter <Radius> : !x 4. File chng trình Lisp 4.1. File lisp Quy đnh chung : • File Lisp có phn m rng là *.lsp • Mt biu thc có th vit trên nhiu dòng • Các biu thc không phân bit ch hoa, ch thng • Chui chú thích bt đu bng du chm phy Các ti file lisp vào trong AutoCAD • S dng hàm Load Command : (Load E:/autoLisp/CHT.lsp) Hoc Command : (Load E:\\toLisp\\T.lsp) • S dng hàm Appload (Application Load) 4.2. Hàm t to B MÔN TIN HC XÂY DNG KHOA CÔNG NGH THÔNG TIN TRNG I HC XÂY DNG [...]... 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 DNG KS. GV. TRN ANH BÌNH 2 LP TRÌNH TRONG AUTOCAD CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD II. Tng quan v Activex Automation III. Ngôn ng lp trình AutoLisp. THÔNG TIN TRNG I HC XÂY DNG KS. GV. TRN ANH BÌNH 6 CHNG 1 : GII THIU CHUNG I. Ngôn ng lp trình trong CAD Các cp ca ngi dung khi thao tác vi AutoCAD. 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 phi là

Ngày đăng: 06/05/2015, 16:47