Giáo trình Tự động hóa thiết kế cơ khí

Công tác thiết kế luôn có một vị trí quan trọng từ khi lập dự án cho đến khi thi công, hoàn

thành và đưa công trình vào sử dụng. Từ trước đến nay, công tác khảo sát thiết kế được biết đến

như một quá trình gồm nhiều công đoạn khác nhau, mà mục đích cuối cùng là xác lập cấu tạo

của công trình, cách thức thi công chủ đạo để tạo ra công trình trên thực địa và phương pháp

khai thác công trình một cách hiệu quả nhất. Kết quả của công tác thiết kế được thể hiện dưới

dạng hồ sơ thiết kế, nghĩa là quá trình thiết kế nhắm đến việc tạo ra một bộ hồ sơ thiết kế, mà

trong đó nó mô tả một cách đầy đủ toàn bộ mục đích của quá trình thiết kế. Thông thường hồ

sơ thiết kế bao gồm những thành phần cơ bản như sau:

Bản thuyết minh: nơi thể hiện những cơ sở cho công tác thiết kế, lập luận của người thiết

kế và giải thích những vẫn đề cơ bản của phương án thiết kế.

Các loại bảng tính, bảng thống kê: nơi trình bày các kết quả tính toán trong quá trình thiết

kế, là cơ sở cho việc lập bản vẽ và xác định chi phí đầu tư cho công trình.

Bản vẽ: nơi thể hiện chi tiết nhất cấu tạo của công trình cũng như phương pháp chủ đạo

để thi công công trình.

 Dự toán: nơi thể hiện cách thức xác định tổng mức đầu tư cho công trình.

pdf 284 trang kimcuc 20560
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Tự động hóa thiết kế cơ khí", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Tự động hóa thiết kế cơ khí

Giáo trình Tự động hóa thiết kế cơ khí
Lời nói đầu 
Tự động hóa trong tất cả lĩnh vực hiện đang được xã hội quan tâm đặc biệt bởi nhờ nó 
năng suất lao động được nâng cao, chất lượng sản phẩm ổn định và tốt hơn, nhiều ý 
tưởng mới có cơ hội trở thành hiện thực. Tự động hóa công tác thiết kế công trình giao 
thông cũng không nằm ngoài quy luật chung đó, hiện nay, hầu hết các công ty trong 
lĩnh vực tư vấn thiết kế công trình giao thông đều rất chú trọng thực hiện tự động hóa 
công tác thiết kế trong công ty của mình. Điều này được thể hiện rõ nét trong việc đầu 
tư của các công ty (mua sắm máy tính, phần mềm và đào tạo nhân lực) cũng như triển 
khai tự động hóa thiết kế rất nhiều công trình trong thực tế. 
Với sự đa dạng của mình, các bài toán trong công tác thiết kế luôn đòi hỏi sự linh hoạt 
của công tác tự động hóa. Chính vì vậy, để phần nào đáp ứng được yêu cầu cấp bách 
từ thực tế sản xuất, nội dung cuốn giáo trình này đề cập đến tất cả các vấn đề cơ bản 
nhất của việc thực hiện tự động hóa thiết kế công trình giao thông cũng như phương 
pháp để nâng cao mức độ tự động hóa cho phù hợp với từng yêu cầu chuyên biệt xuất 
hiện trong quá trình thiết kế. 
Nội dung của giáo trình này là sự đúc kết kinh nghiệm giảng dạy môn Tự động hóa 
thiết kế cầu đường cho sinh viên ngành xây dựng công trình giao thông và quá trình 
tham gia thực hiện tự động hóa công tác thiết kế ngoài sản xuất của các tác giả cũng 
như cập nhật mới nhất những công nghệ chủ chốt phục vụ cho việc tự động hóa. Hơn 
nữa, nội dung chính tập trung vào những thành phần cốt lõi phục vụ cho mục đích tự 
động hóa  thiết kế cầu đường, cùng với những nội dung mang  tính gợi mở và định 
hướng cho từng chuyên ngành, khiến cho cuốn giáo trình này hoàn toàn phù hợp với 
định hướng đào tạo theo tín chỉ của Nhà trường. 
Chúng tôi xin chân thành cảm ơn sự đóng góp ý kiến của các đồng nghiệp trong quá 
trình hoàn thiện cuốn giáo trình này.  
Với tốc độ phát triển rất nhanh của công nghệ như hiện nay thì chắc chắn rằng trong 
thời gian tới, nhiều vấn đề liên quan đến việc thực hiện tự động hóa thiết kế sẽ phải 
thay đổi, và chúng tôi hy vọng rằng, cùng với các ý kiến đóng góp của bạn đọc và sự 
cập nhật kiến thức của bản thân, thì lần xuất bản sau của cuốn sách này sẽ hoàn thiện 
hơn nữa, sẽ đáp ứng tốt hơn nữa yêu cầu của bạn đọc. 
  Hà Nội, ngày 01 tháng 06 năm 2007 
  Các tác giả. 
 i 
PHẦN I: MỞ ĐẦU .................................................................................. 1 
1. Tổng quan về thiết kế và tự động hóa thiết kế công trình giao thông.............................. 1 
2. Đôi nét về các phần mềm dùng cho thiết kế công trình giao thông.................................. 3 
3. Lựa chọn phần mềm dùng cho thiết kế công trình giao thông.......................................... 4 
4. Chuyên biệt hóa phần mềm.................................................................................................... 6 
5. Kết chương .............................................................................................................................. 11 
PHẦN II: LẬP TRÌNH TRÊN ỨNG DỤNG NỀN ...................................... 12 
CHƯƠNG I: KHÁI NIỆM........................................................................................ 12 
CHƯƠNG II: TỔNG QUAN VỀ VBA ..................................................................... 19 
1. Đặc điểm của VBA.................................................................................................................. 19 
2. Trình tự xây dựng một dự án bằng VBA ............................................................................ 19 
3. Cấu trúc của một dự án VBA................................................................................................ 20 
4. Môi trường phát triển tích hợp VBA IDE............................................................................ 21 
5. Ví dụ đầu tiên với VBA.......................................................................................................... 23 
CHƯƠNG III: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC ................. 25 
1. Những qui định về cú pháp.................................................................................................. 25 
2. Các trợ giúp về cú pháp trong quá trình viết mã lệnh...................................................... 25 
3. Tính năng gợi nhớ và tự hoàn thiện mã lệnh ..................................................................... 26 
4. Từ khoá trong VB ................................................................................................................... 27 
5. Các kiểu dữ liệu cơ bản.......................................................................................................... 28 
5.1. Kiểu logic (boolean) .......................................................................................................... 29 
5.2. Kiểu số nguyên.................................................................................................................. 29 
5.3. Kiểu số thực....................................................................................................................... 29 
5.4. Kiểu mảng (array) ............................................................................................................. 29 
5.5. Kiểu chuỗi (String)............................................................................................................ 31 
5.6. Kiểu thời gian (Date)......................................................................................................... 32 
5.7. Kiểu Variant ...................................................................................................................... 32 
5.8. Kiểu tự định nghĩa (user-defined type).............................................................................. 33 
5.9. Kiểu lớp (Class)................................................................................................................. 34 
6. Khai báo biến trong VB.......................................................................................................... 35 
6.1. Khai báo hằng số ............................................................................................................... 38 
6.2. Khai báo biến..................................................................................................................... 38 
6.3. Khai báo kiểu tự định nghĩa .............................................................................................. 38 
6.4. Khai báo mảng tĩnh ........................................................................................................... 39 
6.5. Khai báo mảng động.......................................................................................................... 39 
6.6. Khai báo, tạo và làm việc với biến đối tượng.................................................................... 40 
7. Các toán tử và hàm thông dụng ........................................................................................... 40 
7.1. Các toán tử......................................................................................................................... 40 
7.2. Các hàm toán học .............................................................................................................. 41 
7.3. Các hàm chuyển đổi dữ liệu .............................................................................................. 41 
7.4. Các hàm xử lý chuỗi.......................................................................................................... 43 
8. Các cấu trúc điều khiển ......................................................................................................... 44 
8.1. Cấu trúc điều kiện.............................................................................................................. 44 
8.2. Cấu trúc lựa chọn .............................................................................................................. 46 
8.3. Vòng lặp xác định.............................................................................................................. 47 
 ii 
8.3.1. Vòng lặp theo biến đếm .............................................................................................47 
8.3.2. Lặp trong một tập hợp................................................................................................49 
8.4. Vòng lặp không xác định ...................................................................................................50 
9. Chương trình con ................................................................................................................... 51 
9.1. Hàm (Function) ..................................................................................................................52 
9.2. Thủ tục (Sub) .....................................................................................................................52 
9.3. Truyền tham số cho chương trình con................................................................................52 
9.3.1. Truyền tham số theo tham chiếu ................................................................................53 
9.3.2. Truyền tham số theo tham trị .....................................................................................54 
9.3.3. Tham số tuỳ chọn.......................................................................................................54 
9.3.4. Danh sách tham số với số lượng tham số tuỳ ý..........................................................55 
9.3.5. Hàm có giá trị trả về là kiểu mảng. ............................................................................55 
9.4. Biến trong chương trình con ..............................................................................................56 
9.5. Cách thức gọi chương trình con. ........................................................................................58 
9.6. Thoát khỏi chương trình con. .............................................................................................59 
10. Tổ chức các chương trình con theo hệ thống các mô‐đun chuẩn .................................. 59 
11. Làm việc với UserForm và các thành phần điều khiển .................................................. 60 
11.1. Các vấn đề chung .............................................................................................................60 
11.1.1. Tạo UserForm và các thành phần điều khiển trong VBA IDE ................................63 
11.1.2. Các thuộc tính của UserForm và các thành phần điều khiển. ..................................64 
11.1.3. Các phương thức của UserForm và các thành phần điều khiển. ..............................66 
11.1.4. Các sự kiện trên giao diện........................................................................................66 
11.1.5. Ví dụ.........................................................................................................................67 
11.2. Làm việc với UserForm ...................................................................................................68 
11.3. Các điều khiển thông dụng...............................................................................................69 
12. Các hộp thoại thông dụng................................................................................................... 76 
12.1. Hộp thông điệp (Message Box – MsgBox)......................................................................76 
12.2. Hộp nhập dữ liệu (Input Box – InputBox) .......................................................................77 
12.3. Hộp thoại dựa trên điều khiển Common Dialog. .............................................................78 
13. Lập trình xử lý tập tin.......................................................................................................... 80 
13.1. Các hình thức truy cập tập tin ..........................................................................................81 
13.2. Xử lý dữ liệu trong tập tin với các hàm I/O: ....................................................................82 
13.2.1. Mở tập tin:................................................................................................................82 
13.2.2. Đọc dữ liệu từ tập tin: ..............................................................................................82 
13.2.3. Ghi dữ liệu vào tập tin: ............................................................................................84 
13.2.4. Đóng tập tin..............................................................................................................86 
13.3. Xử lý dữ liệu trong tập tin theo mô hình FSO (File System Object) ...............................86 
13.3.1. Tạo tập tin mới .........................................................................................................88 
13.3.2. Mở tập tin đã có để thao tác .....................................................................................89 
14. Gỡ rối và bẫy lỗi trong VBAIDE ........................................................................................ 90 
14.1. Phân loại lỗi trong lập trình..............................................................................................90 
14.2. Gỡ rối trong lập trình .......................................................................................................91 
14.2.1. Phát hiện lỗi lúc thực thi ..........................................................................................91 
14.2.2. Các phương pháp thực thi mã lệnh ..........................................................................92 
14.2.3. Cửa sổ trợ giúp gỡ rối ..............................................................................................93 
14.3. Bẫy lỗi trong VBAIDE.....................................................................................................95 
14.3.1. Câu lệnh On Error ....................................................................................................95 
14.3.2. Đối tượng Err ...........................................................................................................96 
14.3.3. Hàm Error ................................................................................................................97 
CHƯƠNG IV: LẬP TRÌNH TRÊN MICROSOFT EXCEL ....................................... 99 
1. Tổng quan về Microsoft Excel .............................................................................................. 99 
1.1. Khả năng của Excel............................................................................................................99 
1.2. Giao diện của Excel ...........................................................................................................99 
1.3. Khả năng mở rộng của Excel ...........................................................................................100 
2. Macro ..................................................................................................................................... 100 
 iii 
2.1. Macro là gì?....................................................................................................... ... ểm đo thứ hai nằm trên 
đường tròn hoặc cung tròn. 
LeaderLength Kiểu Double. Khoảng cách từ chữ ghi kích thước đến điểm đo thứ nhất. 
RetVal Đối tượng kiểu DimDiametric, tham chiếu đến đối tượng vừa mới được tạo. 
Ví dụ sau minh hoạ cách thức sử dụng phương thức AddDimDiametric. 
Sub VD_AddDimDiametric() 
 Dim dimObj As AcadDimDiametric 
 Dim chordPoint(0 To 2) As Double 
 Dim farChordPoint(0 To 2) As Double 
 Dim leaderLength As Double 
 ' Xác định các thông số của đường kích thước 
 chordPoint(0) = 5#: chordPoint(1) = 3#: chordPoint(2) = 0# 
 farChordPoint(0) = 5#: farChordPoint(1) = 5#: farChordPoint(2) = 0# 
 leaderLength = 2# 
 ' Tạo đường kích thước đường kính trong không gian mô hình 
 Set dimObj = ThisDrawing.ModelSpace.AddDimDiametric _ 
GIÁO TRÌNH TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG 
268 
 (chordPoint, farChordPoint, leaderLength) 
 ZoomAll 
End Sub 
5.7.3. Định dạng đường kích thước 
Ngoài cách định dạng đường kích thước bằng kiểu đường kích thước thông qua thuộc tính 
StyleName như đã trình bày ở mục “Sử dụng kiểu đường kích thước” trang 261, người dùng 
còn có thể thay đổi các định dạng này thông qua các thuộc tính tương ứng của đối tượng đường 
kích thước. Dưới đây là danh sách các thuộc tính để định dạng cho đường kích thước thường 
dùng: 
Thuộc tính Mô tả 
AngleFormat Quy định định dạng đơn vị của kích thước dạng góc. 
Arrowhead1Type, 
Arrowhead2Type 
Quy định dạng đầu mũi tên của đường kích thước. 
ArrowheadSize Quy định cỡ đầu mũi tên của đường kích thước. 
CenterMarkSize Quy định cỡ của dấu tâm cho các kích thước dạng tia (đường kích thước 
góc, bán kính, đường kính,...) 
CenterType Quy định dạng của dấu tâm cho kích thước dạng tia. 
DecimalSeparator Quy định ký tự dùng làm dấu cách thập phân. 
DimensionLineColor Quy định màu cho đường ghi kích thước. 
DimensionLineWeight Quy định độ dày của đường ghi kích thước. 
ExtensionLineColor Quy định màu của các đường gióng. 
ExtensionLineExtend Quy định khoảng cách từ đường gióng đến đường ghi kích thước. 
ExtensionLineOffset Quy định khoảng cách từ đường gióng đến điểm gốc của đường gióng. 
ExtensionLineWeight Quy định độ dày của đường gióng. 
LinearScaleFactor Quy định hệ số tỷ lệ toàn cục cho các số đo kích thước dạng đường. 
PrimaryUnitsPrecision Quy định số chữ số thập phân hiển thị trong đơn vị chính của kích thước. 
TextColor Quy định màu của chữ kích thước. 
TextHeight Quy định độ cao của chữ kích thước. 
TextRotation Quy định góc nghiêng của chữ kích thước. 
5.8. Thao tác với dữ liệu mở rộng – XData 
Ngoài các thuộc tính có trong mỗi đối tượng, AutoCAD còn cho phép tạo thêm các thuộc tính 
mới để lưu trữ các thông tin do người lập trình tự định nghĩa. Những thông tin này sẽ được 
AutoCAD lưu cùng với đối tượng trong bản vẽ. 
Mỗi đối tượng có thể chứa nhiều dữ liệu mở rộng khác nhau. Thông thường, các dữ liệu mở 
rộng được bắt đầu bằng tên của ứng dụng, tiếp đến là các dữ liệu khác. Để xác định các dữ liệu 
mở rộng, phải sử dụng hai mảng có chiều dài bằng nhau, một mảng kiểu Short xác định kiểu dữ 
liệu của dữ liệu mở rộng, mảng thứ hai là mảng kiểu Variant chứa các dữ liệu tương ứng. 
5.8.1. Gán dữ liệu mở rộng 
Sử dụng phương thức SetXData để gán các dữ liệu mở rộng cho đối tượng. Cú pháp của 
phương thức này như sau: 
object.SetXData XDataType, Xdata 
CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD 
269 
Tham số Giải thích 
Object Là đối tượng sẽ được gán dữ liệu mở rộng. 
XDataType Mảng kiểu Short, xác định kiểu dữ liệu của dữ liệu mở rộng 
Xdata Mảng kiểu Variant, xác định giá trị của dữ liệu mở rộng 
Khi gán giá trị cho mảng XDataType và Xdata, cần phải lưu ý: 
Ø Cả hai mảng đều là mảng một chiều và phải có kích thước bằng nhau; 
Ø Giá trị phần tử của mảng Xdata phải có kiểu dữ liệu tương ứng với kiểu dữ liệu được xác 
định trong mảng XDataType. 
Bảng dưới đây là danh sách các giá trị thường dùng trong mảng XDataType và ý nghĩa tương 
ứng: 
Giá trị Ý nghĩa 
1001 Chuỗi chứa tên của ứng dụng. Tên của ứng dụng là do người lập trình tự thiết lập. 
1000 Giá trị kiểu String. 
1003 Tên của Layer. 
1010 Toạ độ 3D của một điểm 
1040 Giá trị của Double. 
1071 Giá trị kiểu Interger. 
Ví dụ sau sẽ tạo một đường thẳng trong không gian mô hình, sau đó tiến hành gán các dữ liệu 
mở rộng cho đường thẳng đó. 
Sub VD_SetXdata() 
 ' Tạo đường thẳng 
 Dim lineObj As AcadLine 
 Dim startPt(0 To 2) As Double, endPt(0 To 2) As Double 
 startPt(0) = 1#: startPt(1) = 1#: startPt(2) = 0# 
 endPt(0) = 5#: endPt(1) = 5#: endPt(2) = 0# 
 Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt) 
 ZoomAll 
 ' Khởi tạo các giá trị cho dữ liệu mở rộng. 
 ' Chú ý là dữ liệu đầu tiên phải là tên của ứng dụng 
 ' và mã tương ứng là 1001 
 Dim DataType(0 To 5) As Integer ‘Mảng chứa kiểu dữ liệu 
 Dim Data(0 To 5) As Variant ‘Mảng chứa dữ liệu 
 Dim reals3(0 To 2) As Double 
 DataType(0) = 1001: Data(0) = "Test_Application" 
 DataType(1) = 1000: Data(1) = "This is a test for xdata" 
 DataType(2) = 1003: Data(2) = "0" ' Tên lớp 
 DataType(3) = 1040: Data(3) = 1.23479137438413E+40 ' Kiểu Double 
 DataType(4) = 1071: Data(4) = 32767 ' Kiểu Integer 
 reals3(0) = -2.95: reals3(1) = 100: reals3(2) = -20 
 DataType(5) = 1010: Data(5) = reals3 ' Toạ độ điểm 
 ' Gán dữ liệu mở rộng vào đường thẳng 
 lineObj.SetXData DataType, Data 
End Sub 
GIÁO TRÌNH TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG 
270 
5.8.2. Đọc dữ liệu mở rộng 
Sử dụng phương thức GetXData để đọc dữ liệu mở rộng có trong một đối tượng. Cú pháp của 
phương thức này như sau: 
object.GetXData AppName, XDataType, XdataValue 
Tham số Giải thích 
Object Là đối tượng có chứa dữ liệu mở rộng. 
AppName Là chuỗi chứa tên của ứng dụng (như đã được gán khi sử dụng phương thức 
SetXData). Nếu tham số AppName là một chuỗi rỗng, phương thức này sẽ trả về 
tất cả các dữ liệu mở rộng có trong đối tượng. Nếu có truyền giá trị vào tham số 
AppName, phương thức này chỉ trả về dữ liệu mở rộng được tạo bởi ứng dụng có 
tên như đã xác định trong tham số AppName. 
XDataType Mảng kiểu Short, xác định kiểu dữ liệu của dữ liệu mở rộng được trả về. 
Xdata Mảng kiểu Variant, xác định giá trị của dữ liệu mở rộng được trả về. 
Ví dụ sau cho phép người dùng chọn một đối tượng hình học trên bản vẽ, sau đó sẽ hiển thị tất 
cả các dữ liệu mở rộng của đối tượng được chọn (nếu có) 
Sub VD_GetXData() 
 Dim sset As AcadSelectionSet 
 On Error Resume Next 
 Set sset = ThisDrawing.SelectionSets("MySSet") 
 sset.Delete 
 Set sset = ThisDrawing.SelectionSets.Add("MySSet") 
 ThisDrawing.Utility.Prompt vbCrLf & "Chon doi tuong can xem Xdata: " 
 sset.SelectOnScreen 
 Dim ent As AcadEntity 
 Dim XDataType As Variant 
 Dim XData As Variant 
 Dim i As Integer 
 For Each ent In sset 
 ent.GetXData "", XDataType, XData 
 If Not IsEmpty(XDataType) Then 
 ThisDrawing.Utility.Prompt (vbCrLf & ent.ObjectName) 
 For i = LBound(XDataType) To UBound(XDataType) 
 ThisDrawing.Utility.Prompt vbCrLf & XDataType(i) 
 ThisDrawing.Utility.Prompt " : " & XData(i) 
 Next i 
 Else 
 ThisDrawing.Utility.Prompt vbCrLf & "Doi tuong khong chua XData" 
 End If 
 Next ent 
End Sub 
6. Giao diện người dùng 
Quá trình nhập dữ liệu và tương tác với người dùng được hỗ trợ theo nhiều cách khác nhau 
trong AutoCAD: 
CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD 
271 
Ø Thông qua việc nhập liệu tại dòng lệnh: người dùng có thể nhập vào một chuỗi, một số, 
hoặc thực hiện một chọn lựa nào đó... Các thao tác nhập liệu tại dòng lệnh tham khảo 
thêm mục “Nhập dữ liệu người dùng từ dòng lệnh của AutoCAD” trang 207 
Ø Thông qua việc tương tác trực tiếp trên bản vẽ: người dùng thường sẽ thực hiện lựa chọn 
đối tượng, xác định toạ độ điểm, Các thao tác tương tác trực tiếp trên bản vẽ tham khảo 
thêm mục “Làm việc với đối tượng SelectionSet” trang 227 hoặc mục “Nhập dữ liệu 
người dùng từ dòng lệnh của AutoCAD” trang 207. 
Ø Thông qua hộp thoại tuỳ biến – Userform: quá trình nhập dữ liệu được thực hiện hầu hết 
trên Userform, các chức năng của chương trình sẽ được trình bày trên UserForm thông 
qua các nút bấm, Các thông tin về cách thức lập trình trên UserForm, tham khảo thêm 
mục “Làm việc với UserForm và các thành phần điều khiển” trang 60 và mục “Hộp thoại 
tuỳ biến – UserForm” trang 169. 
Ø Thông qua hệ thống thanh trình đơn và thanh công cụ: người dùng có thể thực hiện một 
chức năng nào đó của chương trình thông qua việc chọn một mục trình đơn tương ứng 
hoặc chọn một nút lệnh trên thanh công cụ. Phần này sẽ tập trung giới thiệu cách thức tạo 
trình đơn trong AutoCAD. 
6.1. Thao tác với thanh trình đơn 
6.1.1. Cấu trúc của hệ thống thanh trình đơn 
Hệ thống trình đơn trong AutoCAD được tổ chức theo cấu trúc phân cấp. Mô hình đối tượng 
của hệ thống thanh trình đơn trong AutoCAD như sau: 
Hình V-21: Mô hình đối tượng của hệ thống thanh trình đơn trong AutoCAD 
Ø MenuBar là thanh trình đơn nằm ngay phía dưới thanh tiêu đề của cửa sổ chương trình 
AutoCAD. Trong MenuBar có chứa các PopupMenu, là một trình đơn xổ xuống khi 
người dùng kích chuột vào, chẳng hạn như File, Edit, View, 
Ø MenuGroups là tập đối tượng chứa các MenuGroup, là nhóm các trình đơn trong 
AutoCAD. Thông thường, mỗi chương trình đều tạo cho mình một MenuGroup riêng. 
Trong mỗi MenuGroup sẽ có chứa các PopupMenu. Tập hợp tất cả các PopupMenu trong 
tất cả các MenuGroup sẽ hình thành nên MenuBar trên màn hình của chương trình 
AutoCAD. Tuy nhiên, không phải tất cả các PopupMenu trong MenuGroup đều được 
hiển thị trên MenuBar, chỉ khi nào người lập trình hoặc người dùng thêm vào MenuBar, 
MenuPopup đó mới được hiển thị trên MenuBar. 
Ø PopupMenuItem là thành phần cuối cùng trong cấu trúc phân cấp đối tượng của thanh 
trình đơn. Mỗi PopupMenuItem chính là một lệnh trong hệ thống thanh trình đơn. Khi 
GIÁO TRÌNH TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG 
272 
người dùng kích chuột vào PopupMenuItem thì AutoCAD sẽ thực hiện một chức năng 
nào đó của chương trình. 
Các thành phần của hệ thống trình đơn được minh hoạ ở hình sau: 
Hình V-22: Các đối tượng trong hệ thống trình đơn của AutoCAD 
6.1.2. Tạo trình đơn 
Người lập trình có thể dễ dàng thêm và hiệu chỉnh hệ thống trình đơn trong Excel thông qua 
các đoạn mã lệnh bằng VBA theo các bước sau: 
1. Phác thảo trình đơn tuỳ biến cần tạo và các chức năng tương ứng. 
2. Viết mã lệnh cho từng PopupMenuItem. Mỗi đoạn mã lệnh này được chứa trong một 
Macro. 
3. Tham chiếu đến MenuGroup, nơi cần tạo trình đơn tuỳ biến. 
4. Tạo PopupMenu và PopupMenuItem. 
5. Gán các đoạn mã lệnh tương ứng đã tạo ở bước 2 cho từng PopupMenuItem. 
Dưới đây sẽ lần lượt trình bày các bước để tạo trình đơn tuỳ biến trong AutoCAD 
Ví dụ tạo trình đơn 
1. Phác thảo cấu trúc trình đơn như sau: 
2. Viết mã lệnh cho từng PopupMenuItem 
CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD 
273 
'MÃ LệNH CHO “LUA CHON 1” 
Sub Macro1() 
 MsgBox "Ban da chon Lua chon 1" 
End Sub 
'MÃ LệNH CHO “LUA CHON 2” 
Sub Macro2() 
 MsgBox "Ban da chon Lua chon 2" 
End Sub 
'MÃ LệNH CHO “LUA CHON 3” 
Sub Macro3() 
 MsgBox "Ban da chon Lua chon 3" 
End Sub 
3. Viết mã lệnh để: tham chiếu đến MenuGroup, tạo trình đơn tuỳ biến và gán mã lệnh tương 
ứng 
Sub VD_TaoMenu() 
 ' Định nghĩa biến và tham chiếu đến MenuGroup đầu tiên 
 Dim currMenuGroup As AcadMenuGroup 
 Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0) 
 ' Tạo trình đơn (Tạo PopupMenu) 
 Dim newMenu As AcadPopupMenu 
 Set newMenu = currMenuGroup.Menus.Add("Trinh don tuy bien") 
 ' Khai báo biến cho PopupMenuItem 
 Dim newMenuItem As AcadPopupMenuItem 
 Dim openMacro As String 
 ' Tạo PopupMenuItem và gán mã lệnh tương ứng 
 openMacro = "-vbarun Macro1 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 1", openMacro) 
 openMacro = "-vbarun Macro2 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 2", openMacro) 
 openMacro = "-vbarun Macro3 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 3", openMacro) 
 ' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar) 
 currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", "" 
End Sub 
Các đoạn mã được tạo trong bước và bước phải được lưu trong cùng một mô-đun chuẩn 
của dự án VBA. 
Tuy nhiên, khi đã tạo được trình đơn, nếu thực thi Macro ở bước một lần nữa thì chương 
trình sẽ báo lỗi. Nguyên nhân là do “Trinh don tuy bien” đã được tạo ở lần thực thi Macro 
trước. Chính vì vậy, để khắc phục lỗi này, cần phải thay đoạn mã lệnh ở bước bằng đoạn 
mã lệnh sau: 
Sub VD_TaoMenu2() 
 ' Định nghĩa biến và tham chiếu đến MenuGroup đầu tiên 
 Dim currMenuGroup As AcadMenuGroup 
GIÁO TRÌNH TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG 
274 
 Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0) 
 ' Tạo trình đơn (Tạo PopupMenu) 
 ' và xử lý tình huống khi trình đơn đã được tạo 
 Dim newMenu As AcadPopupMenu 
 On Error Resume Next 
 Set newMenu = currMenuGroup.Menus.Add("Trinh don tuy bien") 
 If Err 0 Then 
 Set newMenu = currMenuGroup.Menus("Trinh don tuy bien") 
 Dim menuEnt As AcadPopupMenuItem 
 For Each menuEnt In newMenu 
 menuEnt.Delete 
 Next 
 End If 
 ' Khai báo biến cho PopupMenuItem 
 Dim newMenuItem As AcadPopupMenuItem 
 Dim openMacro As String 
 ' Tạo PopupMenuItem và gán mã lệnh tương ứng 
 openMacro = "-vbarun Macro1 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 1", openMacro) 
 openMacro = "-vbarun Macro2 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 2", openMacro) 
 openMacro = "-vbarun Macro3 " 
 Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _ 
 "Lua chon 3", openMacro) 
 ' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar) 
 currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", "" 
End Sub 
6.1.3. Xoá thanh trình đơn 
Các trình đơn tuỳ biến trong AutoCAD sẽ được tự động xoá đi khi khởi động lại AutoCAD. 
Tuy nhiên, khi cần thiết, người lập trình có thể gỡ bỏ các trình đơn tuỳ biến ra khỏi AutoCAD 
bằng mã lệnh VBA. 
Cần lưu ý là không thể xoá hẳn trình đơn tuỳ biến ra khỏi AutoCAD bằng mã lệnh VBA mà chỉ 
có thể gỡ bỏ trình đơn tuỳ biến ra khỏi thanh trình đơn của AutoCAD. Chỉ cần khởi động lại 
AutoCAD, trình đơn tuỳ biến sẽ được tự động xoá khỏi AutoCAD. 
Để gỡ bỏ trình đơn tuỳ biến có tên là “Trinh don tuy bien” đã được tạo ở ví dụ trước, sử 
dụng đoạn mã sau: 
Sub VD_XoaMenu() 
 Dim pMenu As AcadPopupMenu 
 On Error Resume Next 
 Set pMenu = Application.MenuBar("Trinh don tuy bien") 
 ' Kiểm tra xem nếu trình đơn tuỳ biến đã có thì sẽ 
 ' gỡ bỏ khỏi thanh trình đơn của AutoCAD 
 If Not (pMenu Is Nothing) Then 
 pMenu.RemoveFromMenuBar 
CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD 
275 
 End If 
End Sub 
GIÁO TRÌNH TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG 
276 
PHẦN III: TÀI LIỆU THAM KHẢO 
1. John Walkenbach – Excel 2002 Power Programming with VBA – M&T Books – 2001 . 
2. Steve Saunders, Jeff Webb – Programming Excel with VBA and .NET – O'Reilly – 2006. 
3. Richard Shepherd – Excel VBA Macro Programming – McGraw-Hill – 2004. 
4. Autodesk® (Người dịch:Lê Quỳnh Mai, Trương Thanh Hoàng, Hoàng Thuỳ Linh) – 
Phát triển AutoCAD bằng ActiveX & VBA – 2006. 
5. Joe Sutphin – AutoCAD 2006 VBA: A Programmer’s Reference – Apress® – 2005. 

File đính kèm:

  • pdfgiao_trinh_tu_dong_hoa_thiet_ke_co_khi.pdf