Thêm đối tượng hình học vào một SelectionSet

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 233 - 238)

CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD

3. Tại dòng nhắc “Enter Variable(s) to List”, nhấn ENTER

5.3. Làm việc với đối tượng SelectionSet

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.

Phng thc AddItems

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 Gii thch

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

http://www.ebook.edu.vn points(2) = 9: points(3) = 2

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

Phng thc Select

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 Gii thch

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 233).

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:

Hng s Gi tr ngha

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

Phng thc SelectAtPoint

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 Gii thch

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 233).

http://www.ebook.edu.vn

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

Phng thc 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 Gii thch

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 233).

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:

Hng s Gi tr ngha

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.

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 II-84: 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ứcSelectByPolygonlà rất khác nhau tuỳ thuộc vào giá trị của tham số Mode. Nếu tham sốModecó 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ứcSelectByPolygon 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

Phng thc 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

http://www.ebook.edu.vn

object.SelectOnScreen [FilterType] [, FilterData]

Tham s Gii thch

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 233).

Đ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

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 233 - 238)

Tải bản đầy đủ (PDF)

(434 trang)