Tải bản đầy đủ (.pdf) (5 trang)

Giáo trình hướng dẫn thiết kế bản vẽ với việc lập tham số phần 7 ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (726.98 KB, 5 trang )

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



233

Ví dụ sau thêm tất cả các đối tượng đi qua điểm (6.8 , 9.4 , 0) vào đối tượng SelectionSet có tên
là “MySelectionSet”:
Sub VD_SelectAtPoint()
' 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 qua điểm (6.8,9.4,0)
' vào đối tượng SelectionSet
Dim point(0 To 2) As Double
point(0) = 6.8: point(1) = 9.4: point(2) = 0
ssetObj.SelectAtPoint point
End Sub
PhươngthứcSelectByPolygon
Phương thức này thực hiện chọn các đối tượng để thêm vào SelectionSet dựa trên mối tương

quan với đường đa tuyến do người lập trình xác định trước. Cú pháp của phương thức này như
sau:
object.SelectByPolygon Mode, PointsList[, 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.
PointsList Tham số tùy chọn, kiểu Variant (mảng kiểu Double) chứa toạ độ 3 chiều của các đỉnh
của đường đa tuyến.
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
SelectByPolygon. 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
acSelectionSetFence 2 Chọn các đối tượng có giao cắt với đường bao đa
tuyến có tọa độ các đỉnh xác định bởi PointsList.
acSelectionSetWindowPolygon 6 Chọn các đối tượng nằm hoàn toàn bên trong miền đa
giác có tọa độ các đỉnh xác định bởi PointsList.
acSelectionSetCrossingPolygon 7 Chọn các đối tượng nằm hoàn toàn hoặc một phần
bên trong miền đa giác có tọa độ các đỉnh xác định bởi
PointsList. AutoCAD sẽ tự động vẽ đa giác từ các tọa
độ này theo nguyên tắc các cạnh của đa giác không
giao nhau.


234
Minh hoạ dưới đây sẽ làm rõ ý nghĩa các giá trị của tham số Mode. Các đường liền là các đối
tượng trên bản vẽ của AutoCAD, còn các đường nét đứt là đường đa tuyến nối các đỉnh được
cho bởi tham số

PointList.

Hình V-10: Minh hoạ các chế độ chọn đối tượng của phương thức SelectByPolygon.
Kết quả của phương thức SelectByPolygon là rất khác nhau tuỳ thuộc vào giá trị của tham số
Mode. Nếu tham số Mode có giá trị là:
Ø
Ø


acSelectionSetFence: đối tượng được chọn là hình ellipese.
Ø
Ø


acSelectionSetWindowPolygon: đối tượng được chọn là hình chữ nhật và hình tròn.
Ø
Ø


acSelectionSetCrossingPolygon: đối tượng được chọn là tất cả các hình trên.
Đoạn mã sau sẽ minh hoạ cách thức sử dụng phương thức
SelectByPolygon
Sub VD_SelectByPolygon()
' 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

' Xác định các đỉnh của đường đa tuyến
Dim pointsArray(0 To 11) As Double
pointsArray(0) = 28.2: pointsArray(1) = 17.2: pointsArray(2) = 0
pointsArray(3) = -5: pointsArray(4) = 13: pointsArray(5) = 0
pointsArray(6) = -3.3: pointsArray(7) = -3.6: pointsArray(8) = 0
pointsArray(9) = 28: pointsArray(10) = -3: pointsArray(11) = 0
' Xác định chế độ chọn đối tượng
Dim mode As Integer
mode = acSelectionSetFence
' Chọn đối tượng
ssetObj.SelectByPolygon mode, pointsArray
End Sub
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ẽ, cách thao tác trên màn hình AutoCAD này
tương tự như khi sử dụng các lệnh thông thường khác của AutoCAD, mà có yêu cầu lựa chọn
đối tượng (ví dụ như lệnh Copy). Cú pháp của phương thức này như sau:
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



235


object.SelectOnScreen [FilterType] [, FilterData]
Tham số Giải thích
Object Là đối tượng SelectionSet
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).
Đoạn mã sau sẽ minh hoạ cách thức sử dụng phương thức SelectOnScreen:
Sub VD_SelectOnScreen()
' 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

' Hiển thị thêm dòng nhắc tại dòng lệnh
ThisDrawing.Utility.Prompt vbCrLf & "Chon doi tuong tren man hinh:"
' Chọn đối tượng trên màn hình
ssetObj.SelectOnScreen
End Sub
5.3.3. Thao tác với các đối tượng trong SelectionSet
Như phần trước đã trình bày, thực chất đối tượng SelectionSet là một tập đối tượng dùng để
nhóm các đối tượng hình học lại với nhau nhằm mục đích hiệu chỉnh các đối tượng hình học đó
dễ dàng hơn. Do bản thân là một tập đối tượng nên cách thức truy cập đến tất cả các đối tượng

bên trong SelectionSet tốt nhất là sử d
ụng cấu trúc lặp “For each … next”.
Đoạn mã lệnh sau sẽ yêu cầu người sử dụng thực hiện chọn đối tượng trên màn hình bản vẽ,
sau đó tiến hành đổi màu các đối tượng được chọn thành màu xanh.
Sub VD_SelectOnScreen()
' 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

' Chọn đối tượng trên màn hình
ThisDrawing.Utility.Prompt vbCrLf & "Chon doi tuong can doi mau:"
ssetObj.SelectOnScreen

' Thực hiện các thao tác với đối tượng được chọn
Dim ent As AcadEntity
For Each ent In ssetObj


236

' Đoạn chương trình xử lý các đối tượng sẽ nằm ở đây
' Trong ví dụ này, các đối tượng sẽ được đổi màu thành màu xanh
ent.Color = acBlue

ent.Update
Next ent
End Sub
5.3.4. Định nghĩa bộ lọc đối tượng cho SelectionSet
Trong tất cả các phương thức chọn đối tượng dạng
SelectXXX đều có hai tham số tuỳ chọn
FilterType và FilterData, là tham số được sử dụng để lọc các đối tượng được chọn theo
một tiêu chí nào đó. Các tiêu chí thường được sử dụng bao gồm: loại đối tượng (đường thẳng,
đường tròn ), màu sắc, kiểu đường nét, lớp Khi sử dụng bộ lọc đối tượng, chỉ có những đối
tượng thoả mãn các tiêu chí trong bộ lọc mới được chọn để thêm vào đối tượng SelectionSet.
Để thiết lập b
ộ lọc đối tượng, hai tham số FilterType và FilterData cần phải được sử dụng
song hành:
Ø
Ø


FilterType: là tham số kiểu Variant, thực chất là một mảng một chiều kiểu Integer chứa
mã DXF xác định kiểu lọc đối tượng.
Ø
Ø


FilterData: là tham số kiểu Variant, thực chất là một mảng một chiều kiểu Variant
chứa giá trị của kiểu lọc tương ứng trong tham số FilterType. Do có mối quan hệ 1-1 như
vậy nên số phần tử của mảng FilterData phải bằng với số phần tử của mảng FilterType.
Tuỳ theo nhu cầu mà người lập trình phải chọn cho mình một tiêu chí lọc đối tượng thích hợp.
Dưới đây sẽ li
ệt kê danh sách các mã DXF tương ứng với một số kiểu lọc đối tượng thường sử
dụng:

Mã DXF Ý nghĩa
-4 Các toán tử điều kiện (sử dụng cho bộ lọc theo nhiều điều kiện kết hợp)
0 Chuỗi thể hiện kiểu đối tượng, chẳng hạn như: Line, Polyline, LWPolyline, Spline,
Circle, Arc, Text, Mtext,
1 Chuỗi văn bản của các đối tượng như Text và MText (giá trị thuộc tính Content của
các đối tượng này).
2 Chuỗi tương ứng với thuộc tính Name, chẳng hạn như thuộc tính Tag của đối tượng
Attribute, thuộc tính name của đối tượng Block,…
6 Chuỗi tương ứng với kiểu đường (Linetype) của các đối tượng.
7 Chuỗi tương ứng với kiểu văn bản (Textstyle) của các đối tượng.
8 Chuỗi tương ứng với tên lớp (Layer) của các đối tượng.
10 Toạ độ điểm chủ yếu của đối tượng, chẳng hạn như: điểm đầu của đối tượng Line,
điểm chèn của đối tượng Text, tâm của đối tượng Circle,…
62 Số nguyên xác định màu của đối tượng: 0-ByBlock, 256-ByLayer, 1-Red, 2-Yellow,…
các giá trị màu này tương ứng với bảng màu trong AutoCAD.
Tất cả các mã DXF có thể tham khảo trong tài liệu trợ giúp của AutoCAD “DXF Reference”,
mục DXF Format Ö Group Codes in Numerical Order.
CHÚ Ý Khi truyền giá trị cho tham số FilterType và FilterData, số phần tử của mảng
FilterType và mảng FilterData phải bằng nhau. Mỗi phần tử của mảng FilterType sẽ tương
ứng với một phần tử của mảng FilterData.
Lọctheomộtđiềukiện
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



237


Khi thực hiện lọc theo một điều kiện, số phần tử của các tham số FilterType và FilterData
là 1. Tuy nhiên, người lập trình không được gán giá trị trực tiếp mà vẫn phải thực hiện khai báo
các tham số này là mảng nhưng chỉ có một phần tử. Ví dụ sau sẽ minh hoạ rõ hơn cách thức tạo
bộ lọc đối tượng với chỉ một điều kiện:
Sub VD_Filter()
' Tạo đối tượng SelectionSet
Dim ssetObj As AcadSelectionSet
On Error Resume Next
Set ssetObj = ThisDrawing.SelectionSets("SSET")
ssetObj.Delete
Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")

' Tạo bộ lọc đối tượng:
' Tiêu chí chọn là: Kiểu đổi tượng
' Giá trị của tiêu chí là: “Circle”
' nghĩa là chỉ chọn đối tượng là đường tròn.
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0: dataValue(0) = "Circle"

ssetObj.SelectOnScreen gpCode, dataValue
MsgBox "So doi tuong duoc chon: " & ssetObj.Count
End Sub
Lọctheonhiềuđiềukiệnkếthợp
Khi cần lọc đối tượng theo nhiều điều kiện kết hợp, cần phải thêm vào các toán tử điều kiện
trong bộ lọc. Để kết hợp các điều kiện với nhau, các điều kiện phải được đặt giữa các toán tử
điều kiện, mã DXF chung củ
a các toán tử điều kiện là -4. Dưới đây là danh sách các toán tử
điều kiện được sử dụng trong bộ lọc đối tượng:
Toán

tử
Giá trị
bắt đầu
Giá trị kết
thúc
Số lượng
điều kiện
Ý nghĩa
AND “<AND” “AND>”
≥ 1
Đối tượng nào thoả mãn tất cả các điều kiện
sẽ được chọn.
OR “<OR” “OR>”
≥ 1
Đối tượng nào thoả mãn một trong các điều
kiện sẽ được chọn.
XOR “<XOR” “XOR>” 2 Đối tượng nào thoả mãn một điều kiện và
không thoả mãn điều kiện còn lại sẽ được
chọn.
NOT “<NOT” “NOT>” 1 Đối tượng nào không thoả mãn điều kiện sẽ
được chọn.
Đoạn mã sau sẽ thực hiện chọn đối tượng có sử dụng bộ lọc theo nhiều điền kiện kết hợp:
những đối tượng là đường thẳng hoặc đường tròn và không nằm trên lớp “Layer1” sẽ được
chọn.
Sub VD_Filter()
' Tạo đối tượng SelectionSet
Dim ssetObj As AcadSelectionSet
On Error Resume Next
Set ssetObj = ThisDrawing.SelectionSets("SSET")
ssetObj.Delete

Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")

×