228
End Sub
Tạovănbảnnhiềudòng(MText)
Đối với các đoạn văn bản dài và phức tạp, nên sử dụng đối tượng văn bản nhiều dòng – MText.
Văn bản nhiều dòng được bố trí nằm trọn trong một bề rộng nhất định nhưng lại có thể mở rộng
vô hạn theo chiều đứng. Ngoài ra, đối tượng MText còn có thể được đị
nh dạng chi tiết đến từng
từ hoặc từng ký tự.
Mặc dù có nhiều dòng nhưng chúng thuộc về một đối tượng duy nhất. Đối tượng này có thể di
chuyển, xoay, xóa, sao chép, lấy đối xứng, co giãn hoặc thay đổi tỷ lệ.
Để tạo đối tượng MText, sử dụng phương thức AddMText. Cú pháp của phương thức này như
sau:
Set RetVal = object.AddMText(InsertionPoint, Width, Text)
Tham số Giải thích
InsertionPoint Kiểu Variant (thực chất là mảng 3 phần tử kiểu Double) chứa toạ độ điểm bắt đầu
chèn văn bản.
Width Kiểu Double, xác định chiều rộng của đoạn văn bản được hiển thị. Giá trị của tham
số này phải là số dương. Nếu nhập vào giá trị ≤0, chương trình sẽ báo lỗi.
TextString Kiểu String, là chuỗi sẽ được hiển thị trên bản vẽ.
RetVal Đối tượng kiểu MText, tham chiếu đến đối tượng văn bản nhiều dòng vừa mới được
tạo.
Thay vì sử dụng tham số Height như phương thức AddText, phương thức AddMText sử dụng
tham số Width vì đối tượng MText có thể được hiển thị trên nhiều dòng.
Đoạn mã sau sẽ minh hoạ cách thức sử dụng phương thức AddMText:
Sub VD_AddMtext()
Dim MTextObj As AcadMText
Dim corner(0 To 2) As Double
Dim width As Double
Dim text As String
corner(0) = 0: corner(1) = 10: corner(2) = 0
width = 5
text = "Day la chuoi van ban cua doi tuong MText"
' Tạo đối tượng MText
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
ZoomAll
End Sub
5.3. Làm việc với đối tượng SelectionSet
Đối tượng SelectionSet thực chất là một tập đối tượng dùng để chứa các đối tượng được chọn
trong bản vẽ (đối tượng hình học), tuy nhiên, để tránh nhầm lẫn, ta gọi nó là một đối tượng.
Mỗi đối tượng SelectionSet đều có nhiều phương thức khác nhau dùng để thêm các đối tượng
hình học vào trong nó. Thông thường, khi cần hiệu chỉnh chỉ với một đối tượng hình học duy
nhất, ta chỉ
cần sử dụng phương thức GetEntity của đối tượng Document.Utility (xem chi tiết
cách sử dụng phương thức này trong mục Error! Reference source not found. trang Error!
Bookmark not defined.) để lựa chọn đối tượng hình học cần hiệu chỉnh trên màn hình của
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
A
A
U
U
T
T
O
O
C
C
A
A
D
D
229
AutoCAD, nhưng để hiệu chỉnh một lúc nhiều đối tượng thì việc sử dụng đối tượng
SelectionSet là thích hợp nhất.
Mỗi bản vẽ AutoCAD đều có một tập đối tượng tên là SelectionSets chứa tất cả 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 khác nhau
bằng cách sử dụng phương thức
Add có trong tập đối tượng SelectionSets. Một đặc điểm quan
trọng của đối tượng SelectionSet chính là tính chất tạm thời của nó, sau khi đối tượng
SelectionSet được tạo ra và người dùng đóng bản vẽ lại (có lưu những thay đổi) thì khi mở lại
bản vẽ, tất cả các đối tượng SelectionSet đều đã bị xoá đi và chỉ còn lại tập đối tượng
SelectionSets rỗng.
CHÚ Ý Tập đối tượng SelectionSets chứa các đối tượng SelectionSet trong bản vẽ. Các
đối tượng SelectionSet sẽ bị xoá khi đóng bản vẽ. Vì vậy, lúc mới mở hoặc tạo bản vẽ, tập
đối tượng SelectionSets luôn là tập rỗng.
Nhìn chung, quá trình làm việc với đối tượng SelectionSet cần phải trải qua các bước sau:
1. Khai báo đối tượng SelectionSet,
2. Khởi tạo đối tượng SelectionSet với lệnh Set của VB,
3. Thêm các đối tượng cần xử lý vào SelectionSet,
4. Thực hiện thao tác cần thiết trên các đối tượng trong SelectionSet.
5.3.1. Khai báo và khởi tạo đối tượng SelectionSet
Việc tạo đối tượng SelectionSet được thực hiện dễ dàng thông qua phương thức
Add có trong
tập đối tượng
SelectionSets.
Set RetVal = object.Add(Name)
Tham số Giải thích
Object Là tập đối tượng SelectionSets
Name Là chuỗi ký tự xác định tên của SelectionSet sẽ được tạo.
RetVal Đối tượng SelectionSet tượng vừa mới được tạo ra.
Đoạn mã lệnh sau sẽ minh hoạ cách thức tạo đối tượng SelectionSet:
Sub VD_TaoSelectionSet()
Dim sset As AcadSelectionSet ‘Khai báo biến
Set sset = ThisDrawing.SelectionSets.Add("MySSet") ‘Tạo SelectionSet
End Sub
Tuy nhiên, trong quá trình thao tác trên AutoCAD, khi sử dụng đối tượng SelectionSet, người
dùng rất hay gặp lỗi với thông báo: đối tượng SelectionSet đã tồn tại. Chính vì vậy, đế tránh lỗi
này, nên sử dụng đoạn mã sau khi thực hiện tạo mới đối tượng SelectionSet:
1: Sub VD_GetXData()
2: Dim sset As AcadSelectionSet
3: On Error Resume Next
4: Set sset = ThisDrawing.SelectionSets("MySelectionSet")
5: If Err <> 0 Then
6: Err.Clear
7: Set sset = ThisDrawing.SelectionSets.Add("MySelectionSet")
230
8: Else
9: sset.Clear
10: End If
11: End Sub
Dòng mã lệnh số 3 sẽ tắt thông báo lỗi. dòng mã lệnh số 4 sẽ thực hiện gán biến sset cho đối
tượng SelectionSet có tên là MySelectionSet. Nếu đối tượng này chưa có thì đối tượng Err sẽ
khác không (<>0) và ta sẽ phải khởi tạo đối tượng SelectionSet này bằng phương thức Add ở
dòng mã lệnh số 7, còn ngược lại, khi đối tượng SelectionSet có tên là MySelectionSet đã có
trong tập đối tượng SelectionSets, để sử dụng nó, ta cần xóa bỏ nội dung mà nó đang chứa bên
trong bằng dòng mã lệnh số 9.
5.3.2. Thêm đối tượng hình học vào một SelectionSet
Để thêm đối tượng hình học vào SelectionSet, người dùng có thể sử dụng các phương thức có
sẵn trong đối tượng SelectionSet như
AddItems hoặc họ phương thức SelectXXX, bao gồm:
Select, SelectAtPoint, SelectOnScreen, SelectByPolygon. Phần dưới đây sẽ lần lượt
giới thiệu về các phương thức trên.
PhươngthứcAddItems
Phương thức này dùng để thêm từng đối tượng vào trong SelectionSet. Cú pháp của phương
thức này như sau:
object.AddItems Items
Tham số Giải thích
Object Là đối tượng SelectionSet.
Items Kiểu Variant, là mảng chứa các đối tượng sẽ được thêm vào SelectionSet
Đoạn mã sau sẽ tạo một đối tượng SelectionSet có tên là “MySelectionSet”, sau đó tạo các đối
tượng đường đa tuyến, đường thẳng, đường tròn và thêm các đối tượng này vào trong đối tượng
SelectionSet.
Sub VD_AddItems()
Dim objs(0 To 2) As AcadEntity ‘Mảng chứa các đối tượng mới được
tạo
' Create the new selection set
Dim ssetObj As AcadSelectionSet
On Error Resume Next
Set ssetObj = ThisDrawing.SelectionSets("MySelectionSet")
If Err <> 0 Then
Err.Clear
Set ssetObj = ThisDrawing.SelectionSets.Add("MySelectionSet")
Else
ssetObj.Clear
End If
' Tạo đường đa tuyến trong không gian mô hình
Dim plineObj As AcadLWPolyline
Dim points(0 To 5) As Double
points(0) = 3: points(1) = 7
points(2) = 9: points(3) = 2
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
A
A
U
U
T
T
O
O
C
C
A
A
D
D
231
points(4) = 3: points(5) = 5
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
plineObj.Closed = True
Set objs(0) = plineObj ‘Thêm vào mảng các đối tượng
' Tạo đường thẳng trong không gian mô hình
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
Set objs(1) = lineObj ‘Thêm vào mảng các đối tượng
' Tạo đường tròn trong không gian mô hình
Dim circObj As AcadCircle
Dim centerPt(0 To 2) As Double
Dim radius As Double
centerPt(0) = 20: centerPt(1) = 30: centerPt(2) = 0
radius = 3
Set circObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)
Set objs(2) = circObj ‘Thêm vào mảng các đối tượng
ZoomAll
' Thêm các đối tượng có trong mảng objs vào đối tượng SelectionSet
ssetObj.AddItems objs
ThisDrawing.Regen acAllViewports
End Sub
PhươngthứcSelect
Phương thức
Select là phương thức cơ bản trong đối tượng SelectionSet. Với phương thức
thức này, người dùng sẽ có nhiều lựa chọn khác nhau khi chọn đối tượng tuỳ thuộc vào các
tham số của phương thức. Cú pháp của phương thức này như sau:
object.Select Mode[, Point1][, Point2][, FilterType][, FilterData]
Tham số Giải thích
Object Là đối tượng SelectionSet
Mode Tham số xác định chế độ chọn đối tượng.
Point1 Tham số tùy chọn, kiểu Variant (mảng 3 phần tử kiểu Double) chứa toạ độ điểm thứ
nhất của cửa sổ lựa chọn, sử dụng kết hợp với Point2
Point2 Tham số tùy chọn, kiểu Variant (mảng 3 phần tử kiểu Double) chứa toạ độ điểm thứ
hai của cửa sổ lựa chọn, sử dụng kết hợp với Point1
FilterType,
FilterData
Tham số tuỳ chọn, xác định bộ lọc đối tượng (Chi tiết tham khảo phần “
Định nghĩa
bộ lọc đối tượng cho SelectionSet
” trang 236).
Giá trị của 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. Giá trị của tham số này có thể là một trong những giá trị sau:
Hằng số Giá trị Ý nghĩa
232
acSelectionSetWindow 0 Chọn tất cả các đối tượng nằm “trong” hình chữ nhật giới hạn
bởi hai điểm Point1 và Point2
acSelectionSetCrossing 1 Chọn tất cả các đối tượng nằm “trong” hoặc có giao với hình
chữ nhật giới hạn bởi hai điểm Point1 và Point2
acSelectionSetPrevious 3 Chọn các đối tượng đã chọn gần nhất. Bỏ qua hai tham số
Point1 và Point2.
acSelectionSetLast 4 Chọn đối tượng cuối cùng được tạo ra. Bỏ qua hai tham số
Point1 và Point2.
acSelectionSetAll 5 Chọn tất cả các đối tượng đang có trong bản vẽ. Bỏ qua hai
tham số Point1 và Point2.
Ví dụ sau sẽ minh hoạ cách sử dụng phương thức Select với tham số Mode=
acSelectionSetCrossing:
Sub VD_Select()
' Tạo đối tượng SelectionSet
Dim ssetObj As AcadSelectionSet
On Error Resume Next
Set ssetObj = ThisDrawing.SelectionSets("MySelectionSet")
If Err <> 0 Then
Err.Clear
Set ssetObj = ThisDrawing.SelectionSets.Add("MySelectionSet")
Else
ssetObj.Clear
End If
' Thêm tất cả các đối tượng nằm trong và giao với hình chữ nhật có
' toạ độ (28,17,0) và (-3.3, -3.6,0) vào trong đối tượng
SelectionSet
Dim mode As Integer
Dim corner1(0 To 2) As Double
Dim corner2(0 To 2) As Double
mode = acSelectionSetCrossing
corner1(0) = 28: corner1(1) = 17: corner1(2) = 0
corner2(0) = -3.3: corner2(1) = -3.6: corner2(2) = 0
ssetObj.Select mode, corner1, corner2
End Sub
PhươngthứcSelectAtPoint
Phương thức này sẽ chọn các đối tượng đi qua một điểm cho trước để thêm vào SelectionSet.
Cú pháp của phương thức này như sau:
object.SelectAtPoint Point [, FilterType] [, FilterData]
Tham số Giải thích
Object Là đối tượng SelectionSet
Point Kiểu Variant (mảng 3 phần tử kiểu Double), chứa toạ độ điểm dùng để chọn đối
tượng.
FilterType,
FilterData
Tham số tuỳ chọn, xác định bộ lọc đối tượng (Chi tiết tham khảo phần “
Định nghĩa
bộ lọc đối tượng cho SelectionSet
” trang 236).