Professional Documents
Culture Documents
PHỤ LỤC
Chương 1 ................................................................................................................................... 8
Chương 2 ..................................................................................................................................11
HỆ THỒNG ĐỐI TƯỢNG VÀ MỘT SỐ THAO TÁC CƠ BẢN TRONG AUTOCAD ......11
2.2.5. Thoát khỏi chương trình AutoCad – Phương thức Quit .................................. 16
Chương 3 ..................................................................................................................................17
CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO BIẾN TRONG VBA ...................................17
Chương 4 ..................................................................................................................................24
Chương 5 ..................................................................................................................................41
5.1.3. Cấu trúc : “If … Then… Else … End If” mở rộng .......................................... 43
Chương 6 ..................................................................................................................................50
Chương 7 ..................................................................................................................................61
7.2. Khai báo và phương thức tạo đối tượng hình học ................................................... 63
7.2.3. Tạo đối tượng đường tròn – Phương thức AddCircle ...................................... 65
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
8.3.4. Thao tác với các đối tượng trong SelectionSet .................................................. 76
Chương 9 ..................................................................................................................................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.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
10.2. Khai báo và khởi tạo một Layer mới – Phương thức Add..................................101
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.2. Đông cứng, Làm tan Layer – Thuộc tính Freeze, UnFreeze ........................110
11.5. Chèn Block vào trong bản vẽ - Phương thức InsertBlock ..................................117
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. Làm việc với bản vẽ tham khảo ngoài – External References ............................127
11.8.1. Gắn một tham chiếu ngoài vào bản vẽ – Phương thức
AddExternalReference ...................................................................................................127
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
Chương 1
1.1.1. Dự án nhúng
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 đó.
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ả.
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à đủ.
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)
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.
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.
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.
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
Chương 2
- 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ó.
Đối tượng Application là đối tượng gốc trong mô hình đối tượng của AutoCad.Từ đối tượng
này ta có thể truy xuất đến bất kỳ đối tượng nào.Đối tượng Application là một đối tượ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.
Phương thức Update – Phương thức này cập nhật lại các thay đổi.
Trong Autocad các đôi tượng được tổ chức hầu hết trong Tập đối tượng.Ví dụ các đối
tượng hình học được quản lý trong tập đối tượng ModelSpace, PaperSpace hoặc
Blocks.Các đối tượng phi hình học như Layer, DimStyle, TextStyle được quản lý trong các
tập đối tượng tương ứng như Layers, DimStyles, TextStyles…
Tập đối tượng Documents là một tập chứa tất cả các bản vẽ đang được mở.
Phương thức Close : Sử dụng để đóng tất cả các bản vẽ đang được mở
Đối tượng Document, thực chất là một bản vẽ AutoCAD đang được mở thuộc tập đối
tượng Documents.Đối tượng này chứa tất cả các đối tượng hình học và phi hình học trong
một bản vẽ AutoCAD cũng như chứa hầu hết các đối tượng khác của bản vẽ như
Viewports.
Trong VBA, đối tượng Thisdrawing tham chiếu đến bản vẽ hiện hành, những tác động lên
đối tượng này cũng chính là tác động lên bản vẽ hiện hành.
Để mở một bản vẽ ta sử dụng phương thức OPEN có trong tập đối tượng Documents.Bản
vẽ vừa được mở sẽ trở thành bản vẽ hiện hành.
Cú pháp
Documents.Open (FileName)
Giải thích
Kiểu String – Chuỗi thể hiện tên bản vẽ bao (gồm đường dẫn và
FileName
phần mở rộng)
Ví dụ
Để tạo bản vẽ mới sử dụng phương thức ADD có trong tập đối tượng Documents.
Cú pháp
Giải thích
Ví dụ
Để 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
SAVEAS (lưu với tên khác) có trong đối tượng Thisdrawing.
Cú pháp
Thisdrawing.Save
Giải thích
Ví dụ
Để đóng bản vẽ sử dụng phương thức CLOSE có trong đối tượng Thisdrawing.
Cú pháp
Giải thích
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ụ
Để 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
Chương 3
- 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 (‘)
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 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 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.
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.
Cú pháp
Ví dụ
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
Ví dụ
Cú pháp
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.
Ví dụ
Ví dụ
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
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
Ví dụ
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
Ví dụ
- 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
Để 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
Ví dụ
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ự 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.
Ví dụ
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
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
Ví dụ
Chương 4
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
\
Fix(99.8) 99
Lấy phần nguyên trước dấu phẩy Fix(-99.2) -99
Fix(x)
Fix(-99.8) -99
Int(99.2) 99
Lấy phần nguyên đã được làm
Int(-99.2) -100
Int(x)
tròn
Int(-99.8) -100
Sqr(x) 2
Hàm căn bậc 2 của x Sqr(4)
(x>=0)
Hàm lượng giác ngược của
Atn(1) π/4
Atn(x)
Tan(x)
Sin(π/6) ½
Sin(x)
Các hàm lượng giác
Cos(π/3) ½
Cos(x)
của x tính bằng đơn vị Radian
Tan(π/4) 1
Tan(x)
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
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
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
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.
True True
True
False False
True
Null Null
True
True False
False
False False
False
Null False
False
True Null
Null
False False
Null
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<B) And (B < C) -----> Mycheck = False
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.
True True
True
False True
True
Null True
True
True True
False
False False
False
Null False
False
True True
Null
False Null
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<B) Or (B < C) -----> Mycheck = False
Toán tử NOT sẽ trả về giá trị phủ định của một toán hạng
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.
Cú pháp
Công dụng
Ví dụ
Cú pháp
Công dụng
Ví dụ
Cú pháp
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ụ
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ụ
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
Ví dụ
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ụ
Cú pháp
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.
Giải thích
Hằng số Ý nghĩa
Kiểu so sánh này phân biệt chữ hoa và chữ thường (Đây là giá trị
vbBinaryCompare
mặc định của hàm InStr)
vbTextCompare Kiểu so sánh này không phân biệt chữ hoa và chữ thường
Ví dụ
strB = “a”
Cú pháp
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
Compare Tham số tùy chọn - Hằng số so sánh (Xem bảng hằng số so sánh)
Hằng số Ý nghĩa
Kiểu so sánh này phân biệt chữ hoa và chữ thường (Đây là giá trị
vbBinaryCompare
mặc định của hàm InStrRev)
vbTextCompare Kiểu so sánh này không phân biệt chữ hoa và chữ thường
Ví dụ
strB = “a”
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ụ
Cú pháp
Space(Number as Integer)
Công dụng
Ví dụ
strC = strA & Space(3) & strB ----> strC “VBA for AutoCad Example Space function”
Cú pháp
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.
Giải thích
Tham số Ý Nghĩa
Tham số tùy chọn, kiểu String – Chuỗi chứa giá trị làm giới hạn
Delimiter
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 chuỗi cho phép trả về.Mặc định giá trị
Limit
này sẽ trả về tất cả các chuỗi được chia.
Ví dụ
Cú pháp
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
Find Kiểu String – Chuỗi chứa giá trị được thay thế
Tham số tùy chọn, kiểu Integer/Long – Vị trí bắt đầu thay thế, chuỗi
Start
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
Count
định là tất cả các vị trí sẽ được thay thế.
Ví dụ
Cú pháp
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ố Ý Nghĩa
String_1,
Kiểu String – Hai chuỗi dùng để so sánh với nhau
String_2
String_1 =String_2 0
Ví dụ
Chương 5
Chú ý : Trong trường hợp một dòng lệnh thì không có từ khóa “End If ”
<Khối lệnh>
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 <Khối Lệnh>, nếu
SAI sẽ thoát khỏi cấu trúc lệnh.
Ví dụ
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
<Khối lệnh_1>
Else
<Khối lệnh_2>
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 <Khối Lệnh_1>,
nếu SAI chương trình sẽ thực hiện <Khối Lệnh_2>.
Ví dụ
Khi có nhiều <Biểu thức điều kiện> thì chúng ta sử dụng cấu trúc điều kiện mở rộng sau.
Cấu trúc
<Khối Lệnh_1>
<Khối Lệnh_2>
………………..
<Khối Lệnh_n-1>
Else
<Khối Lệnh_n>
End If
Nếu <Biểu thức điều kiện_1> là ĐÚNG thì chương trình sẽ thực hiện <Khối Lệnh_1>,
nếu SAI chương trình sẽ kiểm tra lần lượt điều kiện từ <Biểu thức điều kiện_2> đến
<Biểu thức điều kiện_n-1>, nếu điều kiện nào ĐÚNG sẽ thực hiện <Khối Lệnh> tương
ứng đó và thoát khỏi cấu trúc này.Nếu không có <Biểu thức điều kiện> nào thỏa mãn
chương trình sẽ thực hiện <Khối Lệnh_n> sau từ khóa Else và thoát khỏi cấu trúc này.
Ví dụ
Cấu trúc
Diễn giải
<Biểu thức kiểm tra> 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 <Biểu thức kiểm tra> thì <Khối Lệnh_i> đó được thực
hiện.Nếu tất cả các điều kiện không thỏa mãn thì <Khối Lệnh_Else> sẽ được thực
hiện.Từ khóa Case Else có thể có hoặc có thể không
Ví dụ
Đâ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 <Biến đếm>=<Giá trị đầu> To <Giá trị cuối> [Step <Bước nhảy>]
<Khối Lệnh>
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.
- <Biến đếm>, <Giá trị đầu>, <Giá trị cuối> phải là các giá trị số.
- Giá trị của <Bước nhảy> có thể Âm hoặc Dương
Nếu <Bước nhảy> là Dương thì <Giá trị đầu> phải nhỏ hơn hoặc bằng <Giá trị
cuối>.
Nếu <Bước nhảy> là Âm thì <Giá trị đầu> phải lớn hơn hoặc bằng <Giá trị
cuối>.
Nếu không chỉ ra giá trị cụ thể của <Bước nhảy> (Không có từ khóa Step) thì giá
trị mặc định của <Bước nhảy> là 1
- Muốn thoát khỏi vòng lặp ta sử dụng từ khóa Exit For
- Ban đầu gán <Biến đếm> bằng với <Giá trị bắt đầu>
Nếu <Biến đếm> nhỏ hơn hoặc bằng <Giá trị cuối> thì thực hiện <Khối
Lệnh> và tự động cộng thêm một giá trị bằng <Bước nhảy> 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 <Biến đếm> với <Giá
trị cuối>.
Nếu <Biến đếm> lớn hơn <Giá trị cuối> sẽ kết thúc vòng lặp.
Nếu <Biến đếm> lớn hơn hoặc bằng <Giá trị cuối> thì thực hiện <Khối Lệnh>
và tự động cộng thêm vào <biến đếm> một giá trị bằng <Bước nhảy> 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 <Biến đếm>
với <Giá trị cuối>.
Nếu <Biến đếm> nhỏ hơn <Giá trị cuối> sẽ kết thúc vòng lặp.
Đố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 :
<Khối Lệnh>
Next
Một số chú ý :
- For Each, In, Next là các từ khóa mặc định của chương trình.
- <Biến chạy> sẽ nhận giá trị từ phần tử đầu tiên đến phần tử cuối cùng trong <Tập
hợp>.Ứng với mỗi giá trị của biến chạy thì <Khối Lệnh> sẽ được thực hiện một lần.
- Nếu <Tập hợp> là một “Tập các đối tượng” thì kiểu dữ liệu của <Biến chạy> 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 <Tập
hợp> là Mảng thì kiểu dữ liệu của <Biến chạy> chỉ có thể là Variant.
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
Cấu trúc
<Khối Lệnh>
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, <Khối Lệnh>
chỉ được thực hiện khi <Điều kiện> là ĐÚNG.
Ví dụ
Cấu trúc
Do
<Khối Lệnh>
Chú ý
- Với cấu trúc này <Điều kiện> được kiểm tra sau khi <Khối lệnh> được thực hiện, do đó
<Khối lệnh> 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.
Cấu trúc
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à <Khối Lệnh> sẽ
được thực hiện khi <Điều kiện> là SAI.
Ví dụ
Cấu trúc
Do
<Khối Lệnh>
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 <Khối Lệnh>, do đó <Khối Lệnh> 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.
Chương 6
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…
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
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
Giải thích
StrObj Kiểu String - ThôBiến chứa giá trị chuỗi do người dùng nhập vào
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
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ụ
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
Giải thích
Tham số tùy chọn – Điểm tham chiếu đến điểm được nhập vào.Nếu
có tham số Base Point sẽ xuất hiện “sợi dây thun” nối từ điểm Base
Base Point
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ụ
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
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
Tham số tùy chọn, kiểu String– Chuỗi ký tự hiện trên dòng lệnh của
Prompt
AutoCad yêu cầu người dùng nhập dữ liệu vào
Ví dụ
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
Giải thích
Kiểu Double – Biến chứa giá trị khoảng cách do người dùng nhập
DistValue
vào.
Nếu tham số này CÓ thì người dùng có thể nhập khoảng cách
Point
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.
Tham số tùy chọn,kiểu String– Là chuỗi hiện trên dòng lệnh của
Prompt
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.
Ví dụ
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
Giải thích
StrKeyword 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
Prompt
Autocad nhắc người dùng nhập dữ liệu
Ví dụ
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
Giải thích
Kiểu Variant – Mảng 3 phần tử thể hiện tọa độ điểm mà người dùng
PickedPoint
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
Prompt
Autocad nhắc người dùng nhập dữ liệu
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 đó.
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
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 độ
VarPoint
góc của hình chữ nhật
BasePoint 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
Prompt
Autocad nhắc người dùng nhập dữ liệu
Ví dụ
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
Giải thích
Kiểu Integer - Giá trị tham số này bằng tổng các Bit Code tương
Bits
ứng với các chế độ kiểm soát mà ta mong muốn
Keyword Tham số tùy chọn kiểu String chứa danh sách các từ khóa
Một số giá trị Bit Code và chế độ kiểm soát tương ứng thường dùng
Giá trị PHẢI được nhập vào, không chấp nhận giá trị Null (Chỉ
1
nhấn phím Enter mà không nhập giá trị)
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)
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
Chương 7
- Cách tạo mới một số đối tượng chính trong AutoCad như Line, Circle, Arc, Text,
Mtext…
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 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 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 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 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
ActiveSpace có trong đối tượng Thisdrawing để thiết lập sự hiện hành của một không gian.
Ví dụ
Ví dụ
7.2. Khai báo và phương thức tạo đối tượng hình học
Cú pháp
Giải thích
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ụ
Để 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
Giải thích
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
Cú pháp
Giải thích
SPACE 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
CenterPoint
của đường tròn
Radius Kiểu Double – Bán kính của đường tròn nhập vào
Ví dụ
Ví dụ
Cú pháp
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
Radius 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ụ
7.2.5. Tạo đối tượng văn bản đơn - phương thức AddText
Cú pháp
Giải thích
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
Kiểu Variant hoặc mảng 3 phần tử kiểu Double xác định điểm chèn
InsertPoint
chuỗi văn bản.
Height 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ụ
7.2.6. Tạo đối tượng văn bản nhiều dòng-Phương thức AddMtext
Cú pháp
Giải thích
Kiểu Double – Xác định bề rộng của văn bản được hiển thị
Width
Kiểu String – Là chuỗi hiển thị trên bản vẽ
TextString
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.
Chương 8
- 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
Đô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:
- Thực hiện các thao tác cần thiết trên các đối tượng trong SelectionSet
Cú pháp
Giải thích
SelectionSetName Kiểu String – Chuỗi xác định tên SelectionSet được tạo
Ví dụ
- 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ố 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ố 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.
Để 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.
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
Ví dụ
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
Giải thích
Mode 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 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”)
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.
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
Ví dụ
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
Giải thích
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ụ
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 đỏ.
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.
Mã Dxf Ý nghĩa
Kiểu String – Thể hiện loại đối tượng như: Line, PolyLine, LWPolyline,
0
Spline, Circle, Arc, Text, Mtext,Dimension…
Tọa độ chính của một đối tượng như: StartPoint của Line, điểm chèn của Text,
10
CenterPoint của Circle…
Kiểu Integer – Xác định màu của đối tượng: 0=ByBlock, 1=Red,
62
2=Yellow….256=ByLayer.
-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).
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ử.
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 đỏ.
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”.
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 đỏ.
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”
“<And”(”<Or”(Text, Mtext)”Or>),”<Not”(Defpoints)”Not>”)”And>”
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
Kiểu Variant - mảng chứa các đối tượng được thêm vào
ArrayObj
SelectionSet
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.
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
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
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
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.
Chương 9
- Tổng quan về hiệu chỉnh các đối tượng hình học trong VBA
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
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
Giải thích
OriginalObj Đối tượng hình học – đối tượng gốc sẽ được sao chép
CopyObj Đố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ũ)
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ẽ
Cú pháp
Giải thích
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.
Cú pháp
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
MirrorObj
với kiểu của đối tượng gốc
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
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 !)
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
Giải thích
varArrayObj Kiểu Variant – Mảng chứa đối tượng mới được tạo thành
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ụ
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
Giải thích
BasePoint Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ điểm xoay
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”
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
Giải thích
Ví dụ
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
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.
acByBlock 0 ByBlock
acRed 1 Red
acYellow 2 Yellow
acGreen 3 Green
acCyan 4 Cyan
acBlue 5 Blue
acMagenta 6 Magenta
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
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
Ví dụ 11
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
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 :
strLineTypeName Kiểu String - Tên kiểu đường cần gán cho Layer.
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”
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
Object Đối tượng hình học được gán thuộc tính LineWeight
acLineWeight Hằng số thể hiện bề rộng của nét (Xem bảng hằng số acLineWeight)
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ó.
Chương 10
- Khai báo và khởi tạo một Layer mới – Phương thức Add
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
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
Giải thích
LayerObj Kiểu AcadLayer – Đây là biến sẽ chứa Layer được tạo ra.
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.
Ví dụ
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.
Để 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
Giải thích
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.
acByBlock 0 ByBlock
acRed 1 Red
acYellow 2 Yellow
acGreen 3 Green
acCyan 4 Cyan
acBlue 5 Blue
acMagenta 6 Magenta
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
LineTypeName Kiểu String - Tên kiểu đường cần gán cho Layer.
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
LineTypeName Kiểu String - Tên kiểu đường cần gán cho Layer.
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.
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
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.
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.
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.
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ụ
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
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.
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ụ
Chương 11
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.
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 đó
Để 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
Giải thích
BlockObj 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
InsertPoint
Block.
Kiểu String – Tên của Block được tạo (Chú ý tên của Block không
BlockName
đuợc dài quá 31 ký tự và giữa chúng không có khoảng trắng)
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 đó.
Để đổ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
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.
Để xóa một Block chúng ta sử dụng thuộc tính Delete của Block
Cú pháp
BlockObj.Delete
Ví dụ
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ẽ.
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
Giải thích
Kiểu String – Tên Block cần chèn hoặc tên đầy đủ bao gồm
BlockName
đường dẫn chứa bản vẽ được chèn.
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.
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.
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
Giải thích
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.
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.
Cú pháp
Giải thích
Kiểu Long - Thông số điều khiển thuộc tính khi được chèn vào
Mode
trong bản vẽ.
Kiểu String – Chuỗi thông báo khi Block Attribute được chèn vào
Prompt
bản vẽ.
Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ của thuộc
InsertionPoint
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
Tag
nhưng không chứa khoảng trắng.
Value Kiểu String – Giá trị mặc định cho thuộc tính
Giá trị mặc định, với giá trị này không một giá
acAttributeModeNormal 0
trị nào còn lại của tham số Mode được gán.
Khi Block được chèn vào thì giá trị của thuộc
acAttributeModeVerify 4
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.
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
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)
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
RotationAngle, Overlay)
Giải thích
Kiểu String – Đường dẫn tới bản vẽ tham khảo ngoài (bao
FileName
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
BlockName
chèn vào trong bản vẽ
Kiểu Double – Góc quay của bản vẽ tham khảo ngoài khi
RotationAngle
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ẽ.
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
Overlay
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.
Ví dụ
Ví dụ
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ụ
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.
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.
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ố<tên khối>$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
Ví dụ
1. Phát triển AutoCad bằng ActiveX & VBA – Lê Quỳnh Mai (chủ biên)
2. Cơ sở lập trình tự động hóa tính toán, thiết kế với VB & VBA trong môi trường
AutoCad – Nguyễn Hồng Thái (chủ biên)