Tran Duc Tang – Military Technical Academy 1.3 Các công c ụ l ậ p trình trên AutoCAD Script t ậ p l ệ nh Cho phép thực hiện các lệnh của AutoCAD từmột tệp văn bản có phần mởrộng là *.SC
Trang 1Ch ươ ng 1 M ở ñầ u
TS Tr ầ n ðứ c T ă ng Khoa Hàng không-V ũ tr ụ , H ọ c vi ệ n KTQS
ð T: 0973 991486; Email: tranductang@yahoo.com
1.1 Gi ớ i thi ệ u
Hi ệ n nay các ph ầ n m ề m thi ế t k ế có r ấ t nhi ề u v ề s ố lượ ng nh ư ng có
th ể chia thành hai lo ạ i chính
– Các phần mềm thương mại do các công ty tin học chuyên nghiệp thực
hiện, chúng có quy mô lớn, giải quyết những vấn ñềchính, phổbiến;
ví dụ: AutoCAD, SolidWorks, Inventor,…
– Các phần mềm do các công ty tư vấn thiết kếtựphát triển, hầu hết là
những phần mềm có quy mô không lớn và tập trung giải quyết các bài
toán cục bộ, chuyên biệt trong lĩnh vực chuyên ngành
Tuy nhiên các ph ầ n m ề m này v ẫ n còn nh ữ ng khi ế m khuy ế t b ở i s ự
ñ a d ạ ng c ủ a th ự c t ế thi ế t k ế
Chính vì v ậ y vi ệ c xây d ự ng thêm nh ữ ng ch ươ ng trình m ớ i, nh ư là
m ộ t công c ụ b ổ sung, nh ằ m kh ắ c ph ụ c nh ữ ng khi ế m khuy ế t,
nh ữ ng v ấ n ñề phát sinh trong quá trình thi ế t k ế là c ầ n thi ế t và có
tính hi ệ u qu ả cao
Trang 2© 2010 Dr Tran Duc Tang – Military Technical Academy
AutoCAD là m ộ t trong nh ữ ng ph ầ n m ề m CAD ñượ c s ử d ụ ng r ộ ng
rãi trên th ế gi ớ i M ộ t trong nh ữ ng lý do chính khi ế n AutoCAD ñượ c
s ử d ụ ng ph ổ bi ế n là tính linh ho ạ t c ủ a nó
V ớ i c ấ u trúc m ở , AutoCAD có th ể ñượ c cá bi ệ t hóa ñể ñ áp ứ ng
ph ầ n l ớ n các yêu c ầ u c ủ a ng ườ i s ử d ụ ng, nh ư c ấ u hình l ạ i các
menu, các thanh công c ụ (toolbar), thêm các l ệ nh chuyên d ụ ng,
hay phát tri ể n các ch ươ ng trình b ổ sung (add-on) có th ể ch ạ y trong
AutoCAD.
Vi ệ c tùy bi ế n CAD giúp ti ế t ki ệ m th ờ i gian, tăng năng suấ t và ch ấ t
l ượ ng thi ế t k ế Ta có th ể t ự ñộ ng hóa các công vi ệ c bu ồ n t ẻ , lo ạ i
b ỏ vi ệ c gõ phím l ặ p l ạ i nhi ề u l ầ n.
Khi nào thì nên tùy bi ế n CAD?
– Không có các quy tắc rõ ràng, nhưng nhìn chung bất cứkhi nào nó
giúp tiết kiệm thời gian hay nâng cao chất lượng công việc thiết kếcủa
b n
– Nếu bạn phải thực hiện một công việc duy nhất nhưng cách thức thực
hiện khó khăn cho một dựán cụthể Sẽkhông hiệu quả ñể ñầu tư
nhiều thời gian viết một chương trình ñểtự ñộng hóa công việc trên
nhưng chỉsửd ng một lần Ngược lại, nếu nó có thểsửd ng lại
nhiều lần, việc tự ñộng hóa sẽtiết kiệm rất nhiều thời gian
– Một lợi ích của việc tùy biến CAD là sẽcải thiện các kỹ năng kỹthuậ
của bạn Vì bạn cốg ng lập trình cho CAD, bạn sẽcó hiểu biết sâu
Trang 3© 2010 Dr Tran Duc Tang – Military Technical Academy
Ví d ụ : khi l ậ p các phi ế u công ngh ệ các k ỹ sư phả i m ấ t nhi ề u th ờ i
gian ñể v ẽ các s ơ ñồ nguyên công , trong ñ ó c ầ n th ể hi ệ n hình
d ạ ng c ủ a phôi và chi ti ế t gia công, các b ề m ặ t gia công, m ặ t chu ẩ n,
các d ụ ng c ụ gá k ẹ p và d ụ ng c ụ c ắ t, …
– ðây là việc làm buồn tẻvà thường phải lặp ñi lặp lại nhiều lần
– Nếu tạo ra trước trong CAD một thư viện các dụng cụcắt và ñồgá và
khi cần có thểchọn và chèn chúng rất nhanh vào sơñồnguyên công
Hộp thoại
chọn vàchèn
d ng cụ
vào phiếu nguyên công
Trang 4© 2010 Dr Tran Duc Tang – Military Technical Academy
Hộp thoại
phục
vụtra và
ñiền các thông
số
công nghệ
Bổsung tính năng
mới cho AutoCAD trong thiế
kếcầu
ñường
Trang 5© 2010 Dr Tran Duc Tang – Military Technical Academy
1.2 L ậ p trình trên ứ ng d ụ ng n ề n
Khi ng ườ i dùng xây d ự ng nh ữ ng ch ươ ng trình c ủ a mình d ự a trên
nh ữ ng ứ ng d ụ ng ñượ c thi ế t k ế theo c ấ u trúc m ở , ng ườ i dùng s ẽ
t ậ n d ụ ng ñượ c nh ữ ng kh ả năng sẵ n có c ủ a nh ữ ng ứ ng d ụ ng này
ñể làm n ề n, giúp cho vi ệ c l ậ p trình ñượ c nhanh và hi ệ u qu ả hơn rấ t
nhi ề u so v ớ i cách l ậ p trình thông th ườ ng, và do ñ ó có th ể g ọ i các
M ộ t l ệ nh m ớ i hay m ộ t ch ứ c n ă ng m ớ i ñượ c xây d ự ng trên ứ ng
d ụ ng n ề n th ự c ch ấ t là m ộ t ch ươ ng trình hoàn ch ỉ nh, vì v ậ y ñể xây
d ự ng nó c ầ n có công c ụ l ậ p trình t ươ ng ứ ng Thông th ườ ng công
c ụ l ậ p trình ñượ c hi ể u nh ư là m ộ t t ậ p h ợ p bao g ồ m:
– Ngôn ngữlập trình
– Môi trường lập trình
– Thư viện hỗtrợlập trình (thường là những phần mềm bổsung giúp
cho việc xây dựng chương trình ñược nhanh hơn thông qua sựkế
Trang 6© 2010 Dr Tran Duc Tang – Military Technical Academy
1.3 Các công c ụ l ậ p trình trên AutoCAD
Script (t ậ p l ệ nh)
Cho phép thực hiện các lệnh của AutoCAD từmột tệp văn bản (có
phần mởrộng là *.SCR)
AutoLISP và VisualLISP
AutoLISP dựa trên ngôn ngữlập trình LISP, một ngôn ngữd sửd ng
và cũng khá mạnh Với môi trường phát triển tích hơp VisulaLISP có
sẵn trong AutoCAD, người dùng có thểd dàng tạo ra các ứng dụng
mởrộng AutoCAD Tất cảcác mã lệnh viết bằng AutoLISP sẽ ñược
lưu trong tệp có phần mởrộng là *.LSP
VisualLISP công cụh
trợcho lập trình với AutoLISP trong AutoCAD
Trang 7© 2010 Dr Tran Duc Tang – Military Technical Academy
ObjectARX (AutoCAD Runtime Extension)
ObjectARX chứa các thư viện liên kế ñộng, qua ñ người dùng có thể
tác ñộng trực tiếp lên nhân của chương trình AutoCAD Chính vì vậy,
chương trình viết với ObjectARX có khả năng rất mạnh, và thường
ñược sửd ng ñểviết các ứng dụng lớn Các chương trình sửd ng
ObjectARX ñược viết bằng ngỗn ngữVC++ và ñược biên dịch thành
tệp có phần mởrộng là *.ARX
L p trình sửd ng ObjectARX
ActiveX Automation
Công nghệnày cho phép chia sẻdữliệu của bản vẽvới các chương
trình khác Và do ñó, ta có thểphát triển ứng dụng bằng các ngôn ngữ
lập trình khác nhau như Visual Basic, VC++ ñểtận dụng tất cảcác
tính năng sẵn có của AutoCAD thông qua mô hình ñối tượng của
AutoCAD
AutoCAD Visual Basic for Application (VBA)
Là môi trường lập trình ñược tích hợp sẵn trong AutoCAD Các
chương trình VBA viết bằng ngôn ngữVisual Basic, hoạ ñộng dựa
trên giao diện ActiveX Automation Sựkết hợp giữa AutoCAD, ActiveX
Automation và VBA tạo nên nhiều lợi thếcho các ứng dụng mởrộng
viết bằng VBA
Trang 8© 2010 Dr Tran Duc Tang – Military Technical Academy
Môi trường VBA trong AutoCAD
M ỗ i công c ụ l ậ p trình luôn có nh ữ ng ñặ c ñ i ể m riêng, do ñ ó ñể
l ự a ch ọ n công c ụ l ậ p trình thích h ợ p khi l ậ p trình trên ứ ng
Trang 91.4 L ậ p trình trên AutoCAD b ằ ng VBA
1.4.1 T ạ i sao s ử d ụ ng VB?
VBA là công ngh ệ phát tri ể n nhanh ph ầ n m ề m ñượ c tích h ợ p vào
trong ứ ng d ụ ng n ề n và th ự c ch ấ t VBA d ự a trên ki ế n tr ụ c COM
(Component Object Model) B ằ ng cách s ử d ụ ng VBA, ng ườ i s ử
d ụ ng s ẽ có ñượ c r ấ t nhi ề u l ợ i th ế :
– VBA bao gồm một môi trường phát triển tích hợp sẵn trong ứng dụng
n n (VBA Integrated Development Enviroment – VBA IDE), giúp người
dùng có thểmởrộng ứng dụng nền một cách dễdàng mà không cần
thêm một công cụlập trình nào khác
– VBA sửd ng ngôn ngữlập trình VB, một ngôn ngữlập trình tương ñối
d sửd ng và là ngôn ngữlập trình phổbiến
– VBA trong mỗi ứng dụng ñược dựa trên mô hình ñối tượng của ứng
d ng nền, nên người sửd ng có thểphát triển ứng dụng một cách
nhanh chóng và dễdàng hơn, do ñã quen thuộc với cách thức thao
tác trong các ứng dụng nền
Trang 10© 2010 Dr Tran Duc Tang – Military Technical Academy
– Khai thác ñược hầu hết các tính năng sẵn có của ứng dụng nề
– Do ñược tích hợp chặt chẽtrong ứng dụng nền, các chương trình viế
b ng VBA sẽcó tốc ñộthực thi nhanh hơn so với những chương trình
ngoài khác
– Các chương trình viết bằng VBA có thể ñược nhúng trong tệp của ứng
d ng nền (ví dụtệp bản vẽcủa AutoCAD) hoặc có thể ñược lưu dưới
d ng một dựán ñộc lập ðiều này giúp cho việc phân phối, chia sẻmã
lệnh ñược thuận tiện
– AutoCAD hỗtrợVBA và cung cấp một hệthống tài liệu trợgiúp phong
phú, giúp phát triển ứng dụng nhanh chóng và dễdàng
1.4.2 Các h ạ n ch ế c ủ a VB
VB nói chung và VBA nói riêng có những hạn chếnhấ ñịnh:
– Ngôn ngữlập trình VB không mạnh như ngôn ngữC hay C++
– VB cung cấp cho chúng ta bộbiên dịch riêng ñểtạo các file thực hiện
(Executed File), VBA hoạ ñộng trong chế ñộthông dịch và không cho
phép tạo các file thực hiện (Executable File)
Trang 11© 2010 Dr Tran Duc Tang – Military Technical Academy
1.4.3 Các phiên b ả n c ủ a VB
Stand-alone Visual Basic - VB
– VB ñược thiết kếcho phát triển các ứng dụng chung, các ứng dụng
VB có thể ñược sửd ng trong rất nhiều môi trường khác nhau
– Trong VB có 4 phiên bản (Edition)
Visual Basic Control Creation Edition
Visual Basic Learining Edition
Visual Basic Professional Edition
Visual Basic Enterprise Edition
Visual Basic for Application – VBA
– VBA là một phiên bản của VB ñược thiết kế ñểlàm việc trong các ứng
d ng cụthể, ví dụAutoCAD, Microsofr Excel,…
– VBA xuất hiện ñầu tiên trong Microsoft Excel và Microsoft Project năm
1994 và hiện nay nó là một thành phần lõi của bộMicrosoft Office
cũng như AutoCAD
– AutoCAD VBA có ñầy ñủcú pháp của ngôn ngữVB
– Khi cài ñặt AutoCAD, nếu chọn tùy chọn bao gồm VBA, ta có thểtruy
cập vào môi trường VBA từmenu “Tools” của AutoCAD, như chỉra ở
hình dưới
– Mộ ñiểm khác biệt quan trọng giữa VBA và VB là các hộp thoại
(dialog boxes) trong AutoCAD VBA là modal, nghĩa là người sửd ng
phải ñáp lại (respond) hộp thoại trước khi các phần khác của ứng
d ng ñược tiếp tục Trong VB, các hộp thoại có thểlà modal hoặc
modeless
Trang 12© 2010 Dr Tran Duc Tang – Military Technical Academy
vào Visual Basic Editor t ừ
Trang 13© 2010 Dr Tran Duc Tang – Military Technical Academy
1.4.5 B ắ t ñầ u v ớ i VBA
ðể b ắ t ñầ u AutoCAD VBA, có th ể th ự c hi ệ n theo 2 cách:
– Chọn Tools menu của AutoCAD, sau ñó chọn Macro, chọn Visual
Basic Editor
– Gõ VBAIDE từdòng lệnh của AutoCAD vàấn Enter
Visual Basic Interactive Development Enviroment (IDE) s ẽ xu ấ t
hi ệ n nh ư hình bên IDE ñượ c xem nh ư là c ử a s ổ chính ñể phát
tri ể n các ch ươ ng trình VB, nó c ũ ng ñượ c xem nh ư là môi trườ ng
phát tri ể n tích h ợ p (Integrated Development Enviroment)
VBA Interactive Development Enviroment
Trang 14© 2010 Dr Tran Duc Tang – Military Technical Academy
Các thành ph ầ n c ủ a VBA IDE
– Khi mới bắ ñầu IDE bao gồm 5 thành phần chính:
+ Thanh tiêu ñề(title bar):
Ở v ị trí trên cùng c ủ a màn hình, hi ể n th ị dòng ch ữ Microsoft Visual Basic, cùng v ớ i
tên c ủ a d ự án (Project) ta ñang l àm vi ệ c Khi ch ư a ñặ t tên, tên m ặ c nh là Global1
+ Thanh menu (menu bar):
N ằ m ở ngay phía d ướ i thanh tiêu ñề , cung c ấ p các công c ụ c ầ n thi ế ñể l ậ p trình
M ộ t s ố menu như File , Edit, View t ươ ng t ự như c ác ứ ng d ụ ng Windows khác
+ Thanh công cụ(toolbar):
Cho ta các l ệ nh t ắ t c ủ a các l ệ nh trên menu hay s ử d ng M ỗ i nút l ệ nh ñượ c hi ể n th ị
b ng m ộ t ký hi ệ u.
+ Project Explorer
Ch ươ ng trình VB hay ứ ng d ụ ng chúng ta phát tri ể n th ườ ng ñượ c g ọ i là các Projects
Project Explorer giúp ta qu ả n lý các Project Project Explorer li ệ t kê các ñố i t ượ ng liên
quan ñế n project, như Forms , Modules
+ Properties Window
Li ệ t kê các thu ộ c tính c ủ a ñố i t ượ ng ñượ c ch ọ n L ầ n ñầ u chúng ta m ở IDE, c ử a s ổ
thu ộ c tính tr ố ng vì t ạ i th ờ i ñ i ể m ñ chưa c ó ñố i t ượ ng nào ñượ c t ạ
Trang 15© 2010 Dr Tran Duc Tang – Military Technical Academy
Thanh tiêu ñề (title bar) Thanh menu (Menu bar)
Thanh công c ụ (Toolbar) Project Explorer
Properties Window
+ UserForm Window và Toolbox
- UserForm là c ử a s ổ mà ngườ i dùng s ẽ nhìn th ấ y khi ch ạ y ch ươ ng trình ðể chèn
UserForm, vào Insert\UserForm
- Toolbox: là h ộ p công c ụ , ch ứ a các nút ñ i ề u khi ể n hay các nút l ệ nh, text boxes, ðể
ng ườ i dùng có th ể ñặ t vào UserForm
Trang 16© 2010 Dr Tran Duc Tang – Military Technical Academy
Cửa sổnhập mã lệnh (Code Window)
– Là nơi viế t các mã l ệ nh c ủ a ch ươ ng trình ðể hi ể n th ị c ử a s ổ mã l ệ nh, vào
View\Code, ho ặ c b ấ m phím F7, hay kích ñ úp vào bi ể u t ượ ng ñ i ề u khi ể n trên
UserForm
Bài t ậ p: T ạ o m ộ t ch ươ ng trình Visual Basic ñơ n gi ả n
Thực hiện theo các bước sau:
MởVBA IDE
Vào Insert\UserForm ñểchèn UserForm
Kích biểu tượng Label trên Toolbox và tạo một Label trên UserForm,
trong cửa sổProperties, chọn dòng Caption và thay từLabel1 bằng từ
Current Time:
Kích biểu tượng Textbox trong Toolbox và ñặt một Textbox trên
UserForm, trong cửa sổProperties, gõ MyTime ởdòng Name
Kích chọn biểu tượng CommandBotton trong Toolbox và tạo mộ
Command button trên UserForm, gán Caption trong cửa sổProperties là
Update Time
Trang 17© 2010 Dr Tran Duc Tang – Military Technical Academy
UserForm cho ví dụtạo một chương trình VB ñơn giả
Vi ế t mã l ệ nh cho ch ươ ng trình
1 Kích ñúp chuột vào nút Updat Time, cửa sổmã lệnh sẽhiện ra, gõ dòng lệnh:
Private Sub CommandButton1_Click()
MyTime = Time
End Sub
Dòng lệnh này tạo một biết MyTime và gán cho nó giá trịTime, một hàm của VB
trảvềgiá trịthời gian dựa trên ñồng hồcủa máy tính Do chúng ta ñặt tên cho
Textbox là MyTime nên giá trịthời gian này sẽtự ñộng ñược ñặt vào Textbox khi
ta kích chuột vào nút lệnh Update Time
2 Trong Project Explorer kích ñúp chuột vào UserForm1 ñểquay trởvềUserForm
3 Trong UserForm, kích ñúp chuột vào nút lệnh Close, cửa sổmã lệnh hiện ra, gõ
Trang 19© 2010 Dr Tran Duc Tang – Military Technical Academy
1.4.6 D ự án VBA (VBA Project)
– Trong AutoCAD VBA, chương trình chúng ta tạo ñược chứa trong mộ
Project (dựán), Project chứa tất cảcác thành phần, như: UserForms,
mã lệnh, và các modules
– Chúng ta có thểghi Project này trong file bản vẽAutoCAD hoặc ghi
thành file ñộc lập ñểcó thểdùng cho nhiều bản vẽkhác nhau
– Các dựán AutoCAD VBA ñược ghi với phần mởrộng là DVB
– Chúng ta cũng có thểxem các dựán VBA như là các chương trình
– Là dựán ñược ñính kèm cùng với file bản vẽvà sẽ ñược tự ñộng tải
vào VBA IDE mỗi khi mởb n vẽcó chứa dựán nhúng ñó
– Dựán nhúng có hạn chếlà khi làm việc không thểmởhoặc ñóng file
b n vẽAutoCAD, bởi vì mục ñích của dựán nhúng chính là làm việc
bên trong bản vẽcó chứa nó
– ðiểm thuân lợi là người sửd ng không cần phải nhớ nơi lưu trữdự
án, không cần phải tải dựán mỗi khi sửd ng các chức năng có trong
dựán, tất cảcác thao tác ñ ñều ñược thực hiện tự ñộng khi mởb n
vẽcó chứa dựán nhúng
D ự án ñộ c l ậ p:
– Là dựán ñược lưu tách biệt trong một file riêng có phần mởrộng là
*.DVB
Trang 20© 2010 Dr Tran Duc Tang – Military Technical Academy
– Dựán ñộc lập có khả năng làm việc linh hoạt hơn, có khả năng ñóng
hoặc mởb n vẽb t kỳ
– Tuy nhiên người sửd ng cần phải nhớ nơi lưu và các chức năng có
trong từng dựán ñểkhi cần sửd ng một chức năng nào thì sẽtải dự
án ñó vào VBA IDE ñểsửd ng
– Với dựán ñộc lập, việc phân phối và chia sẻmã lệnh ñược thực hiện
d dàng hơn so với loại dựán nhúng
– Dựán ñộc lập cũng rất thích hợp ñể lưu trữ, tập hợp thành bộ thư viện
ñểsửd ng trong tất cảcác bản vẽ
Qu ả n lý d ự án VBA
– Trong AutoCAD, việc thao tác với các dựán, như t i một dựán,
nhúng một dựán, lưu một dựán… ñược thực hiện thông qua cửa sổ
Trang 21Hoặc chọn nút Load trong hộp thoại VBA Manager
Hộp thoại Openn VBA Project sẽxuất hiện (như hình dưới), chọn file Project
Hoặc bấm biểu tượng Save Project trên thanh công cụ
Hoặc chọn Save As trong hộp thoại VBA Manager
Trang 22© 2010 Dr Tran Duc Tang – Military Technical Academy
– ðểnhúng một Project trong một bản vẽAutoCAD
Chọn Embed trong hộp thoại VBA Manager, Project sẽ ñược ghi khi bản
Bài t ậ p: In dòng ch ữ trong AutoCAD
Trong bài tập này chúng ta cho hiển thịgiá trịthời gian nhưñã làm ởbài
tập trước nhưng hiển thịtự ñộng trên bản vẽAutoCAD Giao diện người
dùng vẫn giữ nguyên như cũ, chỉ thay ñổi mã lệnh
Cách thực hiện như sau:
1 Load dựán TIMEDISP.DVB ñã lưu ởbài tập trước
2 Bấm F7 ñểhiển thịcửa sổmã lệnh
3 Ởdòng trên cùng của cửa sổmã lệnh, thêm dòng khai báo sau:
Dim InsPt(0 To 2) As Double
4 Trong phần CommandButton1, thêm các dòng lệnh sau vào trước End
Sub