Đinh Văn Tráng
Designing Team-Engineering Department
PHỤ LỤC Chươ ng ng 1 ................................................................................................................................... 8 TỔNG QUAN VỀ VBA TRONG AUTOCAD AUTOCAD ......................................................................... 8 1.1.
Khái niệm dự án án nhúng và dự án ự án độc lập .................................................................. 8
1.2.
Trình quản lý dự án án VBA ........................................................................................... 8
1.3.
Định ngh ĩa lệnh mớ i bằng Autolisp ............................................................................ 9
Chươ ng ng 2 ..................................................................................................................................11 HỆ THỒNG ĐỐI TƯỢ NG NG VÀ M ỘT SỐ THAO TÁC CƠ B BẢN TRONG AUTOCAD ......11 2.1.
Mô hình đối tượ ng ng trong AutoCad........................................................................... 11
2.2.
Một số đối tượ ng ng chính trong AutoCad ................................................................... 12
2.1.1.
Đối tượ ng ng Application ....................................................................................... 12
2.1.2.
Khái niệm tập đối tượ ng ng .................................................................................... 12
2.1.3.
Tập đối tượng Documents và đối tượ ng ng Document .......................................... 12
2.2.
......................................................................... 13 Các thao tác cơ b bản trong AutoCad .........................................................................
2.2.1.
Mở b bản vẽ - Phươ ng ng thứ c Open ........................................................................ 13
2.2.2.
Tạo bản vẽ mớ i – Phươ ng ng thứ c Add ................................................................. 13
2.2.3.
Lư u bản vẽ -Phươ ng ng thứ c Save, SaveAs ........................................................... 14
2.2.4.
Đóng bản vẽ - Phươ ng ng thứ c Close ..................................................................... 15
2.2.5.
Thoát khỏi chươ ng ng trình AutoCad – Phươ ng ng thứ c Quit .................................. 16
Chươ ng ng 3 ..................................................................................................................................17 CÁC KIỂU DỮ LI LIỆU VÀ CÁCH KHAI BÁO BI ẾN TRONG VBA ...................................17 3.1.
Những quy đinh về cú pháp trong VBA................................................................... 17
3.2.
Khai báo biến trong VBA ......................................................................................... 18
3.2.1.
Tổng Quát .......................................................................................................... 18
3.2.2.
.................................................................................... 18 Cách thứ c khai báo biến ....................................................................................
Basic VBA for AutoCad
Page 1
Designing Team-Engineering Department
3.3.
Đinh Văn Tráng
Các kiểu dữ li liệu cơ b bản trong VBA ......................................................................... 19
3.3.1.
......................................................................................... 19 Kiểu Logic – Boolean .........................................................................................
3.3.2.
................................................................. 20 Kiểu số nguyên – Byte/Integer/Long .................................................................
3.3.3.
Kiểu số thự c – Single/Double ............................................................................. 20
3.3.4.
Kiểu Chuỗi – String ........................................................................................... 21
3.3.5.
Kiểu Mảng .......................................................................................................... 21
3.3.6.
Kiểu Variant....................................................................................................... 23
Chươ ng ng 4 ..................................................................................................................................24 TOÁN TỬ VÀ VÀ CÁC HÀM THÔNG DỤNG...........................................................................24 4.1.
Các hàm số học trong VBA ...................................................................................... 25
4.2.
Các toán tử so so sánh thườ ng ng sử d dụng trong VBA ..................................................... 26
4.3.
Toán tử Logic Logic thườ ng ng dùng trong VBA ................................................................... 27
4.3.1.
Toán tử AND AND ...................................................................................................... 27
4.3.2.
Toán tử OR OR ........................................................................................................ 28
4.3.3.
Toán tử NOT NOT ...................................................................................................... 29
4.4.
Các hàm chuyển đồi dữ li liệu ..................................................................................... 29
4.5.
Các hàm xử lý lý chuỗi.................................................................................................. 30
4.5.1.
......................................................................................................... 30 Hàm LEFT .........................................................................................................
4.5.2.
Hàm RIGHT ...................................................................................................... 30
4.5.3.
Hàm MID ........................................................................................................... 30
4.5.4.
Hàm LEN ........................................................................................................... 31
4.5.5.
Hàm UCase ........................................................................................................ 31
4.5.6.
Hàm LCase ......................................................................................................... 32
4.5.7.
Hàm InStr .......................................................................................................... 32
4.5.8.
.................................................................................................... 34 Hàm InStrRev ....................................................................................................
Basic VBA for AutoCad
Page 2
Designing Team-Engineering Department
3.3.
Đinh Văn Tráng
Các kiểu dữ li liệu cơ b bản trong VBA ......................................................................... 19
3.3.1.
......................................................................................... 19 Kiểu Logic – Boolean .........................................................................................
3.3.2.
................................................................. 20 Kiểu số nguyên – Byte/Integer/Long .................................................................
3.3.3.
Kiểu số thự c – Single/Double ............................................................................. 20
3.3.4.
Kiểu Chuỗi – String ........................................................................................... 21
3.3.5.
Kiểu Mảng .......................................................................................................... 21
3.3.6.
Kiểu Variant....................................................................................................... 23
Chươ ng ng 4 ..................................................................................................................................24 TOÁN TỬ VÀ VÀ CÁC HÀM THÔNG DỤNG...........................................................................24 4.1.
Các hàm số học trong VBA ...................................................................................... 25
4.2.
Các toán tử so so sánh thườ ng ng sử d dụng trong VBA ..................................................... 26
4.3.
Toán tử Logic Logic thườ ng ng dùng trong VBA ................................................................... 27
4.3.1.
Toán tử AND AND ...................................................................................................... 27
4.3.2.
Toán tử OR OR ........................................................................................................ 28
4.3.3.
Toán tử NOT NOT ...................................................................................................... 29
4.4.
Các hàm chuyển đồi dữ li liệu ..................................................................................... 29
4.5.
Các hàm xử lý lý chuỗi.................................................................................................. 30
4.5.1.
......................................................................................................... 30 Hàm LEFT .........................................................................................................
4.5.2.
Hàm RIGHT ...................................................................................................... 30
4.5.3.
Hàm MID ........................................................................................................... 30
4.5.4.
Hàm LEN ........................................................................................................... 31
4.5.5.
Hàm UCase ........................................................................................................ 31
4.5.6.
Hàm LCase ......................................................................................................... 32
4.5.7.
Hàm InStr .......................................................................................................... 32
4.5.8.
.................................................................................................... 34 Hàm InStrRev ....................................................................................................
Basic VBA for AutoCad
Page 2
Designing Team-Engineering Department
4.5.9.
Đinh Văn Tráng
............................................................................................ 35 Hàm Ltrim, RTrim ............................................................................................
4.5.10.
...................................................................................................... 36 Hàm Space ......................................................................................................
4.5.11.
Hàm Split ........................................................................................................ 36
4.5.12.
Hàm Replace ................................................................................................... 38
4.5.13.
Hàm StrComp ................................................................................................ 39
Chươ ng ng 5 ..................................................................................................................................41 CẤU TRÚC ĐIỀU KIỆN VÀ VÒNG LẶP .............................................................................41 5.1.
Cấu Trúc Điều Ki ện .................................................................................................. 41
5.1.1.
Cấu trúc : “If … Then …”................................................................................. 41
5.1.2.
Cấu trúc : “If … Then… Else … End If” ......................................................... 42
5.1.3.
Cấu trúc : “If … Then… Else … End If” m ở r rộng .......................................... 43
5.1.4.
.................................................. 44 Cấu trúc: “Select Case … Case…End Select” ..................................................
5.2.
.................................................................................................. 45 Cấu Trúc Vòng Lặp ..................................................................................................
5.2.1.
.................................................................................... 45 Cấu trúc: “For … Next” ....................................................................................
5.2.2.
Cấu trúc : “For Each … Next” .......................................................................... 47
5.2.3.
Cấu trúc : “Do While … Loop” ......................................................................... 48
5.2.4.
Cấu trúc : “Do … Loop While” ......................................................................... 48
5.2.5.
Cấu trúc : “Do Until … Loop” .......................................................................... 49
5.2.6.
Cấu trúc : “Do … Loop Until ” ......................................................................... 49
Chươ ng ng 6 ..................................................................................................................................50 CÁC HÀM NH ẬP LIỆU .........................................................................................................50 6.1.
Phươ ng ng thứ c : Prompt .............................................................................................. 51
6.2.
Phươ ng ng thứ c: c: GetString ........................................................................................... 52
6.3.
............................................................................................ 53 Phươ ng ng thứ c : GetPoint ............................................................................................
6.4.
Phươ ng ng thứ c : GetInteger và GetReal ..................................................................... 54
Basic VBA for AutoCad
Page 3
Designing Team-Engineering Department
Đinh Văn Tráng
6.5.
Phươ ng thứ c : GetDistance....................................................................................... 55
6.6.
Phươ ng thứ c : GetKeyWord .................................................................................... 56
6.7.
Phươ ng thứ c GetEntity............................................................................................. 57
6.8.
Phươ ng thứ c: GetCorner .......................................................................................... 58
6.9.
Phươ ng thứ c : InitializeUserInput ........................................................................... 59
Chươ ng 7 ..................................................................................................................................61 TẠO MỚI ĐỐI TƯỢ NG TRONG AUTOCAD ......................................................................61 7.1.
Xác định nơ i chứa đối tượ ng .................................................................................... 62
7.2.
Khai báo và ph ươ ng thứ c tạo đối tượ ng hình học ................................................... 63
7.2.1.
Tạo đườ ng thẳng –Phươ ng thứ c AddLine ........................................................ 63
7.2.2.
Tạo đối tượ ng LWPolyline - Phươ ng thứ c AddLightWeightPolyline.............. 64
7.2.3.
Tạo đối tượng đườ ng tròn – Phươ ng thứ c AddCircle ...................................... 65
7.2.4.
Tạo đối tượ ng cung tròn –Phươ ng thứ c AddArc.............................................. 66
7.2.5.
Tạo đối tượng văn bản đơ n - phươ ng thứ c AddText........................................ 67
7.2.6.
Tạo đối tượng văn bản nhiều dòng-Phươ ng thứ c AddMtext ........................... 68
Chươ ng 8 ..................................................................................................................................69 LÀM VIỆC VỚI ĐỐI TƯỢ NG SELECTIONSET ................................................................69 8.1.
Quy trình làm việc với đối tượ ng SelectionSet......................................................... 70
8.2.
Khai báo và kh ở i tạo đối tượ ng SelectionSet ........................................................... 70
8.3.
Thêm đối tượ ng vào trong một SelectionSet ............................................................ 71
8.3.1.
Phươ ng thứ c AddItems...................................................................................... 72
8.3.2.
Phươ ng thứ c Select ............................................................................................ 73
8.3.3.
Phươ ng Thứ c SelectOnScreen ........................................................................... 75
8.3.4.
Thao tác với các đối tượ ng trong SelectionSet .................................................. 76
8.4.
Bộ lọc cho đối tượ ng SelectionSet............................................................................. 76
Basic VBA for AutoCad
Page 4
Designing Team-Engineering Department
Đinh Văn Tráng
8.4.1.
Lọ c theo một điều kiệ n ........................................................................................ 77
8.4.2.
Lọ c theo nhiều điều kiệ n..................................................................................... 78
8.5.
Một số phươ ng thứ c khác của đối tượ ng SelectionSet............................................. 80
8.5.1.
Phươ ng thứ c RemoveItems ................................................................................. 80
8.5.2.
Phươ ng thứ c Clear ............................................................................................. 82
8.5.3.
Phươ ng thứ c Eraser ........................................................................................... 82
8.5.4.
Phươ ng thứ c Delete ............................................................................................ 82
Chươ ng 9 ..................................................................................................................................84 HIỆU CHỈNH CÁC ĐỐI TƯỢ NG HÌNH HỌC.....................................................................84 9.1.
Tổng quan về việc hiệu chỉnh các đối tượ ng hình học bằng VBA ........................... 85
9.2.
Sao chép đối tượ ng – Phươ ng thứ c Copy ................................................................. 85
9.3.
Xóa đối tượ ng –Phươ ng thứ c Delete ........................................................................ 86
9.4.
Di chuyển đối tượ ng – Phươ ng thứ c Move .............................................................. 86
9.5.
Lấy đối xứ ng – Phươ ng thứ c Mirror........................................................................ 88
9.6.
Phươ ng thứ c OffSet .................................................................................................. 89
9.7.
Xoay đối tượ ng – Phươ ng thứ c Rotate ..................................................................... 90
9.8.
Thay đổi tỉ lệ đối tượ ng – Phươ ng thứ c ScaleEntity ................................................ 92
9.9.
Thay đổi màu đối tượ ng – Thuộc tính Color ........................................................... 93
9.10.
Thay đổi Layer cho đố i tượ ng – Thuộc tính Layer .............................................. 95
9.11.
Thay đổi kiểu đường cho đối tượ ng – Thuộc tính LineType ............................... 96
9.12.
Thay đổi bề rộng nét vẽ của đối tượ ng – Thuộc tính LineWeight ....................... 98
Chươ ng 10 .............................................................................................................................. 100 LÀM VIỆC VỚI ĐỐI TƯỢ NG LAYER .............................................................................. 100 10.1.
Duyệt qua tập đối tượ ng Layers ..........................................................................101
10.2.
Khai báo và khở i tạo một Layer mớ i – Phươ ng thứ c Add..................................101
Basic VBA for AutoCad
Page 5
Designing Team-Engineering Department
Đinh Văn Tráng
10.3.
Đổi tên của Layer – Thuộc tính Name .................................................................102
10.4.
Thiết lập một Layer hiện hành ............................................................................103
10.5.
Gán màu cho một Layer – Thuộc tính Color ......................................................103
10.6.
Gán kiểu đườ ng cho một Layer – Thuộc tính LineType ....................................105
10.7.
Gán LineWeight cho một Layer – Thuộc tính LineWeight ................................107
10.8.
Một số thuộc tính khác của đối tượ ng Layer.......................................................109
10.8.1.
Bật, Tắt Layer – Thuộc tính LayOn .............................................................109
10.8.2.
Đông cứ ng, Làm tan Layer – Thuộc tính Freeze, UnFreeze ........................110
10.8.3.
Khóa, Mở Khóa Layer – Thuộc tính Lock, UnLock ....................................110
10.8.4.
Xóa Layer – Thuộc tính Delete .....................................................................111
Chươ ng 11 .............................................................................................................................. 112 LÀM VIỆC VỚI ĐỐI TƯỢ NG BLOCK .............................................................................. 112 11.1.
Duyệt qua tập đối tượ ng Block ............................................................................113
11.2.
Khai báo và khở i tạo một Block...........................................................................113
11.3.
Đổi tên Block – Thu ộc tính NAME ......................................................................114
11.4.
Xóa một Block – Thuộc tinh Delete .....................................................................115
11.5.
Chèn Block vào trong b ản vẽ - Phươ ng thứ c InsertBlock ..................................117
11.6.
Phá vỡ một Block – Phươ ng thứ c Explode ..........................................................120
11.7.
Block chứ a thuộc tính – Attributes ......................................................................122
11.7.1.
Tạo thuộc tính cho Block –Phươ ng thứ c AddAttribute ...............................122
11.7.2.
Thao tác vớ i thuộc tính – Phươ ng thứ c GetAttributes ................................125
11.8. 11.8.1.
Làm việc vớ i bản vẽ tham khảo ngoài – External References ............................127 Gắn một tham chiếu ngoài vào bản vẽ – Phươ ng thứ c
AddExternalReference ...................................................................................................127 11.8.2.
Gỡ bỏ tham chiếu ngoài ra khỏi bản vẽ - Phươ ng thứ c Detach. ..................130
Basic VBA for AutoCad
Page 6
Designing Team-Engineering Department
Đinh Văn Tráng
11.8.3.
Tải lại tham chiếu ngoài – Phươ ng thứ c Reload ..........................................130
11.8.4.
Loại bỏ tham chiếu ngoài ra khỏi bản vẽ - Phươ ng thứ c Unload ................131
11.8.5.
Ràng buộc tham chiếu ngoài – Phươ ng thứ c Bind .......................................132
TÀI LIỆU THAM KHẢO ..................................................................................................... 133
Basic VBA for AutoCad
Page 7
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 1
TỔNG QUAN VỀ VBA TRONG AUTOCAD 1.1. Khái niệm dự án nhúng và dự án độc lập 1.1.1. Dự án nhúng Dự án nhúng là dự án đính kèm vớ i bản vẽ.
Đặc điểm dự án nhúng là :
Không cần phải nhớ nơi lưu trử dự án, không phải tải dự án vào Autocad mỗ i khi sử dụng một chức năng nào đó có sẵn trong dự án, bở i vì nó đượ c t ự động tải vào mỗ i khi bản vẽ
đượ c mở .
Những chức năng đượ c lậ p trình trong d ự án VBA nhúng chỉ có hiệu lực đố i vớ i bản vẽ chứa nó do đó muốn sử dụng những chứa năng này cho nhữ ng bản vẽ khác ngườ i dùng buộc phải sao chép dự án VBA đó.
1.1.2. Dự án độc lập Dự án độc lậ p là dự án tách biệt trong một t ệ p tin có phần mở r ộng là *.dvb và không phụ thuộc vào bản vẽ nào cả.
Đặc điểm của dự án độc lậ p :
Muốn sử dụng dự án độc lập ngườ i dùng phải tải dự án đó vào trong Autocad.
Dự án độc lậ p có thể tác động lên tất cả các bản vẽ đang mở .
Khi cần chia sẽ những chức năng trong dự án chỉ c ần mang theo t ệ p “.dvb” là đủ.
1.2. Trình quản lý dự án VBA Trong Autocad việc quản lý dự án VBA đượ c thực hiện dễ dàng = thông qua trình quản lý dự án – VBA Manager.Để hiển thị VBA Manager chọn Tool ---> Macros ---> VBA Manager (Hoặc đánh lệ nh VBAMAN)
Basic VBA for AutoCad
Page 8
Designing Team-Engineering Department
Đinh Văn Tráng
Ý ngh ĩa một số thành phần trong trình quản lý dự án
New
: Tạo mớ i dự án VBA (Mặc định là dự án độc lậ p)
Save As : Lưu dự án VBA.
Load
: Tải dự án VBA vào trong VBAIDE.Ngườ i dùng đượ c yêu cầu chọn tệ p dự án
VBA (*.dvb) để Load vào.
Macros : Hiển thị trình quản lý Macros.
Visual Basic Editor : Hiển thị môi trườ ng VBAIDE, đây là môi trườ ng thực hiện viết mã lệnh và thiết k ế giao diện chương tr ình.
1.3. Định ngh ĩa lệnh mớ i bằng Autolisp Việc định ngh ĩa lệnh mớ i bằng Autolisp sẽ làm cho quá trình thực thi Macro đơn giản đi rất nhiều..Autolisp chính là chiếc cầu nố i tạo sự liên k ết giữa dòng lệnh của AutoCad vớ i các Macro trong dự án VBA.
Để các lệnh mớ i có hiệu lực ngay khi AutoCad khởi động thì ngườ i lậ p trình cần lưu dự án VBA thành t ệ p có tên là ACAD.DVB và tệ p Autolisp có tên là ACAD.LSP và cả hai t ệ p này phải được lưu vào thư mục Support của AutoCad.Hai tệ p này sẽ tự động đượ c tải lên ngay sau khi AutoCad khởi động và ngườ i dùng có thể sử dụng các lệnh tự định ngh ĩa.
Basic VBA for AutoCad
Page 9
Designing Team-Engineering Department
Đinh Văn Tráng
Cách tạo file Autolisp
Tại một thư mục bất k ỳ, nhấn chuột phải, chọn New -> Text Document.
Đổi tên file vừa tạo thành tên file ta muốn vớ i phần mở r ộng LSP (thay vì txt)
Trong tr ườ ng hợ p Window của bạn đang bỏ chế độ hiển thị đuôi mở r ộng, hãy Open file Text vừa tạo, Save As file thành dạng “Tên_file.LSP” .Chú ý2 dấu “” để đảm bảo file sẽ chuyển thành đuôi mở r ộng LSP.
Cách thức định ngh ĩa lệnh mớ i bằng AutoLisp
Basic VBA for AutoCad
Page 10
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 2
HỆ THỒNG ĐỐI TƯỢ NG VÀ M ỘT SỐ THAO TÁC CƠ BẢ N TRONG AUTOCAD 2.1. Mô hình đối tượ ng trong AutoCad
Trong AutoCad có r ất nhiều đối tượng khác nhau như: - Các đối tượ ng hình học như Line, Circle, Mtext, Text… - Các đối tượ ng phi hình học như: Layer, Linetype, Dimension … - Và ngay cả bản vẽ, bản thân chương tr ình AutoCad cũng là một đối tượng (Đối tượ ng Application) Mỗi đối tượng trong Autocad đề u có những thuộc tính và các phương thứ c đặc trưng của nó. Basic VBA for AutoCad
Page 11
Designing Team-Engineering Department
Đinh Văn Tráng
2.2. Một số đối tượ ng ng chính trong AutoCad 2.1.1. Đối tượ ng ng Application Đối tượng Application là đối tượ ng ng gốc trong mô hình đối tượ ng ng của AutoCad.Từ đối tượ ng ng này ta có thể truy xuất đến bất k ỳ đối tượng nào.Đối tượ ng ng Application là một đối tượ ng ng toàn cục nghiã là mọi phương thức và thuộc tính của nó đều có hiệu lực trong môi trương VBAIDE. Một số phương thức thườ ng ng dùng của đối tượ ng ng Application:
Phương thức Update – Phương thức này cậ p nhật lại các thay đổ i.
Phương thức Zoom như ZoomAll, ZoomExtents…
Phương thức Quit – Thoát khỏi chương tr ình ình AutoCad.
2.1.2. Khái niệm tập đối tượ ng ng Trong Autocad các đôi tượng đượ c tổ chức hầu hết trong Tập đối tượ ng ng.Ví dụ các đối ng hình học đượ c quản lý trong t ập đối tượ ng ng ModelSpace, PaperSpace hoặc tượ ng ng phi hình học như Layer, DimStyle, TextStyle đượ c quản lý trong các Blocks.Các đối tượ ng tập đối tượng tương ứng như Layers, DimStyles, D imStyles, TextStyles…
2.1.3. Tập đối tượng Documents và đối tượ ng ng Document Tập đối tượ ng ng Documents là một t ậ p chứa t ất cả các bản vẽ đang đượ c mở . Một số phương thức của t ập đối tượ ng ng Documents :
Phương thức Add : Sử dụng để t ạo một bản vẽ mớ i.i.
một bản vẽ có sẵn. Phương thức Open : Sử dụng để mở m
Phương thức Close : Sử dụng để đóng tất cả các bản vẽ đang đượ c mở
ng Document, thực chất là một bản vẽ AutoCAD đang đượ c mở thu thuộc tập đối Đối tượ ng ng Documents.Đối tượ ng ng này chứa tất c ả các đối tượ ng ng hình học và phi hình học trong tượ ng một bản vẽ AutoCAD cũng như chứa hầu hết các đối tượ ng ng khác của bản vẽ như Viewports. Trong VBA, đối tượ ng ng Thisdrawing tham chiếu đến bản vẽ hiện hành, những tác động lên ng này cũng chính là tác động lên bản vẽ hi ện hành. đối tượ ng Basic VBA for AutoCad
Page 12
Đinh Văn Tráng
Designing Team-Engineering Department
2.2. Các thao tác cơ bản trong AutoCad 2.2.1. Mở b bản vẽ - Phương thứ c Open Để mở m một bản vẽ ta s ử dụng phương thức OPEN có trong tập đối tượ ng ng Documents.Bản vẽ vừa đượ c mở s sẽ tr ở thành bản vẽ hiện hành. ở thành
Cú pháp Documents.Open (FileName)
Giải thích Tham số FileName
Giải thích Kiểu String – Chuỗ i thể hiện tên bản vẽ bao (gồm đườ ng ng dẫn và phần mở r r ộng)
Ví dụ
2.2.2. Tạo bản vẽ mớ i – Phương thứ c Add ng Documents. Để tạo bản vẽ mớ i sử dụng phương thức ADD có trong tập đối tượ ng
Cú pháp Set DocObj = Documents.Add ([TemplateName ])
Basic VBA for AutoCad
Page 13
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Giải thích
Tham số
Kiểu acadDocument – Biến chứa bản vẽ đượ c tạo
DocObj
Tham số tùy chọ, kiểu String – Chuỗ i chứa đườ ng ng dẫn đầy đủ đến bản vẽ mẫu (t ệ p *.dwt).Nếu không có tham số này, AutoCad sẽ t ạo TemplateName bản vẽ mớ i dựa trên tệ p bản vẽ mẫu mặc định (Thườ ng ng là t ệ p Acad.dwt)
Ví dụ
2.2.3. Lưu bản vẽ -Phương thứ c Save, SaveAs Để lưu bản bản vẽ ta dùng phương thức SAVE (lưu vớ i tên hiện hành) hoặc phương thức ng Thisdrawing. SAVEAS (lưu với tên khác) có trong đối tượ ng
Cú pháp Thisdrawing.Save Thisdrawing.SaveAs FileName [, FileType]
Giải thích Giải thích
Tham số
Kiểu String – Chuỗi chứa tên cần lưu (bao gồm cả đườ ng ng dẫn và phần mở FileName r ộng).Nếu không chỉ rõ b ản vẽ sẽ được lưu vào thư mụ c hoạt động của ng C:\Program Files\AutoCAD 20xx) AutoCad (thông thườ ng Tham số tùy chọn – Xác định kiểu bản vẽ sẽ được lưu. acR14_DWG : Tệ p AutoCAD Release14/LT97 DWG (*.dwg) acR14_DXF : Tệ p AutoCAD Release14/LT97 DXF (*.dxf) acR15_DWG: Tệ p AutoCAD 2000 DWG (*.dwg) acR15_DXF: Tệ p AutoCAD 2000 DXF (*.dxf) FileType acR15_Template : T ệ p AutoCAD 2000 Drawing Template File (*.dwt) acNative : Tệ p bản vẽ được lưu vớ i kiểu t ệ p mớ i nhất ứng vớ i phiên bản AutoCAD hiện hành.
Basic VBA for AutoCad
Page 14
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ
2.2.4. Đóng bản vẽ - Phương thứ c Close Để đóng bản vẽ sử dụng phương thức CLOSE có trong đối tượ ng Thisdrawing.
Cú pháp Thisdrawing.Close ([SaveChange] [, FileName])
Giải thích Tham số
Giải thích Tham số tùy chọn
SaveChange
SaveChange =True : Lưu bả n vẽ trước khi đóng SaveChange =False : Không lưu bản vẽ trước khi đóng Tham số tùy chọn, kiểu String –Chuỗ i thể hiện tên bản vẽ (bao gồm
FileName
đườ ng dẫn và phần mở r ộng) trong trườ ng hợ p bản vẽ chưa lưu lần nào
Ví dụ
Basic VBA for AutoCad
Page 15
Designing Team-Engineering Department
Đinh Văn Tráng
2.2.5. Thoát khỏi chương tr ình AutoCad – Phương thứ c Quit Để thoát khỏi AutoCad chúng ta sử dụng phương thức Quit có trong đối tượ ng Application.Nếu có bản vẽ hoặc dự án nào chưa được lưu AutoCad sẽ nhắc người dùng lưu
sau đó mớ i thoát.
Cú pháp Application.Quit
Basic VBA for AutoCad
Page 16
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 3
CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO BI ẾN TRONG VBA 3.1. Những quy đinh về cú pháp trong VBA - Những câu lệnh là những dòng riêng biệt.Nếu có nhiều câu lệnh trên cùng một dòng thì các câu lệnh ngăn cách nhau bằ ng dấu hai chấm (:),nếu dòng lệnh quá dài thì muốn ngắt xuống dòng thì ta dùng “khoảng tr ắng + _” . - Nếu muốn chèn thêm dòng chú thích thì ta dùng dấu nháy đơn (‘) - Quy tắc đặt tên biến
Ký tự đầu tiên bắt buộc phải là chữ cái.
Không chứa khoảng tr ắng, dấu chấm (.), dấu chấm than(!), hoặc các ký t ự đặc biệt như @, #, &, $
Tên biến không dài quá 255 ký tự
Tên biến không trùng vớ i các t ừ khóa trong VBA (Xem danh sách một số từ khóa
thườ ng sử dụng trong VBA)
Trong một SUB không được đặt tên biến trùng nhau
- Một số từ khóa thườ ng sử dụng trong VBA
As
Empty
Input
Mid
Option
Public
String
Binary
Error
Is
New
Optional
Resume
Then
ByRef
False
Len
Next
ramArray
Seek
Time
ByVal
For
Let
Nothing
Print
Set
To
Date
Friend
Lock
Null
Private
Static
True
Else
Get
Me
On
Property
Step
Basic VBA for AutoCad
ithEvents
Page 17
Designing Team-Engineering Department
Đinh Văn Tráng
3.2. Khai báo biến trong VBA 3.2.1. Tổng Quát Một biến khi sử dụng trong VBA có thể không cần khai báo, nhưng cách này chỉ nên áp dụng khi viết các chương tr ình nhỏ.Khi làm việc vớ i một d ự án có nhiều Modul, UserForm… cần khai báo biến một cách tường minh để chương tr ình dễ đọc, chạy nhanh
hơn và tận dụng đượ c sự tr ợ giúp của môi trườ ng VBAIDE.
Biến cục bộ : Là biến khai báo trong một chương tr ình con và phạm vi ho ạt động của nó
đượ c giớ i hạn trong chính chương tr ình con đó thôi.
Biến toàn cục : Phạm vi ho ạt động của biến là toàn bộ dự án, bất k ỳ nơi đâu trong dự án (bất k ể Modul, UserForm..) cũng có thể sử dụng đượ c biến này.
Nếu một biến đượ c khai báo vớ i từ khóa DIM thì mặc định biến đó là biế n cục bộ.Phạm vi hoạt động của biến này đượ c giớ i hạn trong SUB.
Nếu một biến đượ c khai báo vớ i từ khóa PRIVATE thì phạm vi hoạt động của biến là trong nội bộ Modul đó thôi, tất cả các SUB thuộc Modul đó đều sử dụng được nhưng không thể truy cậ p t ừ một Modul hay UserForm khác.
Nếu một biến đượ c khai báo vớ i từ khóa PUBLIC thì phạm vi ho ạt động của biến là trong toàn bộ dự án ngh ĩa là bất k ỳ trong Modul, UserForm nào cũng có thể sử dụng
đượ c biến này.
Chú ý : Không dùng từ khóa PRIVATE, PUBLIC cho việc khai báo biến nằm bên trong một SUB.
3.2.2. Cách thứ c khai báo biến
Khai báo hằng số
Hằng số là một loại biến đặc biệt mà giá tr ị của nó được xác định ngay lúc khai báo và luôn
không thay đổi.Cách này thường đượ c sử dụng cho những hằng số hay dùng trong chương trình như π = 3.141596254.
Basic VBA for AutoCad
Page 18
Designing Team-Engineering Department
Đinh Văn Tráng
Cú pháp [Public/Private] Const
=
Ví dụ Public Const Pi = 3.141592654
Khai báo biến
[Dim/Public/Private] As
Khai báo mảng t ĩnh
[Dim/Public/Private] (thông số về chiề u) As
Khai báo mảng động
[Dim/Public/Private] () As
3.3. Các kiểu dữ liệu cơ bản trong VBA 3.3.1. Kiểu Logic – Boolean Biến kiểu Boolean chỉ chứa hai giá tr ị TRUE và FALSE. Giá tr ị mặc định ban đầu của biến kiểu Boolean là FALSE
Cú pháp [Dim/Public/Private] As Boolean
Ví dụ
Dim blnA as Boolean Public blnB as Boolean Private blnC as Boolean
Basic VBA for AutoCad
Page 19
Đinh Văn Tráng
Designing Team-Engineering Department
3.3.2. Kiểu số nguyên – Byte/Integer/Long
Cú pháp [Dim/Public/Private] As [Byte/Integer/Long]
Byte, Integer, Long đều là các từ khóa khai báo kiểu số nguyên nhưngchúng chỉ khác nhau về giớ i hạn giá tr ị mà biến có thể nhận đượ c.
Kiểu số nguyên
Kích thướ c
Phạm Vi
Byte
1 Byte
0 – 255
Integer
2 Bytes
-32,768 – 32767
Long
4 Bytes
-2,147,486,648 – 2,147,483,647
Ví dụ
Dim lngA as Long Dim intB as Integer
3.3.3. Kiểu số thự c – Single/Double [Dim/Public/Private] As [Single/Double]
Ví dụ
Dim dblA as Double Public Pi as Double
Chú ý :
Các biến kiểu SỐ NGUYÊN và SỐ THỰ C nếu không gán giá tr ị ban đầu cho biến thì giá tr ị mặc định ban đầu sẽ bằng 0
Basic VBA for AutoCad
Page 20
Đinh Văn Tráng
Designing Team-Engineering Department
3.3.4. Kiểu Chuỗi – String Chuỗ i là một hàng các ký tự liên t ục nhau, số lượ ng ký tự trong chuỗ i r ất lớ n.Trong VBA chuỗi được đặt trong dấu ngoặc kép “”.Giá tr ị mặc định ban đầu cho biến kiểu chuỗ i là một
chuỗi rỗng.
Cú pháp [Dim/Public/Private] As String
Ví dụ
Dim strA as String strA = “VBA for AutoCad”
3.3.5. Kiểu Mảng Khi gặp trườ ng hợ p phải xử lý một loạt các biến tương tự như nhau, ví dụ các phần tử của một ma tr ận, nếu ta phải đặt tên khác nhau cho t ất cảcác biến này thì r ất bất tiện, vì vậy ta có thể dùng kiểu mảng để đặt tên chung cho cả nhóm các phần tử đó và khi nào cần sử dụng từng phần tử ta sẽ gọi tên theo chỉ số của chúng trong mảng. - Mảng T ĩnh
Đây là loạ i mảng có số phần tử không thay đổi trong suốt quá trình ho ạt động của mảng.Mảng này thườ ng đượ c sử dụng khi biết trướ c số lượ ng phần tử của mảng.
Cú pháp Dim (Thông s ố mảng) As
Ví dụ
Dim Myarray(10) as Double ‘M ảng có 11 ph ần t ử (T ừ 0 t ớ i 10) Dim MyArray(1 to 10) as Double
‘M ảng có 10 ph ần t ử.
Dim MyArray(1 to 5,1 to 5) as Double ‘M ảng có 25 ph ần t ử Dim MyArray(1 to n,1 to m) as Variant
Basic VBA for AutoCad
‘M ảng có n hàng và m c ột
Page 21
Designing Team-Engineering Department
Đinh Văn Tráng
- Mảng Động
Đây là mảng có số lượ ng phần tử có thể thay đổi được trong lúc chương tr ình hoạt động.Vớ i mảng động ngườ i lậ p trình không cần biết số lượ ng phần tử của mảng nó sẽ đượ c thiết lại tùy theo yêu cầu cụ thể của bài toán
Cú pháp Dim () As
Để thay đổi số lượ ng phần tử của mảng chúng ta sử dụng từ khóa REDIM
Cú pháp ReDim (Thông số mảng) As
Ví dụ Dim MyArray () as Long
‘Khai báo mảng MyArray là m ảng động
ReDim MyArray(1 to 4) as Long ---- >Xác định lại kích thướ c cho mảng
Vớ i một mảng động mà các phần tử đã đượ c gán giá tr ị khi thay đổ i số lượ ng phần tử sẽ có
hai trườ ng hợ p xảy ra.
Toàn bộ giá tr ị của các phần tử (thuộc mảng trước khi thay đổ i) sẽ bị xóa bỏ và các phần tử của mảng mớ i sẽ nhận giá tr ị mặc định.
Toàn bộ giá tr ị của các phần tử (thuộc mảng trước khi thay đổ i) sẽ đượ c giữ lại nếu thỏa mãn 2 điều kiện sau o
Sử dụng từ khóa ReDim Preserve
o
Sự thay đổi kích thướ c của mảng chỉ đượ c thực hiện ở biên trên của chiều cuối
cùng của mảng ngh ĩa là các phần tử cần giữa lại giá tr ị có chỉ số không đổi khi mảng
đượ c thiết lậ p lại.
Basic VBA for AutoCad
Page 22
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Dim MyArray () as Long
‘Khai báo mảng MyArray là m ảng động
ReDim MyArray(1 to 4) as Long ‘ Xác định lại kích thướ c cho mảng MyArray(1) = 10: MyArray(2) = 20
‘Gán giá tr ị cho các ph ần t ử mảng
MyArray(3) = 30: MyArray(4) = 40 ReDim Preserve MyArray(1 to 5) as Long MyArray(5) = 50
‘Thay đổi kích thướ c mảng
‘Gán giá tr ị cho phần t ử mớ i.
3.3.6. Kiểu Variant. Kiểu Variant là một kiểu đặc biệt có thể chứa tất cả các kiểu dữ liệu khác.
Cú pháp Dim As Variant
Ví dụ Dim varA as Variant
Basic VBA for AutoCad
Page 23
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 4
TOÁN TỬ VÀ CÁC HÀM THÔNG DỤNG
N ội dung chương :
-
Các hàm số học trong VBA
-
Các toán t ử so sánh thườ ng dùng trong VBA
-
Các tóa t ử Logic thườ ng dùng trong VBA
-
Các hàm chuy ển đổi thườ ngdùng trong VBA
-
Các hàm xử lý chuỗi thườ ng dùng trong VBA
Basic VBA for AutoCad
Page 24
Đinh Văn Tráng
Designing Team-Engineering Department
4.1. Các hàm số học trong VBA Toán Tử
Ý Ngh ĩa
Ví dụ
Kết quả
+
Cộng
10+5
15
-
Tr ừ
10-5
5
*
Nhân
10*5
50
/
Chia
10/5
2
\
Chia Lấy phần nguyên
11\2
5
^
Hàm mũ
10^2
100
Mod
Chi lấy phần dư
11 Mod 5
1
Abs(x)
Lấy giá tr ị tuyệt đối
Abs(-12)
12
Fix(99.8)
99
Fix(-99.2)
-99
Fix(-99.8)
-99
Int(99.2)
99
Int(-99.2)
-100
Int(-99.8)
-100
Round(2.4554,2)
2.45
Sqr(4)
2
Atn(1)
π/4
Sin(π/6)
½
Cos(π/3)
½
Tan(π/4)
1
Fix(x)
Int(x)
Round(x,m)
Lấy phần nguyên trướ c dấu phẩy
Lấy phần nguyên đã đượ c làm tròn Làm tròn số thực x đến m số sau dấu phẩy
Sqr(x)
Hàm căn bậc 2 của x
(x>=0) Atn(x)
Hàm lượng giác ngượ c của Tan(x)
Sin(x) Cos(x) Tan(x)
Các hàm lượ ng giác của x tính bằng đơn vị Radian
Basic VBA for AutoCad
Page 25
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ : Dùng hàm Atn để tính giá tr ị của số Pi Dim Pi as double Pi = 4*Atn(1)
Ví dụ : Ví dụ này sẽ tạo một hàm dùng để chuyển đổi đơn vị Degree ra Radian
4.2. Các toán tử so sánh thườ ng sử dụng trong VBA Sử dụng toán tử so sánh trong biểu thức để so sánh hai hoặc nhiều số, chuỗi Text, các biến hoặc k ết quả của các hàm - Nếu câu lệnh Đúng -> K ết qu ả của công thức đượ c tr ả về giá tr ị True - Nếu câu lệnh Sai -> K ết qu ả của công thức đượ c tr ả về giá tr ị False
Toán Tử
Ý Ngh ĩa
Ví Dụ
Kết quả
=
Bằng
a=b
True
>
Lớn hơn
10<5
False
>=
Lớn hơn hoặc bằng
10>=8
True
<
Nhỏ hơn
5<7
True
<=
Nhỏ hơn hoặc bằng
10<=20
True
<>
Khác
“a” <> “b”
True
Ví dụ
Dim A, B as integer Dim Mycheck as Boolean A = 8 :B = 2 Mycheck = A > B -----> Mycheck = True Mycheck = A < B -----> Mycheck = False
Basic VBA for AutoCad
Page 26
Đinh Văn Tráng
Designing Team-Engineering Department
4.3. Toán tử Logic thườ ng dùng trong VBA 4.3.1. Toán tử AND Sử d ụng toán tử And để kiểm tra xem hai toán hạng kiểu Boolean có là True ho ặc False hay không. Bảng giá tr ị của toán t ử AND
Toán hạng 1
Toán hạng 2
Kết quả
True
True
True
True
False
False
True
Null
Null
False
True
False
False
False
False
False
Null
False
Null
True
Null
Null
False
False
Null
Null
Null
Chú ý Toán tử AND tr ả về giá tr ị TRUE khi cả hai toán tử cùng là TRUE, các trườ ng hợ p khác cho
k ết qu ả là FALSE
Ví dụ
‘Khai báo các bi ế n Dim A, B, C as integer Dim Mycheck as Boolean A = 10:B=8:C=6 Mycheck = (A>B) And (B > C) -----> Mycheck = True Mycheck = (A>B) And (B < C) -----> Mycheck = False Mycheck = (A Mycheck = False
Basic VBA for AutoCad
Page 27
Đinh Văn Tráng
Designing Team-Engineering Department
4.3.2. Toán tử OR Sử dụng toán tử OR để kiểm tra hai toán hạng kiểu Boolean xem một trong hai toán hạng là
True hoặc là False. Bảng giá tr ị của toán t ử OR
Toán hạng 1
Toán hạng 2
Kết quả
True
True
True
True
False
True
True
Null
True
False
True
True
False
False
False
False
Null
False
Null
True
True
Null
False
Null
Null
Null
Null
Chú ý
Toán tử OR tr ả về k ết quả TRUE khi một trong hai toán hạng hoặc cả hai toán hạng là
TRUE, các giá tr ị còn lại cho giá tr ị FALSE.
Ví dụ
‘Khai báo các bi ế n Dim A, B, C as integer Dim Mycheck as Boolean ‘Gán giá tr ị ban đầu cho các bi ế n A = 10:B=8:C=6 Mycheck = (A>B) Or (B > C) -----> Mycheck = True Mycheck = (A>B) Or (B < C) -----> Mycheck = True Mycheck = (A Mycheck = False
Basic VBA for AutoCad
Page 28
Đinh Văn Tráng
Designing Team-Engineering Department
4.3.3. Toán tử NOT Toán tử NOT sẽ tr ả về giá tr ị phủ định của một toán hạng Bảng giá tr ị của toán t ử NOT
Biểu thứ c
Kết quả
True
False
False
True
Ví dụ
Dim A, B, C as Integer Dim Mycheck as Boolean A = 10:B=8:C=6 Mycheck = Not(A > B) -----> Mycheck = False Mycheck = Not(B < C) -----> Mycheck = True
4.4. Các hàm chuyển đồi dữ liệu Chuyển đổi dữ liệu là một nhu cầu cần thiết trong khi lậ p trình,điều này làm cho các biến có kiểu dữ liệu rõ ràng,tránh đượ c việc phát sinh lỗ i sau này. M ộ t số hàm chuyển đổ i thông d ụ ng
CBool(Expression)
Chuyển đổ i dữ liệu sang kiểu Logic (Boolean)
Cbyte(Expression)
Chuyển đổ i dữ liệu sang kiểu Byte
CInt(Expression)
Chuyển đổ i dữ liệu sang kiểu Integer
CLng(Expression)
Chuyển đổ i dữ liệu sang kiểu Long
CDblxpression)
Chuyển đổ i dữ liệu sang kiểu Double
CSng(Expression)
Chuyển đổ i dữ liệu sang kiểu Single
CStr(Expression)
Chuyển đổ i dữ liệu sang kiểu String
Val(String)
Basic VBA for AutoCad
Chuyển đổ i dữ liệu String sang kiểu Double
Page 29
Designing Team-Engineering Department
Đinh Văn Tráng
4.5. Các hàm xử lý chuỗi 4.5.1. Hàm LEFT
Cú pháp Left(String, Number as Long)
Công dụng Hàm này trích Number ký tự bên trái của chuỗi String
Ví dụ Dim strA, strB as String strA = “VBA for AutoCad” strB = Left(strA, 7) ----->strB = “VBA for”
4.5.2. Hàm RIGHT
Cú pháp Right(String, Number as Long)
Công dụng Hàm này trích Number ký tự bên phải của chuỗ i String
Ví dụ Dim strA, strB as String strA = “VBA for AutoCad” strB = Right(strA, 7) ----->strB = “AutoCad”
4.5.3. Hàm MID
Cú pháp Mid(String, Start As Long, [Number as Long])
Basic VBA for AutoCad
Page 30
Đinh Văn Tráng
Designing Team-Engineering Department
Công dụng Hàm này trích Number ký tự bắt đầu t ừ ký t ự Start của chuỗ i String. Nếu không có giá tr ị Number thì sẽ trích một chuỗi bắt đầu từ ký tự Start đến ký tự cuối cùng.
Ví dụ Dim strA, strB as String strA = “VBA for AutoCad” strB = Mid(strA, 4,3) ----->strB = “for” strB = Mid(strA, 4) ----->strB = “for AutoCad”
4.5.4. Hàm LEN
Cú pháp Len(String)
Công dụng Hàm này tr ả về một số NGUYÊN - Là số lượ ng ký tự trong một chuỗi (Bao gồm cả khoảng tr ắng)
Ví dụ Dim strA as String Dim lngB as Long strA = “VBA for AutoCad” lngB = Len(strA) ----->lngB = 15
4.5.5. Hàm UCase
Cú pháp UCase(String)
Công dụng Hàm này chuyển các ký tự trong một chuỗi thành chữ HOA
Basic VBA for AutoCad
Page 31
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Dim strA, strB as String strA = “VBA for AutoCad” strB = UCase(strA) ----->strB = “VBA FOR AUTOCAD”
4.5.6. Hàm LCase
Cú pháp LCase(String)
Công dụng Hàm này chuyển các ký tự trong một chuỗi thành chữ THƯỜ NG
Ví dụ Dim strA, strB as String strA = “VBA for AutoCad” strB = UCase(strA) ----->strB = “vba for autocad”
4.5.7. Hàm InStr
Cú pháp InStr([Start, ]String_1, String_2 [, compare])
Công dụng Hàm này tr ả về một số NGUYÊN – Là vị trí bắt đầu của chuỗi String_2 trong chuỗi String_1 bắt đầu t ừ vị trí Start. Nếu chuỗi String_2 không đượ c tìm thấy hàm sẽ tr ả về giá tr ị 0.
Basic VBA for AutoCad
Page 32
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số
Giải thích Kiểu Integer/Long – Tham số tùy chọn, là vị trí bắt đầu tìm
Start
kiếm.Giá tr ị mặc định bằng 1.Nếu tham số Compare đượ c sử dụng thì tham số Start bắt buộc phải đượ c sử dụng
String_1
Kiểu String – “Chuỗi bị tìm kiếm”
String_2
Kiểu String – “Chuỗi tìm kiếm”
Compare
Tham số tùy chọn - Hằng số so sánh
Hằng số so sánh (Chúng ta quan tâm 2 h ằng số sau) Hằng số vbBinaryCompare vbTextCompare
Ý ngh ĩa Kiểu so sánh này phân biệt chữ hoa và chữ thường (Đây là giá trị mặc định của hàm InStr) Kiểu so sánh này không phân biệt chữ hoa và chữ thườ ng
Ví dụ Dim strA, strB as String Dim intC as Integer strA = “VBA for AutoCad” strB = “a” intC = InStr(1 ,strA ,strB,vbTextCompare) ----->intC = 3 intC = InStr(1 ,strA ,strB,vbBinaryCompare) ----->intC = 14 intC = InStr(strA ,strB) ----->intC = 14
Basic VBA for AutoCad
Page 33
Đinh Văn Tráng
Designing Team-Engineering Department
4.5.8. Hàm InStrRev
Cú pháp InStrRev(String_1, String_2 [,Start] [, compare])
Công dụng Hàm này tr ả về một số NGUYÊN – Là vị trí bắt đầu của chuỗi String_2 trong chuỗi String_1 bắt đầu t ừ vị trí Start.Hàm này ngượ c vớ i hàm InStr, nó sẽ tìm ngượ c t ừ vị trí
Start tr ở về trướ c.Nếu chuỗi String_2 không tìm thấy hàm sẽ tr ả về giá tr ị 0
Giải thích Tham số String_1
Kiểu String – “Chuỗi bị tìm kiếm”
String_2
Kiểu String – “Chuỗi tìm kiếm”
Compare
Tham số tùy chọn - Hằng số so sánh (Xem bảng hằng số so sánh)
Start
Giải thích
Tham số tùy chọn ,Kiểu Integer/Long – Là vị trí bắt đầu tìm kiếm.Giá tr ị mặc định của tham số là bắt đầu từ cuối chuỗi String_1.
Hằng số so sánh (Chúng ta quan tâm 2 h ằng số sau) Hằng số
vbBinaryCompare vbTextCompare
Basic VBA for AutoCad
Ý ngh ĩa Kiểu so sánh này phân biệt chữ hoa và chữ thường (Đây là giá trị mặc định của hàm InStrRev) Kiểu so sánh này không phân biệt chữ hoa và chữ thườ ng
Page 34
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Dim strA, strB as String Dim intC as Integer strA = “VBA for AutoCad” strB = “a” intC = InStr(1 ,strA ,strB,vbTextCompare) ----->intC = 3 intC = InStr(1 ,strA ,strB,vbBinaryCompare) ----->intC = 14 intC = InStr(strA ,strB) ----->intC = 14
4.5.9. Hàm Ltrim, RTrim
Cú pháp LTrim(String) RTrim(String) Trim(String)
Công dụng Hàm LTrim xóa các khoảng tr ắng ở đầu một chuỗi, hàm RTrim xóa các khoảng tr ắng ở cuối chuỗ i, hàm Trim xóa khoảng tr ắng ở cả đầu và cuỗi chuỗ i.
Ví dụ Dim strA, strB as String strA = “ VBA for AutoCad” strB = LTrim(strA) ----->strB = “VBA for AutoCad” strA = “ VBA for AutoCad ” strB = RTrim(strA) ----->strB = “VBA for AutoCad” strA = “ VBA for AutoCad ” strB = Trim(strA) ----->strB = “VBA for AutoCad”
Basic VBA for AutoCad
Page 35
Designing Team-Engineering Department
Đinh Văn Tráng
4.5.10. Hàm Space
Cú pháp Space(Number as Integer)
Công dụng Hàm này tạo ra một chuỗi chứa Number khoảng tr ắng
Ví dụ Dim strA, strB, strC as String strA = “VBA for AutoCad” strB = “Example Space function” strC = strA & Space(3) & strB ----> strC “VBA for AutoCad Example Space function”
4.5.11. Hàm Split
Cú pháp Split(String [, Delimiter] [, limit] [, Compare])
Công dụng Hàm này tách một chuỗi dài thành một mảng gồm nhiều chuỗ i nhỏ bằng ký tự khóa
Delimiter. Nếu ký tự khóa Delimiter là một chuỗi r ỗng thì mảng tr ả về là toàn bộ chuỗi String Chú ý : Hàm này sẽ tr ả về một MẢNG gồm nhiều chuỗ i nhỏ nên kiểu của biến tr ả về sẽ là Mảng Động kiểu String hoặc Mảng T ĩnh kiểu String nếu tham số Limit đượ c xác
định hoặc kiểu Variant.
Basic VBA for AutoCad
Page 36
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số String Delimiter
Limit
Ý Ngh ĩa Kiểu String – Chuỗ i sẽ đượ c tách Tham số tùy chọn, kiểu String – Chuỗ i chứa giá tr ị làm giớ i hạn chia (Mặc định sử dụng khoảng trắng làm giớ i hạn chia) Tham số tùy chọn - Số lượ ng ng chuỗi cho phép tr ả về.Mặc định giá tr ị này sẽ tr ả về t ất cả các chuỗi đượ c chia. Tham số tùy chọn – Xác đinh kiểu so sánh
Compare
tr ị mặc định)
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thườ ng ng (Giá
vbTextCompare – Không phân biệt chữ Hoa và chữ Thườ ng ng
Ví dụ Dim strA as String String Dim varB as Variant Variant strA = “VBA for AutoCad” varB = Split(strA) ---> varB(0) = “VBA”:varB(1) = “for” : varB(2) = “AutoCad” varB = Split(strA,“A”) ---> varB(0) = “VB”:varB(1) = “ for ” : varB(2) = “utoCad” varB = Split(strA,“A”, ,vbTextCompare) ---> varB(0) = “VB”:varB(1) = “ for ” : varB(2) = “utoC”:varB(3) = “d” varB = Split(strA,“A”,2) ---> varB(0) = “VB”:varB(1) = “ for AutoCad”
Basic VBA for AutoCad
Page 37
Đinh Văn Tráng
Designing Team-Engineering Department
4.5.12. Hàm Replace
Cú pháp Replace(String, Find , Replace[, start ] [, count] [, compare])
Công dụng Hàm này tr ả về một chuỗi mớ i vớ i việc thay thế chuỗi Find trong chuỗi String bằng chuỗ i Replace.
Giải thích Tham số
Ý Ngh ĩa
String
Kiểu String – Chuỗ i chứa ký t ự thay thế
Find
Kiểu String – Chuỗ i chứa giá tr ị đượ c thay thế
Replace Start
Count
Kiểu String –Chuỗi chứa giá tr ị thay thế. Tham số tùy chọn, kiểu Integer/Long – Vị trí bắt đầu thay thế, chuỗi mớ i sẽ bắt đầu từ vị trí này.Giá tr ị mặc định bằng 1 Tham số tùy chọn, kiểu Integer/Long – Số lần thay thế.Giá tr ị mặc
định là tất cả các vị trí sẽ đượ c thay thế. Tham số tùy chọn – Xác đinh kiểu so sánh
Compare
mặc định)
Basic VBA for AutoCad
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thườ ng ng (Giá tr ị
vbTextCompare – Không phân biệt chữ Hoa và chữ Thườ ng ng
Page 38
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Dim strA, strB as String String strA = “VBA for AutoCad” strB = Replace(strA, “AutoCad”, “Excel”) ---> strB = “VBA for Excel” strB = Repleca(strA,“A”, “B”, 5) ---> strB = “for ButoCad” strB = Split(strA,“A”, “B”, 5, 3 ,vbTextCompare) ---> var = “for ButoCbd” varB = Split(strA,“A”,2) ---> varB(0) = “VB”:varB(1) = “ for AutoCad”
4.5.13. Hàm StrComp
Cú pháp StrComp(String_1, String_2 [ , compare])
Công dụng Hàm này dùng để so sánh hai chuỗi String_1 và String_2 vớ i nhau.
Giải thích Tham số String_1, String_2
Ý Ngh ĩa Kiểu String – Hai chuỗi dùng để so sánh vớ i nhau Tham số tùy chọn – Xác đinh kiểu so sánh
Compare
mặc định)
Basic VBA for AutoCad
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thườ ng ng (Giá tr ị
vbTextCompare – Không phân biệt chữ Hoa và chữ Thườ ng ng
Page 39
Đinh Văn Tráng
Designing Team-Engineering Department
Giá trị trả về của hàm StrComp String_1 < String_2
-1
String_1 =String_2
0
String_1 > String_2
1
Ví dụ Dim strA, strB,StrC as String strA = “VBA for AutoCad” strB = “VBA for AutoCad” strC = “VBA for Autocad” Dim returnValue as Integer returnValue = StrComp(strA, strB) ----> returnValue = 0 returnValue = StrComp(strA, strC) ----> returnValue = -1 returnValue = StrComp(strA, strC, vbTextCompare) ----> returnValue = 0
Basic VBA for AutoCad
Page 40
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 5
CẤU TRÚC ĐIỀU KIỆN VÀ VÒNG LẶP 5.1. Cấu Trúc Điều Ki ện 5.1.1. Cấu trúc : “If … Then …”
Trong trườ ng hợ p một dòng lệnh
If < Biể u thức điề u kiện> Then Chú ý : Trong trườ ng hợ p một dòng lệnh thì không có từ khóa “End If ”
Trong trườ ng hợ p nhiều dòng lệnh
If < Biể u thức điề u kiện> Then
End If
Sơ đồ khối
Diễn giải Nếu < Biể u thức điề u kiện> là ĐÚNG thì chương tr ình sẽ thực hiện , nếu
SAI sẽ thoát khỏi cấu trúc lệnh.
Basic VBA for AutoCad
Page 41
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
5.1.2. Cấu trúc : “If … Then… Else … End If” Khi ta muốn xử lý trong tr ườ ng hợ p < Biể u thức điề u kiện> tr ả về giá tr ị SAI thì ta sử dụng cấu trúc điều kiện sau.
Cấu trúc If Then
Else
End If
Sơ đồ khối
Diễn giải Nếu là ĐÚNG thì chương tr ình sẽ thực hiện , nếu SAI chương tr ình sẽ thực hiện .
Basic VBA for AutoCad
Page 42
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
5.1.3. Cấu trúc : “If … Then… Else … End If” mở rộng Khi có nhiều thì chúng ta sử dụng cấu trúc điều kiện mở r ộng sau.
Cấu trúc If Then
ElseIf Then
………………..
ElseIf Then
Else
End If
Diễn giải cấu trúc : Nếu là ĐÚNG thì chương tr ình sẽ thực hiện , nếu SAI chương tr ình sẽ kiểm tra lần lượt điều kiện từ đến ,
nếu điều kiện nào ĐÚNG sẽ thực hiện tương
ứng đó và thoát khỏ i cấu trúc này.Nếu không có nào thỏa mãn chương tr ình sẽ thực hiện sau từ khóa Else và thoát khỏi cấu trúc này. Basic VBA for AutoCad
Page 43
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
5.1.4. Cấu trúc: “Select Case … Case…End Select”
Cấu trúc Select Case Case < Điề u kiện_1>
Case < Điề u kiện_2> …………………
Case < Điề u kiện_n>
Case Else
End Select
Diễn giải sẽ đượ c so sánh từ <Điề u kiện_1>
đến <Điề u kiện_n>, nếu
<Điề u kiện_1> thỏa mãn thì đó đượ c thực hiện.Nếu tất c ả các điều kiện không thỏa mãn thì sẽ đượ c thực hiện.Từ khóa Case Else có thể có hoặc có thể không
Basic VBA for AutoCad
Page 44
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
5.2. Cấu Trúc Vòng Lặp 5.2.1. Cấu trúc: “For … Next” Đây là vòng lặp thông thườ ng nhất đượ c sử dụng khi chúng ta đ ã biết chính xác số lần lặ p.
Cấu trúc For = To [Step ]
Next
Một số chú ý - For, To, Step, Next đây là các từ khóa mặc định của chương tr ình. - , , phải là các giá tr ị số. - Giá tr ị của có thể Âm hoặc Dương
Nếu là Dương thì phải nhỏ hơn hoặc bằng . Nếu là Âm thì phải lớn hơn hoặc bằng . Nếu không chỉ ra giá tr ị cụ thể của (Không có từ khóa Step) thì giá tr ị mặc định của là 1
- Muốn thoát khỏi vòng lặ p ta sử dụng từ khóa Exit For Basic VBA for AutoCad
Page 45
Designing Team-Engineering Department
Đinh Văn Tráng
Cách làm việc của cấu trúc - Ban đầu gán bằng vớ i - So sánh vớ i
Nếu là Dương
Nếu nhỏ hơn hoặc bằng thì thực hiện và tự động cộng thêm một giá tr ị bằng nếu có từ khóa
Step còn không sẽ cộng thêm 1 và quay lại bướ c so sánh vớ i .
Nếu lớn hơn sẽ k ết thúc vòng lặ p.
Nếu là Âm
Nếu lớn hơn hoặc bằng thì thực hiện và tự động cộng thêm vào một giá tr ị bằng nếu có từ khóa Step còn không sẽ cộng thêm 1 và quay lại bướ c so sánh vớ i .
Nếu nhỏ hơn sẽ k ết thúc vòng lặ p.
Ví dụ : Ví dụ này sẽ tính tổng của các số từ 1 đển 50
Ví dụ Ví dụ này sẽ tính tổng các số chẵn từ 0 đến 50
Basic VBA for AutoCad
Page 46
Designing Team-Engineering Department
Đinh Văn Tráng
5.2.2. Cấu trúc : “For Each … Next” Đối vớ i một t ậ p hợ p các phần tử hoặc một mảng chúng ta không thể xác định cụ thể số phần tử của nó thì việc lặ p một khối lệnh nào đó sẽ tr ở nên khó khăn.Để giải quyết vấn đề này chúng ta sử dụng cấu trúc For Each … Next.
Cấu trúc : For Each In
Next
Một số chú ý : - For Each, In, Next là các t ừ khóa mặc định của chương tr ình. - sẽ nhận giá tr ị từ phần tử đầu tiên đế n phần tử cuối cùng trong .Ứ ng vớ i mỗ i giá tr ị của biến chạy thì sẽ đượ c thực hiện một lần.
- Nếu là một “Tập các đối tượ ng” thì kiểu dữ liệu của có thể là Variant hoặc cùng kiểu vớ i kiểu của các đối tượ ng trong tậ p hợp đó.Nếu là Mảng thì kiểu dữ liệu của chỉ có thể là Variant.
- Để thoát khỏi vòng lặ p chúng ta s ử dụng từ khóa Exit For.
Ví dụ Ví dụ này sẽ duyệt qua tập đối tượ ng Blocks trong bản vẽ, nếu tìm thấy Block có tên “Section” thì giá tr ị TF_Section sẽ bằng True và thoát khỏi vòng lặ p
Basic VBA for AutoCad
Page 47
Đinh Văn Tráng
Designing Team-Engineering Department
5.2.3. Cấu trúc : “Do While … Loop”
Cấu trúc Do While <Điề u kiện>
Loop
Chú ý
- Vớ i cấu trúc này <Điề u kiện> sẽ đượ c kiểm tra trướ c khi vào vòng lặ p, chỉ đượ c thực hiện khi <Điề u kiện> là ĐÚNG. - Muốn thoát khỏi vòng lặ p này ta s ử dụng từ khóa Exit Do
Ví dụ
5.2.4. Cấu trúc : “Do … Loop While”
Cấu trúc Do
Loop While <Điề u kiện>
Chú ý
- Vớ i cấu trúc này <Điề u kiện> đượ c kiểm tra sau khi đượ c thực hiện, do đó có ít nhất 1 lần đượ c thực thi.Khi
<Điề u kiện> là ĐÚNG sẽ tiế p t ục thực
hiện vòng lặ p. - Để thoát khỏi vòng lặ p ta sử dụng từ khóa Exit Do Basic VBA for AutoCad
Page 48
Designing Team-Engineering Department
Đinh Văn Tráng
5.2.5. Cấu trúc : “Do Until … Loop”
Cấu trúc Do Until <Điề u kiện>
Loop
Chú ý Vớ i cấu trúc này thì <Điề u kiện> sẽ đượ c kiểm tra ở đầu vòng lặ p và sẽ
đượ c thực hiện khi <Điề u kiện> là SAI. - Để thoát khỏi vòng lặ p ta sử dụng từ khóa Exit Do
Ví dụ
5.2.6. Cấu trúc : “Do … Loop Until ”
Cấu trúc Do
Loop Until <Điề u kiện>
Chú ý
- Tương tự như cấu trúc “Do … Loop While” cấu trúc này cũng sẽ kiểm tra <Điề u kiện> sau khi thực hiện , do đó có ít nhất 1 lần đượ c thực thi.Nếu
<Điề u kiện> là SAI thì sẽ tiế p t ục vòng lặ p. - Để thoát khỏi vòng lặ p ta sử dụng từ khóa Exit Do Basic VBA for AutoCad
Page 49
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 6
CÁC HÀM NHẬP LIỆU N ội dung chương :
-
Giớ i thiệu về đối tượng Utility và các phương thức có trong đối tượ ng này
-
Giớ i thiệu về phương thứ c Prompt
-
Giớ i thiệu về phương thứ c GetString
-
Giớ i thiệu về phương thứ c GetPoint
-
Giớ i thiệu về phương thứ c GetInteger, GetReal
-
Giớ i thiệu về phươ ng thứ c GetDistance
-
Giớ i thiệu về phương thứ c GetKeyWord
-
Giớ i thiệu về phương thứ c GetCorner
-
Giớ i thiệu về phương thứ c GetEntity
-
Giớ i thiệu về phương thứ c InitializeUserInput
Trong lậ p trình VBA cho Autocad t ương tác giữa người dùng và chương tr ình là một yếu t ố thiết yếu.Thông qua sự tương tác này ngườ i sử dụng có thể nhậ p dữ liệu và điều khiển chương trình hoạt động.Trong VBA việc nhậ p dữ liệu đượ c hỗ tr ợ thông qua đối tượ ng Utility – một thuộc tính của đối tượ ng Thisdrawing. Mỗi phương thức nhậ p liệu t ừ người dùng đều hiển thị dấu nhắc trên dòng lệnh của Autocad
cho phép ngườ i dùng nhậ p dữ liệu t ừ Dòng Lệnh hoặc từ Màn Hình Đồ H ọa của Autocad và tr ả về giá tr ị phù hợ p vớ i kiểu giá tr ị cần nhậ p vào.Ví dụ phương thức GetString tr ả về kiểu
String, phương thức GetInteger tr ả về kiểu Integer, phương thức GetPoint tr ả về kiểu Variant (sẽ là mảng 1 chiều 3 phần tử kiểu Double)…Ta có thể kiểm soát việc nhậ p dữ liệu từ ngườ i dùng bằng cách sử dụng phương thức InitializeUserInput, với phương thức này cho phép ta điều khiển nhiều thứ như :không thể nhậ p vào số âm, không thể nhậ p vào giá tr ị Null…
Dưới đây là mộ t số hàm nhậ p liệu thườ ng dùng.
Basic VBA for AutoCad
Page 50
Designing Team-Engineering Department
Đinh Văn Tráng
6.1. Phương thứ c : Prompt
Công dụng Phương thức Prompt được dùng để gửi một thông báo đến người dùng trướ c khi ho ặc sau khi một nội dung nào đó đã đuợ c thực hiện thông qua dòng lệnh của AutoCad.
Cú pháp Thisdrawing.Utility.Prompt Mesage Vớ i Message là chuỗi thông báo sẽ đượ c hiển thị t ại dòng lệnh của AutoCad
Ví dụ
Sau khi chạy ví dụ trên, màn hình Autocad hiện k ết quả như sau:
Để dòng thông báo xuất hiện trên một dòng ta thêm vào hằng số vbCrLf như sau
Lúc này k ết qu ả như sau:
Basic VBA for AutoCad
Page 51
Đinh Văn Tráng
Designing Team-Engineering Department
6.2. Phương thứ c: GetString
Công dụng Yêu cầu ngườ i dùng nhậ p vào một chuỗi tại dòng lệnh của Autocad
Cú pháp StrObj = Thisdrawing.Utility.GetString (HasSpaces [, Prompt])
Giải thích Tham số StrObj
Giải thích Kiểu String - ThôBiến chứa giá tr ị chuỗi do ngườ i dùng nhậ p vào Kiểu Boolean, điều khiển việc nhậ p “dấu cách” Nếu HasSpaces = TRUE ngườ i dùng có thể nhậ p “dấu cách” trong
HasSpaces
chuỗ i, chỉ có thể nhấn Enter để k ết thúc lệnh. Nếu HasSpaces =FALSE ngườ i dùng không thể nhậ p “dấu cách” trong chuỗi,nhấn Space hoặc Enter đều có thể k ết thúc lệnh
Prompt
Tham số tùy chọn kiểu String - Là chuỗ i sẽ hiển thị trên dòng lệnh của Autocad nhắc ngườ i dùng nhậ p dữ liệu.
Ví dụ
Basic VBA for AutoCad
Page 52
Đinh Văn Tráng
Designing Team-Engineering Department
6.3. Phương thứ c : GetPoint
Công dụng Phương thức này sẽ yêu cầu ngườ i dùng nhậ p vào một điểm bằng cách nhậ p tọa độ tr ực tiế p t ừ dòng lệnh hoặc chọn điểm trên màn hình.
Cú pháp PointObj = Thisdrawing.Utility.GetPoint ([Base Point] [, Prompt ])
Giải thích Giải thích
Tham số
Kiểu Variant – Là mảng 1 chiều 3 phần tử chứa tọa độ điểm đượ c PointObj
nhậ p vào Tham số tùy chọn – Điểm tham chiếu đến điểm đượ c nhậ p vào.N ếu
Base Point
có tham số Base Point sẽ xuất hiện “sợ i dây thun” nố i từ điểm Base
Point đến vị trí con tr ỏ chuột. Tham số tùy chọn kiểu String- Là chuỗ i sẽ hiển thị trên dòng lệnh Prompt
của Autocad nhắc ngườ i dùng nhậ p dữ liệu.
Ví dụ
Basic VBA for AutoCad
Page 53
Đinh Văn Tráng
Designing Team-Engineering Department
6.4. Phương thứ c : GetInteger và GetReal
Công dụng Phương thức GetInteger sẽ yêu cầu ngườ i sử dụng nhậ p vào một số nguyên, còn phương thức GetReal sẽ yên cầu ngườ i dùng nhậ p vào một số thực
Cú pháp IntValue = Thisdrawing.Utitlity.GetInteger ([Prompt]) DblValue = Thisdrawing.Utitlity.GetReal ([Prompt])
Giải thích Tham số
Giải thích
IntValue
Kiểu Integer - Biến chứa giá tr ị số nguyên do ngườ i dùng nhậ p vào
DblValue
Kiểu Double - Biến chứa giá tr ị số thực do ngườ i dùng nhậ p vào
Prompt
Tham số tùy chọn, kiểu String– Chuỗ i ký tự hiện trên dòng lệnh của AutoCad yêu cầu ngườ i dùng nhậ p dữ liệu vào
Ví dụ
Basic VBA for AutoCad
Page 54
Đinh Văn Tráng
Designing Team-Engineering Department
6.5. Phương thứ c : GetDistance
Công dụng Phương thức này sẽ yêu cầu ngườ i dùng nhậ p vào giá tr ị khoảng cách, giá tr ị này có thể đượ c nhậ p từ dòng lệnh hoặc có thể đượ c chọn 2 điể m trên màn hình bản vẽ.
Cú pháp DistValue = Thisdrawing.Utility.GetDistance ([Point] [,Prompt])
Giải thích Tham số DistValue
Giải thích Kiểu Double – Biến chứa giá tr ị khoảng cách do ngườ i dùng nhậ p vào. Tham số tùy chọn, kiểu Variant/Double – mảng 1 chiều có 3 phần tử thể hiện tọa độ của điểm cơ sở để tính khoảng cách.
Point
Nếu tham số này CÓ thì ngườ i dùng có thể nhậ p khoảng cách
hoặc chọn thêm một điểm để xác định khoảng cách.
Nếu tham số này KHÔNG CÓ thì ngườ i dùng có thể nhậ p giá tr ị
khoảng cách hoặc chọn 2 điểm để xác định khoảng cách. Prompt
Tham số tùy chọn,kiểu String– Là chuỗi hiện trên dòng lệnh của Autocad nhắc ngườ i dùng nhậ p dữ liệu
Chú ý Phương thức GetDistance cho phép ngườ i dùng nhậ p vào một số âm và sẽ tr ả về một số âm tương ứng.Khi ngườ i dùng chọn điểm trên màn hình thì phương thức này luôn tr ả về giá tr ị tuyệt đối của khoảng cách giữa hai điể m.
Basic VBA for AutoCad
Page 55
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ
6.6. Phương thứ c : GetKeyWord
Công dụng Phương thức này sẽ yêu cầu ngườ i dùng nhậ p vào t ừ khóa ở dòng lệnh của AutoCad
Cú pháp StrKeyword = Thisdrawing.Utility.GetKeyWord ([Prompt])
Giải thích Tham số StrKeyword Prompt
Giải thích Kiểu String – Biến chứa giá tr ị do ngườ i dùng nhậ p vào Tham số tùy chọn kiểu String – Là chuỗ i hiện trên dòng lệnh của
Basic VBA for AutoCad
Autocad nhắc ngườ i dùng nhậ p dữ liệu
Page 56
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ
6.7. Phương thứ c GetEntity
Công dụng Phương thức này đượ c sử dụng để lấy MỘT ĐỐI TƯỢ NG của Autocad bằng cách yêu cầu ngườ i dùng chọn tr ực tiế p trên màn hình bản vẽ.
Cú pháp Thisdrawing.Utility.GetEntity PickedEntity, PickPoint [, Prompt]
Giải thích Tham số PickedEntity PickedPoint
Prompt
Giải thích Biến chứa đối tượng đượ c chọn. Kiểu Variant – Mảng 3 phần tử thể hiện tọa độ điểm mà ngườ i dùng kích chuột chọn đối tượ ng. Tham số tùy chọn, kiểu String – Là chuỗi hiện trên dòng lệnh của Autocad nhắc ngườ i dùng nhậ p dữ liệu
Basic VBA for AutoCad
Page 57
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng chọn một đối tượ ng trên màn hình bản vẽ, sau đó sẽ thông báo về loại đối tượng đã đượ c chọn và tọa độ điểm chọn đó.
6.8. Phương thứ c: GetCorner
Công dụng Phương thức này yêu cầu ngườ i dùng nhậ p một điểm trên dòng lệnh hoặc chọn một điểm trên màn hình bản vẽ - điểm này chính là một góc của một hình chữ nhật.
Cú pháp VarPoint =Thisdrawing.Utility.GetCorner (BasePoint [,Prompt])
Giải thích Tham số VarPoint BasePoint Prompt
Basic VBA for AutoCad
Giải thích Kiểu Variant – Thực chất là mảng 1 chiều 3 phần tử thể hiện tọa độ góc của hình chữ nhật Mảng 1 chiều 3 phần tử - Thể hiện góc thứ nhất của hình chữ nhật Tham số tùy chọn kiểu String – Là chuỗ i hiện trên dòng lệnh của Autocad nhắc ngườ i dùng nhậ p dữ liệu
Page 58
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ
6.9. Phương thứ c : InitializeUserInput
Công dụng Phương thức InitializeUserInput dùng để định ngh ĩa các từ khóa hoặc hạn chế việc nhậ p dữ liệu trong các phương thức như GetDistance, GetInteger, GetKeyword, GetPoint,
GetReal, GetCorner…
Cú pháp Thisdrawing.Utility. InitializeUserInput Bits [,Keyword]
Giải thích Giải thích
Tham số Bits Keyword
Kiểu Integer - Giá tr ị tham số này bằng tổng các Bit Code tương
ứng vớ i các chế độ kiểm soát mà ta mong mu ốn Tham số tùy chọn kiểu String chứa danh sách các từ khóa
Basic VBA for AutoCad
Page 59
Đinh Văn Tráng
Designing Team-Engineering Department
Code và chế độ ế độ kiểm soát tương ứng thườ ng M ột số giá giá tr ị Bit Code và ng dùng
Bit Code 1
Chế độ kiểm soát Giá tr ị PH ẢI đượ c nhậ p vào, không khô ng chấ p nhận giá tr ị Null (Chỉ nhấn phím Enter mà không nhậ p giá tr ị)
2
Giá tr ị nhậ p phải khác 0
4
Giá tr ị nhập không đượ c là số âm Dùng cho hàm GetDistance, bit code này sẽ loại bỏ tọa độ Z của hai
64
điểm cần tính khoảng cách (tương tự như việc chiếu 2 điểm này lên mặt phẳng XY, sau đó tính khoả ng cách giữa hai điể m chiếu này) Cho phép nhậ p chuỗ i ký tự không có trong danh sách các từ
128
khóa.Các Bit Code khác sẽ được ưu tiên trước nhưng nếu Bit Code
1 và Bit Code 128 đượ c sử dụng cùng lúc vớ i nhau (BITS=129) thì giá tr ị Null nhậ p vào sẽ đượ c chuyển thành chuỗ i r ỗng
Ví dụ Ví dụ này sẽ thông báo dữ liệu nhậ p vào phải khác r ỗng, khác không và không âm
Basic VBA for AutoCad
Page 60
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 7
TẠO MỚI ĐỐI TƯỢ NG NG TRONG AUTOCAD N ội ội dung chương : :
-
Khái niệm về ModelSpace ModelSpace và PaperSpace
-
ố đối tượng chính trong AutoCad như Line, Circle, Arc, Text, Cách t ạo mớ i một số đối Mtext…
Basic VBA for AutoCad
Page 61
Designing Team-Engineering Department
Đinh Văn Tráng
7.1. Xác định nơi chứa đối tượ ng ng Trong AutoCad tất cả các đối tượng đồ họa đều đượ c tạo trong tập đối tượ ng ng ModelSpace (Không gian mô hình), t ập đối tượ ng ng PaperSpace (Không gian in) ho ặc trong đối tượ ng ng ng ModelSpace và PaperSpace. Block.Tuy nhiên đượ c sử dụng nhiều nhất là hai t ập đối tượ ng
ModelSpace :Đây là nơi chủ yếu các đối tượng đồ họa cấu thành nên bản vẽ sẽ đượ c thực hiện.Trong AutoCad chỉ có một không gian mô hình t ương ứng vớ i nó chính là thẻ Model nằm ở góc ở góc dướ i màn hình bản vẽ.
PaperSpace : PaperSpace cũng cho phép chứa các đối tượng đồ họa, nhưng mục đích chính của PaperSpace là để bố trí và in ấn bản vẽ.PaperSpace thườ ng ng chứa các khung nhìn theo một t ỉ lệ định trướ c thể hiện một phần bản vẽ bên ModelSpace.Trong AutoCad ngườ i dùng có thể t ạo nhiều không gian in khác nhau, mỗi không gian in tương ứ ng vớ i một thẻ Layout nằm ở góc ở góc dướ i màn hình bản vẽ.Để truy cập đến các không gian in ta sử dụng tậ p
đối tượ ng ng Layouts. Tại một thời điểm hoặc ModelSpace hoặc PaperSpace là hiện hành.Chúng ta dùng thuộc tính ng Thisdrawing để thiết lậ p sự hiện hành của một không gian. ActiveSpace có trong đối tượ ng
Ví dụ Ví dụ này sẽ thông báo ModelSpace hay PaperSpace là hiện hành
Ví dụ Ví dụ này sẽ chuyển đổ i qua lại giữa ModelSpace và PaperSpace
Basic VBA for AutoCad
Page 62
Đinh Văn Tráng
Designing Team-Engineering Department
7.2. Khai báo và phương thứ c tạo đối tượ ng hình học 7.2.1. Tạo đườ ng thẳng –Phương thứ c AddLine
Cú pháp Set LineObj = Thisdrawing.SPACE.AddLine (StartPoint, EndPoint)
Giải thích Tham số
Giải thích
LineObj
Kiểu acadLine – Biến chứa đoạn thẳng đượ c tr ả về
SPACE
Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace
StartPoint,
Kiểu Variant hoặc mảng 1 chiều 3 phần tử kiểu Double chứa tọa độ
EndPoint
điểm đầu và điểm cuố i của đoạn thẳng đượ c tạo
Ví dụ
Basic VBA for AutoCad
Page 63
Đinh Văn Tráng
Designing Team-Engineering Department
7.2.2. Tạo đối tượ ng LWPolyline - Phương thứ c AddLightWeightPolyline Để tạo một đối tượ ng gồm nhiều đoạn thẳng liên tiếp đi qua các điểm chúng ta sử dụng phương thức AddLightWeightPolyline
Cú pháp Set LWPolylineObj = Thisdrawing.SPACE.AddLightWeightPolyline (Points)
Giải thích Tham số
Giải thích
LWPolylineObj
Kiểu acadLWPolyline –Biến chứa đối tượ ng LightWeightPolyline
SPACE
Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace Tham số kiểu Double chứa tọa độ đỉnh của đa tuyến.Mỗi đỉnh chỉ
Points
có 2 thành phần x và y.Vì vậy số phần tử của tham số Points luôn là số chẵn.
Ví dụ Ví dụ này sẽ t ạo ra một đa tuyến gồm nhiều đoạn thẳng liên tiếp đi qua các điểm,
khi muốn k ết thúc thì nhấn phím Enter ho ặc nhấn ESC
Basic VBA for AutoCad
Page 64
Đinh Văn Tráng
Designing Team-Engineering Department
7.2.3. Tạo đối tượng đườ ng tròn – Phương thứ c AddCircle
Cú pháp Set CircleObj = Thisdrawing.SPACE.AddCircle (CenterPoint, Radius)
Giải thích Tham số CircleObj SPACE CenterPoint Radius
Ví dụ
Ví dụ
Basic VBA for AutoCad
Giải thích Kiểu acadCircle –Biến chứa đườ ng tròn đượ c tạo. Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace Kiểu Variant hoặc mảng 3 phần tử kiểu Double –Thể hiện tọa độ tâm của đườ ng tròn Kiểu Double – Bán kính của đườ ng tròn nhậ p vào
Page 65
Đinh Văn Tráng
Designing Team-Engineering Department
7.2.4. Tạo đối tượ ng cung tròn –Phương thứ c AddArc
Cú pháp
Set ArcObj = Thisdrawing.SPACE.AddArc (CenterPoint, Radius, StartAngle, EndAngle)
Giải thích Tham số
Giải thích
ArcObj
Kiểu acadArc - Biến chứa đối tượng Arc đượ c tạo
SPACE
Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace
CenterPoint Radius
Kiểu Variant hoặc mảng 3 phần tử kiểu Double – chứa tọa độ tâm của cung tròn Kiểu Double – Bán kính của cung tròn đượ c tạo
Kiểu Double – Góc bắt đầu và k ết thúc của cung tròn (Tính bằng StartAngle,EndAngle Radian).Phương thức này sẽ vẽ cung tròn theo chiều ngượ c chiều kim đồng hồ từ góc StartAngle đến góc EndAngle.
Ví dụ
Basic VBA for AutoCad
Page 66
Đinh Văn Tráng
Designing Team-Engineering Department
7.2.5. Tạo đối tượng văn bản đơn - phương thứ c AddText
Cú pháp Set TextObj = thisdrawing.SPACE.AddText (TextString, InsertPoint,Height)
Giải thích Tham số TextObj
Kiểu acadText – Biến chứa đối tượng Text đượ c tạo
SPACE
Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace
TextString
Kiểu String – Là chuỗ i hiển thị trên bản vẽ
InsertPoint
Kiểu Variant hoặc mảng 3 phần tử kiểu Double xác định điể m chèn chuỗi văn bản.
Height
Giải thích
Kiểu Double – Xác định chiều cao chữ đượ c tạo
Chú ý: Văn bản đượ c t ạo sẽ sử dụng kiểu chữ hiện hành vớ i những thiết lậ p mặc định về
phông chữ và định dạng
Ví dụ
Basic VBA for AutoCad
Page 67
Đinh Văn Tráng
Designing Team-Engineering Department
7.2.6. Tạo đối tượng văn bản nhiều dòng-Phương thứ c AddMtext
Cú pháp Set MtextObj = Thisdrawing.SPACE.AddMText (InsertPoint, Width, TextString)
Giải thích Giải thích
Tham số MtextObj SPACE
Kiểu acadMtext – Biến chứa đối tượng MText đượ c t ạo Không gian chứa đối tượ ng Line : ModelSpace ho ặc PaperSpace Kiểu Variant hoặc mảng 3 phần tử kiểu Double xác định điể m chèn
InsertPoint Width TextString
chuỗi văn bản. Kiểu Double – Xác định bề r ộng của văn bản đượ c hiển thị Kiểu String – Là chuỗ i hiển thị trên bản vẽ
Ví dụ Ví dụ này sẽ tạo một đối tượng Mtext trong ModelSpace, sau đó tiến hành đổ i
màu thành Magenta đồng thờ i thiết lậ p chế độ căn lề là “Middle Center” cho đối tượ ng MText này.
Basic VBA for AutoCad
Page 68
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 8
LÀM VIỆC VỚI ĐỐI TƯỢ NG SELECTIONSET
N ội dung chương :
- Khai báo và kh ở i t ạo một đối tượ ng SelectionSet - Giớ i thiệu một số phương thứ c chọn đối tượng thườ ng dùng - K ết hợ p bộ lọc đối tượng vào các phương thứ c chọn đối tượ ng
Basic VBA for AutoCad
Page 69
Đinh Văn Tráng
Designing Team-Engineering Department
8.1. Quy trình làm việc với đối tượ ng SelectionSet Đôi tượ ng SelectionSet đượ c sử dụng để chứa các đối tượng đượ c chọn trong bản vẽ.Mỗi đối tượ ng SlectionSet có nhiều phương thức để thêm đối tượng vào nó như AddItems, SelectOnScreen… Mỗi bản vẽ Autocad đều có một t ập đối tượ ng SelectionSets chứa các đối tượ ng SelectionSet trong bản vẽ.Ngườ i dùng có thể tạo ra nhiều đối tượ ng SelectionSet bằng cách dùng phương thức Add có trong tập đối tượ ng SelectionSets.
Đối tượ ng SelectionSet chỉ có tính chất t ạm thờ i ngh ĩa là khi đóng bản vẽ lại thì mọi đối tượ ng SelectionSet sẽ là một tậ p r ỗng. Quá trình làm việc với đối tượ ng SelectionSet gồm các bướ c sau: -
Khai báo đối tượ ng SelectionSet
-
Khở i tạo đối tượ ng SelectionSet.
-
Thêm các đối tượ ng vào SelectionSet
-
Thực hiện các thao tác cần thiết trên các đối tượ ng trong SelectionSet
8.2. Khai báo và kh ở i tạo đối tượ ng SelectionSet
Cú pháp Set SelectionSetObj = Thisdrawing.SelectionSets.Add (SelectionSetName)
Giải thích Tham số SelectionSetObj SelectionSetName
Basic VBA for AutoCad
Giải thích Kiểu acadSelectionSet – Biến chứa đối tượ ng SelectionSet
đượ c tạo Kiểu String – Chuỗi xác định tên SelectionSet đượ c t ạo
Page 70
Designing Team-Engineering Department
Ví dụ
Giải thích dòng lệnh
Đinh Văn Tráng
- Dòng mã lệnh số 1: T ắt các thông báo lỗ i khi xuất hiện - Dòng mã lệnh số 2: Khai báo đối tượ ng SelectionSet - Dòng mã lệnh số 3: Nếu đối tượ ng SelectionSet có tên “Kira” tồn tại thì sẽ đượ c gán cho
đối tượ ng SelectionSetObj. - Dòng mã lệnh số 4: Nếu đối tượng SelectionSet có tên “Kira” chưa tồ n tại thì sẽ xuất hiện lỗ i. - Dòng mã lệnh số 5: Xóa lỗ i xảy ra. - Dòng mã lệnh số 6: Khở i tạo đối tượ ng SelectionSet có tên “Kira” - Dòng mã lệnh số 7: Nếu đã tồn tại đối tượ ng SelectionSet có tên “Kira” thì sẽ xóa bỏ nội
dung bên trong đối tượ ng này.
8.3. Thêm đối tượ ng vào trong một SelectionSet Để thêm các đối tượ ng hình học vào trong một SelectionSet chúng ta sử dụng phương thức có sẵn trong đối tượ ng SelectionSet như AddItems, Select, SelectAtPoint, SelectionOnScreen,
SelectByPolygon… Tùy thuộc vào mỗi phương thức đượ c sử dụng mà có các tham số tương ứng đi kèm khác
nhau.Sau đây là một số phương thức thường đượ c sử dụng.
Basic VBA for AutoCad
Page 71
Đinh Văn Tráng
Designing Team-Engineering Department
8.3.1. Phương thứ c AddItems Phương thức này dùng để thêm TỪNG ĐỐI TƯỢ NG hình học vào trong đối tượ ng SelectionSet.
Cú pháp SelectionSetObj.AddItems ArrayObj
Giải thích Tham số
Giải thích
SelectionSetObj
ểu acadSelectionSet – Biến chứa đối tượng SelectionSet đượ c tạo
ArrayObj
ểu Variant, là mảng chứa các đối tượng đượ c thêm vào SelectionSet
Ví dụ
Basic VBA for AutoCad
Page 72
Đinh Văn Tráng
Designing Team-Engineering Department
8.3.2. Phương thứ c Select Phương thức Select là một phương thức cơ bả n của đối tượ ng SelectionSet.Với phương thức này thì ngườ i dùng sẽ có nhiều lựa chọn khác nhau để thêm đối tượng vào trong đố i
tượ ng SelectionSet tùy thuộc vào việc sử dụng các tham số của phương thức.
Cú pháp SelectionSetObj.Select Mode [, Point_1] [, Point_2] [, FilterType] [, FilterData]
Giải thích Tham số
SelectionSetObj Mode
Giải thích Kiểu acadSelectionSet – Biến chứa đối tượ ng SelectionSet đượ c tạo Kiểu InteGer - Tham số xác định chế độ chọn đối tượ ng. Tham số tùy chọn, kiểu Variant /Double - Mảng 3 phần tử chứa
Point_1
tọa độ điểm thứ nhất của cửa sổ lựa chọn, sử dụng k ết hợ p vớ i tham số Point_2 Tham số tùy chọn, kiểu Variant/ Double - Mảng 3 phần tử chứa tọa
Point_2
độ điểm thứ hai của cửa sổ lựa chọn, sử dụng k ết hợ p vớ i tham số Point_1
FilterType,
Tham số tùy chọn xác định bộ lọc đối tượ ng (Xem chi tiết t ại “Bộ
FilterData
lọc đối tượ ng”)
Giớ i thiệu tham số Mode
Tham số Mode sẽ xác định cách thức lựa chọn đối tượ ng khi sử dụng phương thức Select.
Basic VBA for AutoCad
Page 73
Đinh Văn Tráng
Designing Team-Engineering Department Bảng giá tr ị và ý ngh ĩa của tham số Mode
Mode
Giá trị
Ý ngh ĩa Chọn tất cả các đối tượ ng nằm trong hình chữ nhật
acSelectionSetWindow
0
giớ i hạn bởi hai điể m Point_1, Point_2.Hai tham s ố Point_1, Point_2 bắt buộc phải đượ c sử dụng Chọn tất cả các đối tượ ng nằm trong hoặc bị cắt
acSelectionSetCrossing
1
bở i hình chữ nhật giớ i hạn bởi hai điểm Point_1, Point_2.Hai tham số Point_1, Point_2 bắt buộc phải đượ c sử dụng
acSelectionSetPrevious
3
acSelectionSetLast
4
acSelectionSetAll
5
Chọn các đối tượng đã đượ c chọn gần nhất.Hai tham số Point_1, Point_2 đượ c bỏ qua. Chọn đối tượ ng cuối cùng đượ c tạo ra.Hai tham số
Point_1, Point_2 đượ c bỏ qua Chọn tất cả các đối tượ ng trong bản vẽ.Hai tham số
Point_1, Point_2 đượ c bỏ qua
Ví dụ
Basic VBA for AutoCad
Page 74
Đinh Văn Tráng
Designing Team-Engineering Department
8.3.3. Phương Thứ c SelectOnScreen Phương thức này sẽ hiện thị dòng nhắc “Select Object:” t ại dòng lệnh và cho phép ngườ i dùng chọn đối tượ ng tr ực tiế p trên màn hình bản vẽ bằng nhiều cách.Cách thao tác này giống như một số lệnh thông thườ ng của AutoCad như Copy, Move, Delete… Với phương thức này thì hai tham số Point_1 và Point_2 không đượ c sử dụng, hai tham số
xác đinh chế độ lọc FilterType và FilterData có thể đượ c sử dụng.
Cú pháp SelectionSetObj.SelectOnScreen [FilterType] [, FilterData]
Giải thích Tham số SelectionSetObj
Giải thích Kiểu acadSelectionSet – Biến chứa đối tượng SelectionSet đượ c tạo ra
FilterType,
Tham số tùy chọn xác định bộ lọc đối tượ ng (Xem chi tiết t ại “Bộ
FilterData
lọc đối tượ ng”)
Ví dụ
Basic VBA for AutoCad
Page 75
Designing Team-Engineering Department
Đinh Văn Tráng
8.3.4. Thao tác với các đối tượ ng trong SelectionSet Mục đích chính của đối tượng SelectionSet là nhóm các đối tượ ng hình học lại để hiệu chỉnh các đối tượng trong đó mộ t cách dễ dàng hơn.Do vậy để truy cập đến các đối tượ ng trong nằm trong SelectionSet ta sử dụng cấu trúc “For Each….Next”
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng chọn các đối tượ ng trên màn hình bản vẽ, sau đó đổ i màu
các đối tượng đượ c chọn thành màu đỏ.
8.4. Bộ lọc cho đối tượ ng SelectionSet Trong quá trình thao tác với đối tượ ng SelectionSet, đôi khi ta muố n giớ i hạn việc chọn đối
tượ ng theo một điều kiện nào đó như chỉ chọn các đối tượ ng Line, Circle… hoặc đơn giả n chọn các đối tượ ng thuộc một Layer nào đó hoặc đối tượng có màu nào đó….Để thực hiện
điều này cần xác định “Kiểu bộ lọc” và “Đố i tượ ng lọc”.Kiểu bộ lọc chính là tham số FilterType và Đối tượ ng lọc chính là FilterData. - FilterType : Kiểu Integer, là mảng 1 chiều chứa mã Dxf xác định “Kiểu lọc đối tượ ng”. - FilterData : Ki ểu Variant, là mảng một chiều chứa “Đối tượ ng lọc”.
Chú ý : Quan hệ giữa FilterType và FilterData là quan h ệ 1:1 nên số phần tử trong mảng FilterType và FilterData phải bằng nhau. Basic VBA for AutoCad
Page 76
Đinh Văn Tráng
Designing Team-Engineering Department
Danh sách các mã Dxf thường đượ c sử dụng Ý ngh ĩa
Mã Dxf 0
Kiểu String – Thể hiện loại đối tượng như: Line, PolyLine, LWPolyline, Spline, Circle, Arc, Text, Mtext,Dimension…
1
Chuỗi văn bản chứa trong đối tượ ng Text, Mtext.
2
Kiểu String – Thể hiện tên của Block.
6
Kiểu String – Thể hiện LineType của các đối tượ ng.
7
Kiểu String – Tên TextStyle
8
Kiểu String – Thể hiện tên của Layer
10
62
Tọa độ chính của một đối tượng như: StartPoint của Line, điể m chèn của Text, CenterPoint của Circle… Kiểu Integer – Xác định màu của đối tượ ng: 0=ByBlock, 1=Red, 2=Yellow….256=ByLayer.
67
Kiểu Integer – Xác định không gian (0 = ModelSpace ; 1 = PaperSpace)
-4
Các toán tử điều kiện (Sử dụng khi k ết hợ p nhiều điều kiện lọc).
8.4.1. Lọ c theo một điều kiệ n
Khi lọ c theo một điều kiện thì hai tham số FilterType và FilterData là mảng một chiều 1 phần tử.
Basic VBA for AutoCad
Page 77
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Đoạn mã sau sẽ chọn duy nhất đối tượ ng Line trong bản vẽ sau đó sẽ đổi tất c ả các
Line đượ c chọn này thành màu đỏ .
8.4.2. Lọ c theo nhiều điều kiệ n
Khi cần lọc đối tượ ng theo nhiều điều kiện k ết hợ p ta sử dụng “Toán tử điều kiện” vào trong bộ lọc, lúc này các điều kiện lọc sẽ được đặt giữa các “Toán tử điều kiện”. Giá tr ị
Giá tr ị
Số lượng điều
bắt đầu
k ết thúc
kiện loc
AND
“
“And>”
>=1
Đối tượ ng nào thỏa mãn tất c ả các điều kiện lọc sẽ đượ c chọn
OR
“
“Or>”
>=1
Đối tượ ng nào thỏa mãn một trong các điều kiện sẽ đượ c chọn.
Toán tử
Ý ngh ĩa
XOR
“
“Xor>”
2
Đối tượ ng nào thỏa mãn một điều kiện và không thỏa mãn điều kiện còn lại sẽ đượ c chọn.
NOT
“
“Not>”
1
Đối tượ ng nào không thỏa mãn điều kiện lọc sẽ đượ c chọn
Basic VBA for AutoCad
Page 78
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Đoạn mã sau sau sẽ lọc theo nhiều điều kiện, những đối tượ ng nào là đườ ng thẳng hoặc đườ ng tròn sẽ đượ c chọn, sau đó sẽ đổi màu chúng thành màu đỏ .
Tóm lược điều kiện “”
Triểu khai dạng code
Ví dụ Đoạn mã sau sẽ chọn những đối tượ ng nào là Text hoặc Mtext nhưng không thuộ c Layer có tên “DefPoints”, sau đó đổi chúng về Layer có tên “Text_3”
Tóm tắt điều kiện “),””)”And>”
Basic VBA for AutoCad
Page 79
Designing Team-Engineering Department
Đinh Văn Tráng
Triển khai dạng code
8.5. Một số phương thứ c khác của đối tượ ng SelectionSet 8.5.1. Phương thứ c RemoveItems Phương thức này sẽ loại bỏ một ho ặc nhiều đối tượ ng ra khỏ i SelectionSet.Các đối tượ ng này sẽ không nằm trong SelectionSet nữa NHƯNG vẫ n tồn tại trong bản vẽ.
Cú pháp SelectionSetObj.RemoveItems ArrayObj
Giải thích Giải thích Kiểu acadSelectionSet – Biến chứa đối tượng SelectionSet đượ c tạo SelectionSetObj ra Tham số
ArrayObj
Kiểu Variant - mảng chứa các đối tượng đượ c thêm vào SelectionSet
Basic VBA for AutoCad
Page 80
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Đoạn code sau sẽ thực hiện việc tạo đối Circle và đối tượ ng Ellipse trong ModelSpace, sau đó sẽ thêm tất cả các đối tượ ng trong ModelSpace vào SelectionSetObj (K ể cả 2 đối tượ ng Circle và Ellipse vừa mớ i tạo) tiếp theo đó sẽ Remove 2 đối tượ ng Cirle và Ellipse này ra khỏ i SelectionSet.
Basic VBA for AutoCad
Page 81
Designing Team-Engineering Department
Đinh Văn Tráng
8.5.2. Phương thứ c Clear
Khi phương thức Clear đượ c thực thi nó sẽ loại bỏ tất c ả các đối tượ ng ra khỏi SelectionSet NHƯNG bản thân đối tượ ng SelectionSet và các đối tượng đó vẫn tồn tại trong bản vẽ.Đố i tượ ng SelectionSet lúc này tr ở thành một t ậ p r ỗng.
Cú pháp SelectionSetObj.Clear
8.5.3. Phương thứ c Eraser
Khi phương thức Eraser đượ c thực thi nó sẽ loại bỏ tất c ả các đối tượ ng ra khỏi SelectionSet đồng thời xóa luôn các đối tượ ng này khỏ i bản vẽ NHƯNG đối tượ ng SelectionSet vẫn còn tồn tại.Đối tượ ng SelectionSet lúc này là một t ậ p r ỗng.
Cú pháp SelectionSetObj.Eraser
8.5.4. Phương thứ c Delete
Khi phương thức Delete đượ c thực thi nó sẽ xóa đối tượ ng SelectionSet ra khỏi bản vẽ NHƯNG các đối tượ ng nằm trong SelectionSet vẫn còn tồn tại trong bản vẽ.
Cú pháp SelectionSetObj.Delete
Basic VBA for AutoCad
Page 82
Designing Team-Engineering Department
Đinh Văn Tráng
Bài Tậ p chủ đề: Làm việc với đối tượ ng SelectionSet Bài 1: Khai báo và khở i tạo đối tượng SelectionSetObj có tên “PTSCMC”,đồ ng thờ i sử dụng bộ lọc 1
điều kiện để chọn tất c ả các Block có tên do ngườ i dùng nhậ p vào. Bài 2: Khai báo và khở i tạo đối tượ ng SelectionSet có tên “Design_Team”, đồng thờ i sử dụng bộ lọc nhiều điều kiện k ết hợp để chọn đối tượ ng Line có màu Xanh Lá và không thuộc Layer có tên
“Defpoints”.Sau đó thực hiện thao tác Delete tất c ả các Line vuông góc vớ i tr ục Ox. Bài 3:
Thông thường các kích thướ c nằm r ải rác ở các Layer khác nhau.Hãy viết chương tr ình tạo ra một đối tượ ng SelectionSet có tên “Dimension” và chuyển chúng sang một Layer mới.Chương tr ình sẽ hỏi ngườ i sử dụng tên Layer mớ i này.
Basic VBA for AutoCad
Page 83
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 9
HIỆU CHỈNH CÁC ĐỐI TƯỢ NG HÌNH HỌC Nội dung chuyên đề : -
g quan v ề hiệu chỉnh các đối tượ ng hình h ọc trong VBA T ổn
-
Giớ i thiệu về phương thứ c Copy
-
Giớ i thiệu về phương thứ c Delete
-
Giớ i thiệu về phương thứ c Move
-
Giớ i thiệu về phương thứ c Mirror
-
Giớ i thiệu về phương thứ c Offset
-
Giớ i thiệu về phương thứ c Rotate
-
Giớ i thiệu về phương thức Phương thứ c ScaleEntity
-
Giớ i thiệu về thuộc tính Color
-
Giớ i thiệu về thuộc tính Layer
-
Giớ i thiệu về thuộc tính LineType
-
Giớ i thiệu về thuộc tính LineWeight
Basic VBA for AutoCad
Page 84
Đinh Văn Tráng
Designing Team-Engineering Department
9.1. Tổng quan về việc hiệu chỉnh các đối tượ ng hình học bằng VBA Trong VBA việc hiệu chỉnh các đối tượ ng hình học có thể thực hiện thông qua các phương thức hoặc thuộc tính của đối tượ ng
Phương thức dùng để thay đổ i về hình dáng, kích thướ c vị trí của đối tượ ng…Thông thườ ng mỗi phương thức đều có các tham số riêng.
Thuộc tính thườ ng dùng để thay đổ i tính chất liên quan đế n sự hiển thị đối tượng đó trên màn hình hoặc khi in như màu sắ c, kiểu đườ ng..
Khi hiệu chỉnh đối tượ ng bẳng VBA có thể những hiệu chỉnh sẽ chưa đượ c cậ p nhật ngay trên màn hình bản vẽ.Do đó để cậ p nhật những thay đổ i trong bản vẽ ta dùng phương thức Update
có trong đối tượng đó hoặc trong đối tượ ng Application
9.2. Sao chép đối tượ ng – Phương thứ c Copy Với phương thức này đối tượ ng mớ i tạo ra sẽ giống hệt đối tượ ng gốc và có vị trí trùng với đối
tượ ng gốc, tuy nhiên đối tượ ng mớ i sẽ nằm bên trên đối tượ ng gốc
Cú pháp Set CopyObj = OriginalObj.Copy
Giải thích Tham số OriginalObj CopyObj
Giải thích Đối tượ ng hình học – đối tượ ng gốc sẽ đượ c sao chép Đối tượ ng hình học, có kiểu giống vớ i kiểu của đối tượ ng gốc
Ví dụ
Trong ví dụ này sẽ t ạo một đườ ng tròn bên ModelSpace, sau đó sẽ copy đối tượ ng này (Chú ý
đườ ng tròn đượ c copy sau đó sẽ nằm chồng lên đườ ng tròn cũ)
Basic VBA for AutoCad
Page 85
Designing Team-Engineering Department
Đinh Văn Tráng
9.3. Xóa đối tượ ng –Phương thứ c Delete
Cú pháp OriginalObj.Delete
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng chọn đối tượ ng cần xóa đi trên màn h ình bản vẽ
9.4. Di chuyển đối tượ ng – Phương thứ c Move
Cú pháp OriginalObj.Move Point_1, Point_2
Basic VBA for AutoCad
Page 86
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số OriginalObj
Giải thích i tượ ng hình học – Là đối tượ ng sẽ bị di chuyển ểu Variant hoặc Double – Là mảng 3 phần tử chứa tọa độ điểm thứ
oint_1, Point_2
nhất và điểm thứ hai.Hai điểm này sẽ xác định vector chuyển vị
(Vector xác định khoảng cách và hướ ng di chuyển đối tượ ng)
Ví dụ Ví dụ này sẽ t ạo ra một đườ ng tròn và di chuyển vòng tròn này dọc theo tr ục X một khoảng
2 đơn vị.
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng chọn đối tượ ng trên màn hình bản vẽ, sau đó thực hiện
phương thức Move với các đối tượ ng này.
Basic VBA for AutoCad
Page 87
Đinh Văn Tráng
Designing Team-Engineering Department
9.5. Lấy đối xứ ng – Phương thứ c Mirror
Cú pháp Set MirrorObj = OriginalObj.Mirror (Point_1, Point_2)
Giải thích Tham số MirrorObj OriginalObj
Giải thích Biến chứa đối tượ ng tr ả về của phương thức Mirror – có kiểu giố ng vớ i kiểu của đối tượ ng gốc
Đối tượ ng gốc đượ c lấy đố i xứng
Point_1,
Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ của điểm
Point_2
thứ nhất và thứ 2 tạo nên tr ục đối xứng
Basic VBA for AutoCad
Page 88
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Trong ví dụ này yêu cầu ngườ i dùng chọn các đối tượ ng trên màn hình để lấy đố i xứng.Chú ý
biến hệ thống “MIRRTEXT”, biến này có hai giá tr ị là 0 và 1 và chỉ có tác dụng với đố i
tượng văn bản (Hãy thử để thấy sự khác biệt !)
9.6. Phương thứ c OffSet
Công dụng Phương thức Offset sẽ tạo ra một đối tượ ng mới có đường biên cách đườ ng biên của đối tượ ng gốc một khoảng định trước.Phương thứ c này chỉ áp dụng cho các đối tượng như Arc,
Circle, Ellipse, Line, LightweightPolyline, Polyline, Spline, và Xline .Phương thức này sẽ tr ả về một mảng chứa đối tượ ng vừa mớ i tạo NHƯNG thông thườ ng chỉ chứa một đối
tượ ng.
Cú pháp varArrayObj = OriginalObj.Offset (OffsetDistance)
Basic VBA for AutoCad
Page 89
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số
Giải thích
varArrayObj
Kiểu Variant – Mảng chứa đối tượ ng mới đượ c tạo thành
OriginalObj
Đối tượ ng gốc đượ c lấy OffSet Kiểu Double – Kho ảng cách Offset, có thể âm hoặc dương. Nếu là số âm, phương thức này sẽ tạo ra đối tượ ng có “bán kính nhỏ
OffsetDistance hơn” đối tượ ng gốc, khi “bán kính nhỏ hơn” không có ý ngh ĩa (Đối với đối tượ ng Line, Xline …) thì phương thức này sẽ t ạo ra đối
tượ ng có toạ độ X, Y và Z nhỏ hơn đối tượ ng gốc.
Ví dụ
9.7. Xoay đối tượ ng – Phương thứ c Rotate
Công dụng Phương thức này dùng để xoay một đối tượ ng quanh một điểm cố định vớ i một góc quay định trướ c
Cú pháp Object.Rotate BasePoint, RotationAngle
Basic VBA for AutoCad
Page 90
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số Object BasePoint
Giải thích Đối tượ ng sẽ đượ c xoay Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ điểm xoay
RotationAngle Kiểu Double – Góc quay đối tượng ( đơn vị : Radian)
Ví dụ
Trong ví dụ này sẽ yêu cầu ngườ i dùng chọn một đối tượ ng trên màn hình để xoay, góc nhậ p
vào dướ i dạng đơn vị “Degree” sẽ đượ c chuyển sang đơn vị “Radian”
Basic VBA for AutoCad
Page 91
Đinh Văn Tráng
Designing Team-Engineering Department
9.8. Thay đổi tỉ lệ đối tượ ng – Phương thứ c ScaleEntity
Công dụng
Phương thức này dùng để thay đổ i tỉ lệ đối tượ ng giống nhau theo các phương X, Y, Z quanh một điểm.
Cú pháp Object.ScaleEntity BasePoint, ScaleFactor
Giải thích Tham số Object BasePoint
Giải thích Đối tượ ng sẽ đượ c Scale Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ điểm Scale, đối tượ ng sẽ được Scale quanh điể m này Kiểu Double – Xác đinh hệ số Scale.Tham số này phải lớn hơn 0 nếu không chương tr ình sẽ báo lỗ i.
ScaleFactor
Nếu ScaleFactor > 1 : Đối tượng đượ c phóng to lên
Nếu ScaleFactor < 1 : Đối tượ ng bị thu nhỏ lại
Ví dụ
Basic VBA for AutoCad
Page 92
Đinh Văn Tráng
Designing Team-Engineering Department
9.9. Thay đổi màu đối tượ ng – Thuộc tính Color
Công dụng Thuộc tính Color dùng để LẤY hoặc GÁN màu cho một đối tượ ng.
Cú pháp Object.Color = ColorName/ColorIndex
Giải thích Giải thích
Tham số
i tượ ng hình học được thay đổi màu
Object
n màu hoặc chỉ số của màu cần gán cho Layer
olorName/ColorIndex
Chỉ số màu là các số nguyên nằm trong khoảng từ đến 256.Trong AutoCad có 9 màu đượ c
định ngh ĩa bằng hằng số màu acColor.Chúng ta có thể dùng chỉ số màu hoặc hằng số màu đều đượ c.
Bảng tương ứ ng giữ a hằng số màu và chỉ số màu Hằng số màu
Chỉ số màu
Ý ngh ĩa
acByBlock
0
ByBlock
acRed
1
Red
acYellow
2
Yellow
acGreen
3
Green
acCyan
4
Cyan
acBlue
5
Blue
acMagenta
6
Magenta
acWhite
7
White or Black phụ thuộc vào màu nền
256
ByLayer
acByLayer Basic VBA for AutoCad
Page 93
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
Trong ví dụ này sẽ yêu cầu ngườ i dùng chọn các đối tượ ng trên màn hình bản vẽ, sau đó sẽ
đổi màu các đối tượng này thành màu đỏ .
Ví dụ
Trong ví dụ này sẽ t ạo các đườ ng tròn vớ i các bán kính khác nhau đồng thời các đườ ng tròn
đó sẽ đượ c gán màu t ừ 0 đến 256
Basic VBA for AutoCad
Page 94
Đinh Văn Tráng
Designing Team-Engineering Department
9.10. Thay đổi Layer cho đối tượ ng – Thuộc tính Layer
Công dụng
Sử dụng thuộc tính Layer để LẤY hoặc GÁN Layer cho một đối tượ ng
Cú pháp Object.Layer = strLayerName
Giải thích Tham số Object strLayerName
Giải thích i tượ ng hình học sẽ đuợ c gán Layer ểu String – Tên Layer gán cho đối tượ ng
Ví dụ 11
Basic VBA for AutoCad
Page 95
Đinh Văn Tráng
Designing Team-Engineering Department
9.11. Thay đổi kiểu đường cho đối tượ ng – Thuộc tính LineType
Công dụng
Thuộc tính này đượ c sử dụng để thay đổ i kiểu hiển thị NÉT VẼ của các đối tượ ng hình học trên màn hình
Cú pháp Object .Linetype = strLineTypeName
Giải thích Tham số
Giải thích Đối tượ ng hình học sẽ được thay đổ i LineType
Object
strLineTypeName Kiểu String –Tên kiểu đườ ng cần gán cho đối tượ ng
Chú ý
Khi một bản vẽ mới đượ c t ạo thì chỉ có 3 kiểu đườ ng là ByBlock, ByLayer, Continuous là mặc định có sẵn.Do đó, ngoài 3 kiểu đường này để sử dụng một kiểu đường nào đó ta cần
NẠP kiểu đường đó vào trong bản vẽ và kiểu đường đó phải tồn tại trong file “Acad.lin”. Để tải một kiểu đườ ng vào trong bản vẽ chúng ta sử dụng phương thức Load có trong tập đối tượ ng LineTypes.
Cú pháp: Thisdrawing.LineTypes.Load LineTypeName,”acad.lin”
Giải thích : Tham số
Giải thích
trLineTypeName
Kiểu String - Tên kiểu đườ ng cần gán cho Layer.
Basic VBA for AutoCad
Page 96
Đinh Văn Tráng
Designing Team-Engineering Department M ột số kiểu đườ ng thông d ụng
STT
LineTypeName
01
Continuous
02
Center
03
Center2
04
DashDot
05
Dashdot2
06
Hidden
07
Hidden2
08
Phantom
09
PhanTom2
Ví dụ
Trong ví dụ này sẽ yêu cầu ngườ i dùng chọn đối tượ ng trên màn hình , sau đó đổi kiểu đườ ng của các đối tượ ng thành “Phantom”
Basic VBA for AutoCad
Page 97
Đinh Văn Tráng
Designing Team-Engineering Department
9.12. Thay đổi bề rộng nét vẽ của đối tượ ng – Thuộc tính LineWeight
Công dụng
Thuộc tính này dùng để thay đổ i bề r ộng nét khi in của các đối tượ ng hình học
Cú pháp Object.Lineweight = acLineweight
Giải thích Tham số Object acLineWeight
Giải thích Đối tượ ng hình học đượ c gán thuộc tính LineWeight Hằng số thể hiện bề r ộng của nét (Xem bảng hằng số acLineWeight)
Bảng giá trị hằng số acLineWeight acLineWeight
Giá tr ị (mm)
acLineWeight
Giá tr ị(mm)
acLnWtByLayer
ByLayer
acLnWt050
0.50
acLnWtByBlock
ByBlock
acLnWt053
0.53
acLnWtByLwDefault
Mặc định
acLnWt060
0.60
acLnWt000
0.00
acLnWt070
0.70
acLnWt005
0.05
acLnWt080
0.80
acLnWt009
0.09
acLnWt090
0.90
acLnWt013
0.13
acLnWt100
1.00
acLnWt015
0.15
acLnWt106
1.06
acLnWt018
0.18
acLnWt120
1.20
acLnWt020
0.20
acLnWt140
1.40
acLnWt025
0.25
acLnWt158
1.58
acLnWt030
0.30
acLnWt200
2.00
acLnWt035
0.35
acLnWt211
2.11
acLnWt040
0.40
Basic VBA for AutoCad
Page 98
Designing Team-Engineering Department
Đinh Văn Tráng
Chú ý
Khi một đối tượ ng hình học mới đượ c tạo ra thì thuộc tính Lineweight sẽ là
acLnWtByLayer.Nếu không đượ c gán một giá tr ị nét in cụ thể thì giá tr ị Lineweight sẽ đượ c lấy bằng chiều dày mặc định (acLnWtDefault) của Autocad.Giá tr ị acLnWtDefault đượ c thiết lậ p thông qua biến hệ thống LWDEFAULT (Thông thườ ng giá tr ị này là 0,25mm)
Ví dụ
Trong ví dụ này sẽ t ạo ra một đườ ng tròn, sau đó sẽ gán LineWeight cho nó.
Basic VBA for AutoCad
Page 99
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 10
LÀM VIỆC VỚI ĐỐI TƯỢ NG LAYER
Nội dung chuyên đề : - Duyệt qua t ập đối tượ ng Layer -
Khai báo và kh ở i t ạo một Layer m ớ i – Phương thứ c Add
- Đổ i tên Layer – Thu ộc tính Name -
Thiế t lậ p một Layer hi ện hành
-
Gán màu cho m ột Layer – Thu ộc tính Color
-
Gán kiểu đườ ng cho Layer – Thu ộc tính LineType
-
Gán bề r ộng nét cho Layer – Thu ộc tính LineWeight
Basic VBA for AutoCad
Page 100
Designing Team-Engineering Department
Đinh Văn Tráng
10.1. Duyệt qua tập đối tượ ng Layers Mọi Layer đều nằm trong tập đối tượ ng Layers.Vì thế ta có thể duyệt t ập đối tượ ng Layers để tìm các Layer có trong bản vẽ. Chúng ta sử dụng cấu trúc “For Each…Next” để duyệt qua tất cả các Layer có trong bản vẽ.
Ví dụ Ví dụ sau sẽ duyệt qua tập đối tượ ng Layers và hiện tên tất c ả các Layer có trong bản vẽ.
10.2. Khai báo và kh ở i tạo một Layer mớ i – Phương thứ c Add
Quy định tên Layer Tên Layer tối đa là 31 k ý tự bao gồm các chữ cái, số, các ký tự đặc biệt NHƯNG không có dấu cách, nên đặt tên Layer sao cho ý ngh ĩa và dễ nhớ . Trong mỗi bản vẽ thì Layer 0 là Layer mặc định và ngườ i dùng không thể xóa Layer này.
Để tạo một Layer mớ i ta sử dụng phương thức Add có trong tập đối tượ ng Layers
Cú pháp Set LayerObj = Thisdrawing.Layers.Add (LayerName)
Giải thích Tham số
Giải thích
LayerObj
Kiểu AcadLayer – Đây là biế n sẽ chứa Layer đượ c t ạo ra.
LayerName
Kiểu String – Tên của Layer đượ c tạo
Basic VBA for AutoCad
Page 101
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
Ví dụ này sẽ khai báo và khở i tạo một Layer có tên do ngườ i dùng nhậ p vào.Nếu Layer này
đã tồn tại thì sẽ tự động thoát khỏi thủ t ục.
10.3. Đổi tên của Layer – Thuộc tính Name
Ví dụ
Basic VBA for AutoCad
Page 102
Designing Team-Engineering Department
Đinh Văn Tráng
10.4. Thiết lập một Layer hiện hành Quá trình vẽ luôn thực hiện trên lớ p hiện hành.Tất cả các đối tượ ng tạo mới đều được đặt trên Layer hiện hành này và nó sẽ sử dụng kiểu màu, kiểu đườ ng,bề r ộng đườ ng nét của Layer hiện
hành đó.
Chú ý: Không thể thiết lậ p chế độ hiện hành cho một lớp đã bị đóng băng (Freeze) Để thiết lậ p chế độ hiện hành cho một Layer ta sử dụng thuộc tính ActiveLayer của đối tượ ng
Thisdrawing.
Cú pháp Thisdrawing.ActiveLayer = LayerObj
Ví dụ
Ví dụ sau sẽ t ạo một Layer có tên “Layer_1”, sau đó sẽ thiết lậ p Layer này thành hiện hành.
10.5. Gán màu cho một Layer – Thuộc tính Color Để dễ dàng quản lý các đối tượ ng trong bản vẽ ngườ i dùng nên thiết lậ p màu cho các Layer.Để gán màu cho một Layer ta sử dụng thuộc tính Color có trong đối tượ ng LayerObj.
Cú pháp LayerObj.Color = ColorName/ColorIndex
Basic VBA for AutoCad
Page 103
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số
Giải thích
LayerObj
Đối tượ ng Layer muốn gán màu
ColorName/ColorIndex
Tên màu hoặc chỉ số của màu cần gán cho Layer
Chỉ số màu là các số nguyên nằm trong khoảng từ đến 256.Trong AutoCad có 9 màu đượ c
định ngh ĩa bằng hằng số màu acColor.Chúng ta có thể dùng chỉ số màu hoặc hằng số màu đều đượ c.
Bảng tương ứ ng giữ a Hằng số màu và chỉ số màu Hằng số màu
Chỉ số màu
Ý ngh ĩa
acByBlock
0
ByBlock
acRed
1
Red
acYellow
2
Yellow
acGreen
3
Green
acCyan
4
Cyan
acBlue
5
Blue
acMagenta
6
Magenta
acWhite
7
White hay Black phụ thuộc vào màu nền
acBylayer
256
Bylayer
Basic VBA for AutoCad
Page 104
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Ví dụ sau sẽ t ạo một Layer có tên “ChangeColor”, sau đó sẽ gán màu vàng cho Layer này và thiết lậ p Layer này thành Layer hiện hành.
10.6. Gán kiểu đườ ng cho một Layer – Thuộc tính LineType Kiểu đườ ng là sự lặ p lại của mẫu nét đứt, điể m, khoảng tr ống mục đích là thể hiện thông tin một cách tr ực quan.Tất cả kiểu đường trong Autocad được đặt trong một file có tên
“Acad.lin”. Để gán kiểu đườ ng cho một Layer thì ta sử dụng thuộc tính LineType có trong đối tượ ng LayerObj.
Cú pháp LayerObj.LineType = LineTypeName
Giải thích Tham số LayerObj LineTypeName
Giải thích Đối tượ ng Layer muốn gán kiểu đườ ng Kiểu String - Tên kiểu đườ ng cần gán cho Layer.
Basic VBA for AutoCad
Page 105
Đinh Văn Tráng
Designing Team-Engineering Department
STT
Tên kiểu đườ ng thông dụng
01
Continuous
02
Center
03
Center2
04
DashDot
05
Dashdot2
06
Hidden
07
Hidden2
08
Phantom
09
PhanTom2
Chú ý Khi một bản vẽ mới đượ c t ạo thì chỉ có 3 kiểu đườ ng là ByBlock, ByLayer, Continuous là mặc định có sẵn.Do đó, ngoài 3 kiểu đường này để sử dụng một kiểu đường nào đó ta cần
NẠP kiểu đường đó vào trong bản vẽ và kiểu đường đó phải tồn tại trong file “Acad.lin”.
Để tải một kiểu đườ ng vào trong bản vẽ chúng ta sử dụng phương thức Load có trong tập đối tượ ng LineTypes.
Cú pháp Thisdrawing.LineTypes.Load LineTypeName,”acad.lin”
Giải thích Tham số
Giải thích
LineTypeName Kiểu String - Tên kiểu đườ ng cần gán cho Layer.
Basic VBA for AutoCad
Page 106
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Ví dụ này sẽ t ạo một Layer có tên “SetLineType”, sau đó sẽ Load kiểu đườ ng “Phantom” trong tậ p “Acad.lin” và gán cho Layer này.Layer này sẽ đượ c dùng làm hiện hành.
10.7. Gán LineWeight cho một Layer – Thuộc tính LineWeight Chúng ta thườ ng “In theo màu” ngh ĩa là bề r ộng của nét in sẽ đượ c thiết lậ p trong bảng “Plot
Style Table”, lúc này chúng ta không quan tâm đế n bề r ộng đượ c thiết lậ p cho các Layer. Khi “In theo Layer” chúng ta mới quan tâm đế n việc thiết lậ p bề r ộng nét cho các Layer.Tùy thuộc vào cách thể hiện của mỗi ngườ i mà bề r ộng nét của mỗ i Layer sẽ đượ c thiết lậ p khác nhau.
Để thay đổi bề r ộng nét của một Layer ta sử dụng thuộc tính Lineweight có trong đối tượ ng LayerObj.
Cú pháp LayerObj.Lineweight = acLineweight
Basic VBA for AutoCad
Page 107
Đinh Văn Tráng
Designing Team-Engineering Department
Bảng hằng số acLineweight acLineWeight
Giá tr ị (mm)
acLineWeight
Giá tr ị(mm)
acLnWtByLayer
ByLayer
acLnWt050
0.50
acLnWtByBlock
ByBlock
acLnWt053
0.53
acLnWtByLwDefault
Mặc định
acLnWt060
0.60
acLnWt000
0.00
acLnWt070
0.70
acLnWt005
0.05
acLnWt080
0.80
acLnWt009
0.09
acLnWt090
0.90
acLnWt013
0.13
acLnWt100
1.00
acLnWt015
0.15
acLnWt106
1.06
acLnWt018
0.18
acLnWt120
1.20
acLnWt020
0.20
acLnWt140
1.40
acLnWt025
0.25
acLnWt158
1.58
acLnWt030
0.30
acLnWt200
2.00
acLnWt035
0.35
acLnWt211
2.11
acLnWt040
0.40
Chú ý Khi một đối tượ ng hình học mới đượ c tạo ra thì thuộc tính Lineweight sẽ là acLnWtByLayer.Nếu không đượ c gán một giá tr ị nét in cụ thể thì giá tr ị Lineweight sẽ đượ c lấy bằng chiều dày mặc định (acLnWtDefault) của Autocad.Giá tr ị acLnWtDefault đượ c thiết lậ p thông qua biến hệ thống LWDEFAULT.Thông thườ ng giá tr ị này là 0,25mm.
Basic VBA for AutoCad
Page 108
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Ví dụ này sẽ thiết lậ p một Layer có tên “SetLineWeight”, sau đó Layer này sẽ đượ c gán màu đỏ, kiểu đườ ng là “Center”, chiều dày đườ ng nét là 0,15mm.
10.8. Một số thuộc tính khác của đối tượ ng Layer 10.8.1. Bật, Tắt Layer – Thuộc tính LayOn Các đối tượ ng nằm trên Layer đã t ắt sẽ không đượ c hiển thị hay in ra.Để bật ho ặc tắt sự hiển thị của Layer ta sử dụng thuộc tính LayOn có trong đối tượ ng LayerObj.Ứ ng vớ i giá tr ị True Layer đượ c Bật, giá tr ị False Layer bị Tắt.
Cú pháp LayerObj.LayOn = True/False
Ví dụ Trong ví dụ này sẽ tạo ra một Layer có tên “Test_Layon” đồng thờ i sẽ t ắt Layer này.
Basic VBA for AutoCad
Page 109
Designing Team-Engineering Department
Đinh Văn Tráng
10.8.2. Đông cứ ng, Làm tan Layer – Thu ộc tính Freeze, UnFreeze Các đối tượ ng nằm trên Layer bị đóng băng (Freeze) sẽ không đượ c hiển thị hay in ra.Để đông cứng (Freeze) hay làm tan ( UnFreeze) một Layer chúng ta sử dụng thuộc tính Freeze trong đối tượ ng LayerObj. Giá tr ị True Layer bị Đóng Băng, giá tr ị False Layer đượ c Làm
Tan
Cú pháp LayerObj.Freeze = True/False
Ví dụ
10.8.3. Khóa, Mở Khóa Layer – Thuộc tính Lock, UnLock Khi một Layer bị khóa (Lock) thì ngườ i dùng vẫn có thể quan sát được các đối tượ ng trên lớp đó nhưng không thể hiệu chỉnh đượ c chúng.
Để khóa (Lock) hay mở khóa (UnLock) các Layer ta sử dụng thuộc tính Lock có trong đối tượ ng LayerObj. Giá tr ị True Layer bị Khóa, giá tr ị False Layer đượ c Mở Khóa.
Cú pháp LayerObj.Lock = True/False
Basic VBA for AutoCad
Page 110
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Trong ví dụ này sẽ t ạo ra một Layer có tên “Test_Lock” đồng thờ i khóa Layer này.
10.8.4. Xóa Layer – Thuộc tính Delete Layer có thể đượ c xóa bất k ỳ lúc nào trong khi vẽ nhưng không thể xóa các Layer khi nó
đang hiện hành, đang chứa đối tượ ng hoặc là Layer 0, DefPoints. Để xóa Layer ta sử dụng thuộc tính Delete trong đối tượ ng LayerObj.
Cú Pháp LayerObj.Delete
Ví dụ Ví dụ này sẽ Delete một Layer có tên do nguờ i dùng nhậ p vào
Basic VBA for AutoCad
Page 111
Đinh Văn Tráng
Designing Team-Engineering Department
Chương 11
LÀM VIỆC VỚI ĐỐI TƯỢ NG BLOCK Nội dung chương -
Cách khai báo và kh ở i t ạo một Block
-
Cách chèn một Block có s ẵ n vào trong b ản vẽ
- Đổ i tên một Block - Xóa một Block có trong b ản vẽ -
Phá vỡ một Block
- Làm việc vớ i Block có ch ứ a các thuộc tính - Làm việc vớ i bản vẽ tham khảo ngoài Block là một đối tượng đượ c tạo từ nhiều đối tượng cơ bả n trong bản vẽ nhưng nó được coi như một đối tượng đơn.Chúng ta có thể chèn Block trong cùng một bản vẽ hoặc các bản vẽ khác nhau.
Basic VBA for AutoCad
Page 112
Đinh Văn Tráng
Designing Team-Engineering Department
11.1. Duyệt qua tập đối tượ ng Block Chúng ta sử dụng cấu trúc lặ p “For Each..Next” để duyệt qua tất cả các Block có trong tậ p
đối tượ ng Block.
Ví dụ
Ví dụ này sẽ duyệt qua tất c ả các Block có trong bản vẽ và hiện tên của các Block đó
11.2. Khai báo và kh ở i tạo một Block Để khở i tạo một Block trong VBA chúng ta s ử dụng phương thức Add có trong tập đối tượ ng
Blocks.Một Block sau khi đượ c tạo ra có thể đượ c chèn ở ModelSpace hoặc PaperSpace
Cú pháp Set BlockObj = Thisdrawing.Blocks.Add (InsertPoint, BlockName)
Giải thích Tham số BlockObj InsertPoint
BlockName
Giải thích Kiểu acadBlock – Biến chứa đối tượng Block đượ c tạo Kiểu Variant hoặc mảng 3 phần từ kiểu Double – là tâm chèn c ủa Block. Kiểu String – Tên của Block đượ c t ạo (Chú ý tên của Block không
đuợ c dài quá 31 ký tự và giữa chúng không có khoảng tr ắng)
Basic VBA for AutoCad
Page 113
Đinh Văn Tráng
Designing Team-Engineering Department
Ví dụ Ví dụ này sẽ khai báo và tạo một Block có tên “Section”, đồ ng thờ i tạo một đườ ng tròn và
đườ ng thẳng sau đó thêm đườ ng tròn và đườ ng thẳng này vào trong Block đó.
11.3. Đổi tên Block – Thuộc tính NAME Để đổi tên một Block chúng ta sử dụng thuộc tính Name của Block để đổi sang tên mớ i.
Cú pháp BlockObj.Name = NewName
Giải thích Tham số BlockObj NewName
Giải thích Kiểu acadBlock – Đối tượ ng Block cần đổi tên Kiểu String – Tên mớ i của Block
Basic VBA for AutoCad
Page 114
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng nhậ p vào tên Block cần đổi và tên mớ i của Block.Sau đó sẽ sử dụng thuộc tính Name để Rename Block này.
11.4. Xóa một Block – Thuộc tinh Delete Để xóa một Block chúng ta s ử dụng thuộc tính Delete của Block
Cú pháp BlockObj.Delete
Basic VBA for AutoCad
Page 115
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ Ví dụ này sẽ Delete một Block có tên do ngườ i dùng nhậ p vào.
Chú ý
- Nếu một Block t ạo theo phương thứ c Add đượ c gọi là “Block Definition” và Block đó nế u
đượ c Insert vào trong bản vẽ thì tr ở thành “Block Reference”. -
Các “Block Reference” đều tham khảo dữ liệu đến “Block Definition” do đó trong ví dụ trên khi khai báo “Dim ObjBlock as acadBlock” thì đối tượ ng ObjBlock sẽ là “Block Definition”.Chúng ta không thể Delete một “Block Definition” khi trong bản vẽ vẫn còn tồn tại “Block Reference” (Cũng giống như không thể Delete một Layer khi nó vẫn còn
đượ c dùng bở i một đối tượ ng khác).Mặt khác, khi Delete một “Block Reference” nếu chúng ta không sử dụng lệnh “Purge” thì hiển nhiên đối tượ ng “Block Definition” vẫn còn tồn tại trong bản vẽ.
Ví dụ Ở ví dụ này sẽ yêu cầu ngườ i dùng nhậ p vào một tên Block Reference sau đó sử dụng bộ lọc để lọc ra các Block có tên do ngườ i dùng nhậ p vào, tiếp đó sẽ Delete các Block này khỏ i bản vẽ.
Basic VBA for AutoCad
Page 116
Designing Team-Engineering Department
Đinh Văn Tráng
11.5. Chèn Block vào trong b ản vẽ - Phương thứ c InsertBlock Chúng ta sử dụng phương thức InsertBlock để chèn một “Block Definition” vào trong ModelSpace, PaperSpace hoặc vào một Block khác, tuy nhiên không thể chèn vào chính bản
thân nó đượ c. Đối tượ ng tr ả về của phương thức InsertBlock là một “Block Reference”.
Cú pháp Set BlockReferenceObj = Thisdrawing.SPACE .InsertBlock (InsertPoint, _ BlockName, Xscale, Yscale, Zscale, RotationAngle)
Basic VBA for AutoCad
Page 117
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số BlockReferenceObj
SPACE
InsertPoint
BlockName
Kiểu acadBlockReference – Đối tượ ng tr ả về của phương thức InsertBlock Không gian chứa đối tượ ng BlockReference (ModelSpace, PaperSpace hoặc Block) Kiểu Variant hoặc mảng 3 phần tử kiểu Double – chứa tọa độ
điểm chèn BlockReference Kiểu String – Tên Block cần chèn hoặc tên đầy đủ bao gồm
đườ ng dẫn chứa bản vẽ đượ c chèn.
Xscale
Kiểu Double – Hệ số Scale theo phương X
Yscale
Kiểu Double – Hệ số Scale theo phương Y
Zscale
Kiểu Double – Hệ số Scale theo phương Z
RotationAngle
Giải thích
Kiểu Double – Góc xoay khi chèn BlockReference (đơn vị: Radian)
Ví dụ Ví dụ này sẽ t ạo một “Block Definition” có tên “Ex_6” chứa đối tượng Circle.Sau đó sẽ
chèn “Block Definition” này vào ModelSpace, điểm chèn do ngườ i dùng nhậ p vào.
Basic VBA for AutoCad
Page 118
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
Trong ví dụ này sẽ yêu cầu ngườ i dùng nhập đườ ng dẫn chứa bản vẽ cần chèn vào (bao gồm cả phần mở r ộng “.dwg”).Đồng thờ i các thông số như InsertPoint,Xscal, Yscale, Zscale, RotationAngle cũng do ngườ i dùng nhậ p vào.
Basic VBA for AutoCad
Page 119
Designing Team-Engineering Department
Đinh Văn Tráng
11.6. Phá vỡ một Block – Phương thứ c Explode Với đối tượ ng “Block Reference” chúng ta sử dụng phương thức Explode để phá vỡ
chúng.Đối tượ ng tr ả về của phương thức này là mộ t mảng (kiểu Variant) chứa các đối tượ ng đã cấu thành nên nó.
Cú pháp VarArray = BlockReferenceObj.Explode
Basic VBA for AutoCad
Page 120
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số VarArray BlockReferenceObj
Giải thích Kiểu Variant – Mảng chứa các đối tượ ng của BlockReferenceObj bị phá vỡ . Kiểu acadBlockReference – Đối tượ ng Block sẽ bị phá vỡ
Chú ý Phương thức Explode thực chất t ạo ra một bản sao của đối tượ ng gốc, sau đó thực hiện việc phá vỡ Block trên đối tượng này.Đối tượ ng gốc vẫn còn giữ nguyên.Nếu không muốn giữ
đối tượ ng này chúng ta có thể xóa nó ra khỏi bản vẽ bằng phương thức Delete.
Ví dụ Ví dụ này sẽ yêu cầu ngườ i dùng chọn một Block trên màn hình bản vẽ và một điểm để di chuyển k ết qu ả của phương thức Explode.
Basic VBA for AutoCad
Page 121
Đinh Văn Tráng
Designing Team-Engineering Department
11.7. Block chứ a thuộc tính – Attributes Thuộc tính của Block là các chuỗi Text đi kèm với nó để miêu tả Block.Mỗi thuộc tính gồm có Tag - Tên gọi của thuộc tính , Value – Giá tr ị của thuộc tính, Prompt – Dòng thông báo khi
ngườ i dùng nhậ p giá tr ị cho thuộc tính.Một Block có thể có nhiều thuộc tính.
11.7.1. Tạo thuộc tính cho Block –Phương thứ c AddAttribute
Cú pháp Set AttributeObject = SPACE. AddAttribute (Height, Mode, Prompt, _ InsertionPoint, Tag, Value)
Giải thích Tham số
Giải thích
AttributeObject Kiểu acadAttribute – Đối tượ ng thuộc tính SPACE Height Mode
Prompt
InsertionPoint
Tag Value
Nơi chứa đối tượ ng thuộc tính (ModelSpace, PaperSpace hoặc Block) Kiểu Double – Chiều cao chữ của thuộc tính Kiểu Long - Thông số điều khiển thuộc tính khi đượ c chèn vào trong bản vẽ. Kiểu String – Chuỗ i thông báo khi Block Attribute đượ c chèn vào bản vẽ. Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ của thuộc
tính khi đượ c chèn vào bản vẽ hay Block. Kiểu String – Tên của thuộc tính, có thể chứa bất k ỳ ký t ự nào
nhưng không chứa khoảng tr ắng. Kiểu String – Giá tr ị mặc định cho thuộc tính
Basic VBA for AutoCad
Page 122
Đinh Văn Tráng
Designing Team-Engineering Department
Giá trị của tham số Mode Tham số
Giá trị
acAttributeModeNormal
0
acAttributeModeInvisible
1
acAttributeModeConstant
2
acAttributeModeVerify
4
Giải thích Giá tr ị mặc định, vớ i giá tr ị này không một giá tr ị nào còn lại của tham số Mode đượ c gán. Giá tr ị thuộc tính sẽ không đượ c hiện lên khi
Block đượ c chèn vào. Giá tr ị của thuộc tính sẽ không thể Edit khi
đượ c chèn vào bản vẽ Khi Block đượ c chèn vào thì giá tr ị của thuộc tính đượ c nhậ p tại dòng nhắc. Block đượ c chèn vào vớ i giá tr ị mặc định của
acAttributeModePreset
8
thuộc tính, ngườ i dùng chỉ có thể Edit đượ c giá tr ị đó sau khi Block đượ c chèn vào bản vẽ.
Ví dụ Ví dụ này sẽ tạo một Block Attribute, trong đó các thuộ c tính mô t ả các giá tr ị của tham số Mode.
Basic VBA for AutoCad
Page 123
Designing Team-Engineering Department
Basic VBA for AutoCad
Đinh Văn Tráng
Page 124
Đinh Văn Tráng
Designing Team-Engineering Department
11.7.2. Thao tác vớ i thuộc tính – Phương thứ c GetAttributes Phương thức GetAttributes của một “Block Reference” được dùng để lấy các giá tr ị thuộc tính có trong một “Block Reference”.Đối tượ ng tr ả về của phương thức này là một mảng chứa các thuộc tính của Block (Riêng vớ i tham số Mode khác acAttributeModeConstant thì giá tr ị thuộc tính không lấy đuợ c).
Để xác định xem một “Block Reference” có chứa thuộc tính hay không chúng ta sử dụng thuộc tính HasAttributes có trong đối tượ ng “Block Reference”.Nếu k ết qu ả là TRUE thì Block có thuộc tính, nếu là FALSE thì Block không chứa thuộc tính.
Cú pháp VarAttributes = BlockReferenceObj.GetAttributes
Giải thích Tham số VarAttributes BlockReferenceObj
Basic VBA for AutoCad
Giải thích Kiểu Variant – Mảng chứa các thuộc tính của “Block Reference”
Đối tượ ng “Block Reference”
Page 125
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
Ví dụ này sẽ yêu cầu ngườ i dùng chọn một đối tượ ng trên màn hình bản vẽ, kiểm tra xem
đó có phải là Block thu ộc tính hay không nếu đúng sẽ hiển thị tên và giá tr ị của các thuộc tính cho ngườ i dùng.
Ví dụ
Trong ví dụ này sẽ thay đổ i các giá tr ị của thuộc tính trong “Block Reference” có tên “TestAttribute” (Sử dụng ví dụ trong phương thức AddAttribute để tạo Block này)
Basic VBA for AutoCad
Page 126
Designing Team-Engineering Department
Đinh Văn Tráng
11.8. Làm việc vớ i bản vẽ tham khảo ngoài – External References Bản vẽ tham khảo ngoài có r ất nhiều ứng dụng đặc biệt khi làm việc theo nhóm.
11.8.1. Gắn một tham chiếu ngoài vào bản vẽ – Phương thứ c AddExternalReference
Cú pháp Set ExternalReferenceObject = Thisdrawing.SPACE.AttachExternalReference _ (FileName, BlockName, InsertionPoint, Xscale, Yscale, Zscale, _ RotationAngle, Overlay)
Basic VBA for AutoCad
Page 127
Đinh Văn Tráng
Designing Team-Engineering Department
Giải thích Tham số ExternalReferenceObject SPACE FileName
BlockName
InsertionPoint
Giải thích Kiểu AcadExternalReference – Biến chứa đối tượ ng tr ả về của
phương thức AttachExternalReference ModelSpace hoặc PaperSpace Kiểu String – Đườ ng dẫn tớ i bản vẽ tham khảo ngoài (bao gồm cả phần mở r ộng “dwg”) Kiểu String – Tên đặt cho bản vẽ tham khảo ngoài khi đượ c chèn vào trong bản vẽ Kiểu Variant – Mảng 3 phần tử kiểu Double chứa tọa độ điểm chèn của bản vẽ tham khảo ngoài
Xscale
Kiểu Double – Hệ số Scale theo phương X
Yscale
Kiểu Double – Hệ số Scale theo phương Y
Zscale
Kiểu Double – Hệ số Scale theo phương Z
RotationAngle
Kiểu Double – Góc quay của bản vẽ tham khảo ngoài khi chèn vào bản vẽ (Đơn vị : Radians) Kiểu Boolean – Điều khiển bản vẽ tham khảo ngoài khi đượ c gán vào bản vẽ.
Overlay
TRUE : Bản vẽ tham khảo ngoài sẽ không đượ c hi ển thị
khi bản vẽ “đượ c gán tham khảo” này tr ở thành bản vẽ tham khảo của bản vẽ khác.
FALSE : Bản vẽ tham khảo ngoài sẽ đượ c hiển thị khi bản
vẽ “đượ c gán tham khảo” này tr ở thành bản vẽ tham khảo của bản vẽ khác.
Basic VBA for AutoCad
Page 128
Designing Team-Engineering Department
Ví dụ
Ví dụ
Basic VBA for AutoCad
Đinh Văn Tráng
Page 129
Designing Team-Engineering Department
Đinh Văn Tráng
11.8.2. Gỡ bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thứ c Detach Chúng ta có thể gỡ bỏ tham chiếu ngoài bằng phương thức Detach.Khi gỡ bỏ tham chiếu ngoài tất cả các đối tượ ng ràng buộc vớ i tham chiếu ngoài như LineTypes, TextStyles, DimStyles, Layers… cũng sẽ bị gỡ bỏ.
Ví dụ
11.8.3. Tải lại tham chiếu ngoài – Phương thứ c Reload Nếu bản vẽ tham chiếu ngoài có sự thay đổi và việc cậ p nhật lại những thay đổi đó trong bản vẽ “đượ c gán tham khảo” là một sự cần thiết.Để cậ p nhật lại những thay đổ i này chúng ta sử dụng phương thức Reload. Nếu bản vẽ tham khảo ngoài bị loại bỏ (Bằng phương thức UnLoad) thì có thể đượ c tải lại bất k ỳ lúc nào bằng phương thức Reload.
Basic VBA for AutoCad
Page 130
Designing Team-Engineering Department
Đinh Văn Tráng
Ví dụ
11.8.4. Loại bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thứ c Unload Sử dụng phương thức Unload để loại bỏ một tham khảo ngoài ra khỏ i bản vẽ.Khi loại bỏ một tham chiếu ngoài thì tốc độ làm việc của AutoCad sẽ được tăng cườ ng do không phải
đọc và hiển thị các thông tin hình học hay các ký hiệu không cần thiết.Các đối tượ ng hình học và các thông tin liên quan đế n tham khảo ngoài sẽ không đượ c thể hiện trên bản vẽ hiện tại cho đến khi tham khảo ngoài đượ c tải lại.
Chú ý : Cần phân biệt sự khác nhau giữa phương thức Detach và Unload
Phương thứ c Unload : Chỉ loại bỏ t ạm thờ i tham chiếu ngoài ra khỏ i bản vẽ và chúng ta có thể tải lại tham chiếu ngoài này bất cứ khi nào bằng phương thức Reload.
Phương thứ c Detach : Sẽ loại bỏ tham hoàn toàn tham chiếu ngoài ra khỏ i bản vẽ và chỉ có thể sử dụng phương thức AddExternalReference để gắn lại tham chiếu ngoài.
Basic VBA for AutoCad
Page 131
Designing Team-Engineering Department
Đinh Văn Tráng
11.8.5. Ràng buộc tham chiếu ngoài – Phương thứ c Bind Khi sử dụng phương thức Bind sẽ chuyển tham chiếu ngoài tr ở thành một “Block Refrerence” của bản vẽ.Lúc này bản vẽ “đượ c gán tham khảo” sẽ không đượ c cậ p nhật nếu bản vẽ tham chiếu bị thay đổi.Quá trình này sẽ liên k ết toàn bộ cơ sở dữ liệu trong bản vẽ tham khảo (bao gồm cả bảng ký hiệu) vớ i bản vẽ hiện hành.Bảng ký hiệu là các đối tượ ng phi hình học, ví dụ như khố i, kiểu kích thướ c, lớ p, kiểu chữ...
Phương thức Bind chỉ có một tham số là PrefixName. Nếu tham số này đượ c gán giá tr ị TRUE thì tên trong bảng ký hiệu của bản vẽ tham chiếu ngoài sẽ đượ c thêm tiền tố$x$ trong bản vẽ hiện tại, trong đó x : là sốnguyên bất k ỳ
đượ c t ự động tăng để tránh ghi đè lên định ngh ĩa khối đã có. Nếu tham số này nhận giá tr ị FALSE thì tên trong bảng ký hiệu sẽ đượ c ghép chung vào bản vẽ hiện tại mà không có tiền tố. Nếu có các tên trùng nhau thì AutoCAD sẽ sửdụng ký hiệu vừa
được định ngh ĩa trong bản vẽ.
Ví dụ
Basic VBA for AutoCad
Page 132