Giá trị của thuộc tính Color là số nguyên trong phạm vi từ 0 đến 256, 9 trong các số này được định nghĩa trước với các hằng số acColor trong AutoCAD. Dưới đây là danh sách các hằng số này: Hằng số acByBlock acRed acYellow acGreen acCyan acBlue acMagenta acWhite acByLayer
Trang 1248
Giá trị của thuộc tính Color là số nguyên trong phạm vi từ 0 đến 256, 9 trong các số này được định nghĩa trước với các hằng số acColor trong AutoCAD Dưới đây là danh sách các hằng số này:
Hằng số Giá trị Ý nghĩa
acByBlock 0 Màu của đối tượng lấy theo màu của Block chứa đối tượng đó
acGreen 3 Màu xanh lá
acCyan 4 Màu xanh lam
acBlue 5 Màu xanh da trời
acMagenta 6 Màu tím
acWhite 7 Màu trắng hoặc đen tuỳ thuộc vào màu nền
acByLayer 256 Màu của đối tượng lấy theo màu của lớp chứa đối tượng đó
Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi màu đối tượng được chọn thành màu đỏ:
Sub VD_Color()
Dim ent As AcadEntity
Dim P(2) As Double
‘ Chọn đối tượng trên màn hình
On Error Resume Next
ThisDrawing.Utility.GetEntity ent, P, "Chon doi tuong can doi mau: "
If Not (ent Is Nothing) Then
‘ Đổi màu đối tượng
ent.Color = acRed
ent.Update
End If
End Sub
Thuộc tính Layer – Lớp chứa đối tượng
Sử dụng thuộc tính Layer để lấy và thay đổi lớp chứa đối tượng Thông thường, khi một đối tượng hình học mới được tạo ra, đối tượng đó sẽ được đặt trên lớp hiện hành của bản vẽ Khi người dùng thay đổi giá trị của thuộc tính Layer thành tên của một lớp khác, đối tượng đó sẽ được tự động chuyển về nằm trên lớp mới này Nếu người dùng gán cho thuộc tính Layer một tên lớp không có trong bản vẽ thì chương trình sẽ không báo lỗi, và đối tượng vẫn nằm trên lớp
cũ
object.Layer
Tham số Giải thích
Object Là đối tượng hình học
Layer Chuỗi chứa tên của lớp
Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi lớp của đối tượng được chọn thành lớp “Layer1” (người dùng phải tạo trước một lớp có tên là
“Layer1” bằng lệnh của AutoCAD):
Trang 2CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD
249
Sub VD_Layer()
Dim ent As AcadEntity
Dim P(2) As Double
' Chọn đối tượng trên màn hình
On Error Resume Next
ThisDrawing.Utility.GetEntity ent, P, "Chon doi tuong can doi lop: "
If Not (ent Is Nothing) Then
' Chuyển lớp cho đối tượng
ent.Layer = "Layer1"
ent.Update
End If
End Sub
Thuộc tính LineType – Kiểu đường của đối tượng
Để thay đổi kiểu hiển thị của nét vẽ các đối tượng hình học trên màn hình, thiết lập lại thuộc tính Linetype của đối tượng thành một kiểu đường hiện có trong bản vẽ Thông thường, khi một đối tượng vừa mới được tạo ra, đối tượng sẽ được gán kiểu đường bằng kiểu đường hiện hành trong bản vẽ Thuộc tính này cũng có hiệu lực với đối tượng Layer
object.Linetype
Tham số Giải thích
Object Là đối tượng hình học hoặc đối tượng Layer
Linetype Chuỗi chứa tên của kiểu đường của đối tượng Ngoài ra, thuộc tính này cũng có
thể bằng một trong những giá trị đặc biệt sau:
CONTINUOUS: đây là kiểu đường mặc định, được AutoCAD tự động tạo ra BYLAYER: kiểu đường của đối tượng sẽ được lấy bằng kiểu đường đã được gán cho lớp chứa đối tượng
BYBLOCK: kiểu đường của đối tượng sẽ được lấy bằng kiểu đường của block có chứa đối tượng
Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi kiểu đường của đối tượng được chọn thành “DASHED2” (người dùng phải tạo trước kiểu đường có tên là “DASHED2” bằng lệnh của AutoCAD):
Sub VD_LineType()
Dim ent As AcadEntity
Dim P(2) As Double
' Chọn đối tượng trên màn hình
On Error Resume Next
ThisDrawing.Utility.GetEntity ent, P, "Chon DT can doi kieu duong: "
If Not (ent Is Nothing) Then
' Chuyển kiểu đường cho đối tượng
ent.Linetype = "DASHED2"
ent.Update
End If
End Sub
CHÚ Ý có thể phải điều chỉnh giá trị của biến hệ thống LTSCALE thì mới quan sát được các
kiểu đường không phải là nét liền
Trang 3250
Thuộc tính Lineweight – Chiều dày nét in
Thuộc tính Lineweight dùng để thiết lập chiều dày nét in cho các đối tượng hình học và đối tượng Layer
object.Lineweight
Giá trị của thuộc tính này là một hằng số kiểu acLineWeight:
Hằng số Bề dày (mm) Hằng số Bề dày
(mm)
Hằng số Bề dày
(mm) acLnWtByLayer Theo lớp acLnWt020 0.2 acLnWt080 0.8 acLnWtByBlock Theo Block acLnWt025 0.25 acLnWt090 0.9 acLnWtByLwDefault Mặc định acLnWt030 0.3 acLnWt100 1.0
acLnWt013 0.13 acLnWt053 0.53 acLnWt158 1.58
Khi một đối tượng hình học vừa mới được tạo ra, giá trị của thuộc tính này là acLnWtByLayer Nếu không được gán bằng một chiều dày nét in cụ thể, chiều dày nét in sẽ được lấy bằng chiều dày mặc định của AutoCAD, chiều dày này được xác định thông qua biến hệ thống LWDEFAULT (giá trị này có đơn vị là 1/100 của mm)
Đoạn mã lệnh sau sẽ minh hoạ cách thức thao tác với thuộc tính Lineweight:
Sub VD_LineWeight()
Dim circleObj As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius As Double
' Xác định các thông số của đường tròn
centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
radius = 5#
' Tạo đường tròn trong không gian mô hình
Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
ZoomAll
' Hiển thị chiều dày hiện hành của đường tròn
MsgBox "Chieu day hien hanh la: " & circleObj.Lineweight
' Thay đổi chiều dày của đường tròn
circleObj.Lineweight = acLnWt211
circleObj.Update
MsgBox " Chieu day hien hanh la: " & circleObj.Lineweight
End Sub
Ngoài những thuộc tính như đã giới thiệu ở trên, người lập trình có thể sử dụng các thuộc tính sau để hiệu chỉnh đối tượng:
Thuộc tính Đối tượng áp dụng Giải thích
Trang 4CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD
251
Center Arc, Circle Kiểu Variant (mảng 3 phần tử kiểu double) Toạ độ
tâm của đối tượng
Radius Arc, Circle Kiểu Double Bán kính của cung tròn hoặc đường
tròn
Area Arc, Circle, LWPolyline,
Polyline Kiểu Double Diện tích vùng khép kín của đối tượng là thuộc tính đọc-ghi đối với đối tượng Circle, là thuộc
tính chỉ đọc với các đối tượng khác
Length Line Kiểu Double Thuộc tính chỉ đọc xác định chiều dài
của đoạn thẳng
TextString MText, Text Kiểu String Chuỗi văn bản được hiển thị trong đối
tượng văn bản
Alignment Text Hằng số kiểu acAlignment, xác định chế độ canh
hàng theo phương đứng và phương ngang
Rotation DimAligned, DimAngular,
DimDiametric, DimOrdinate, DimRadial, DimRotated, MText, Text
Kiểu Double Xác định góc xoay của đối tượng so với phương ngang, được tính bằng Radian
5.4.3 Hiệu chỉnh đường đa tuyến
Như đã được giới thiệu ở phần trước, đối với đường đa tuyến 2D, có hai loại đối tượng là: LWPolyline và Polyline, cách thức hiệu chỉnh hai đối tượng này là tương tự nhau Tuy nhiên, cần phải chú ý một điểm khác biệt lớn giữa hai đối tượng này: toạ độ tại một đỉnh của đường LWPolyline chỉ có 2 thành phần X và Y, còn toạ độ tại một đỉnh của đường Polyline
có cả 3 thành phần X, Y và Z nhưng thành phần thứ 3 sẽ không được sử dụng Ở đây sẽ tập trung giới thiệu về cách hiệu chỉnh đường đa tuyến dạng LWPolyline
Khi hiệu chỉnh đường đa tuyến, ngoài những cách thức đã được đề cập ở trên, người lập trình thường sử dụng các phương thức và thuộc tính sau:
Thuộc tính Giải thích
Area Double, chỉ đọc Diện tích của vùng khép kín tạo bởi đường đa tuyến
Closed Boolean Bằng TRUE: đường đa tuyến sẽ được khép kín, bằng FALSE:
đường đa tuyến sẽ được mở
ConstantWidth Double Chiều dày của tất cả các đoạn của đường đa tuyến
Elevation Double Cao độ của đường đa tuyến (toạ độ z của đường đa tuyến)
Coordinate(i) Variant (thực chất là mảng 2 hoặc 3 phần tử kiểu Double) Toạ độ của đỉnh
thứ i của đường đa tuyến
Coordinates Variant (mảng kiểu Double) Toạ độ của tất cả các đỉnh của đường đa tuyến
Phương thức Giải thích
SetWidth Thiết lập chiều dày đầu và chiều dày cuối cho đoạn thứ i của đường đa tuyến GetWidth Lấy chiều dày đầu và chiều dày cuối cho đoạn thứ i của đường đa tuyến Dưới đây là một số thao tác hiệu chỉnh đường đa tuyến thường dùng
Thêm một đỉnh vào đường đa tuyến
Để thêm một đỉnh vào đường đa tuyến, có thể sử dụng phương thức AddVertex Cú pháp của phương thức này như sau:
Trang 5252
object.AddVertex Index, Point
Tham số Giải thích
Object Là đối tượng LWPolyline
Index Kiểu Integer Chỉ số của đỉnh cần thêm vào đường đa tuyến Đỉnh đầu tiên của
đường đa tuyến được đánh số là 0 Giá trị Index nhập vào phải lớn hơn 0
Point Kiểu Variant (mảng 2 phần tử kiểu Double) chứa toạ độ của điểm cần thêm vào
đường đa tuyến
Ví dụ sau sẽ minh hoạ cách thức chèn một đỉnh vào đường đa tuyến:
Sub VD_AddVertex()
Dim plineObj As AcadLWPolyline
Dim points(0 To 9) As Double
' Xác định các đỉnh của đường đa tuyến
points(0) = 1: points(1) = 1
points(2) = 1: points(3) = 2
points(4) = 2: points(5) = 2
points(6) = 3: points(7) = 2
points(8) = 4: points(9) = 4
' Tạo đường đa tuyến trong không gian mô hình
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) ZoomAll
MsgBox "Them dinh vao duong da tuyen.", , "Vi du AddVertex"
' Định nghĩa toạ độ đỉnh mới
Dim newVertex(0 To 1) As Double
newVertex(0) = 1.5: newVertex(1) = 1
' Thêm một đỉnh cào đường đa tuyến
plineObj.AddVertex 2, newVertex
plineObj.Update
MsgBox "Da them dinh vao duong da tuyen.", , "Vi du AddVertex"
End Sub
Đọc hoặc thay đổi toạ độ đỉnh của đường đa tuyến
Để đọc hoặc thay đổi toạ độ đỉnh của đường đa tuyến, có thể sử dụng thuộc tính Coordinate(i) có trong đối tượng LWPolyline Khi sử dụng thuộc tính này, cần lưu ý là chỉ
số các đỉnh của đường đa tuyến được đánh số bắt đầu từ 0
Đoạn mã dưới đây sẽ tạo một đường đa tuyến, sau đó thay đổi toạ độ đỉnh thứ 2 của đường đa tuyến và hiển thị toạ độ mới của điểm này trong hộp thông báo
Sub VD_Coordinate()
Dim plineObj As AcadLWPolyline
Dim points(0 To 9) As Double
' Xác định các đỉnh của đường đa tuyến
points(0) = 1: points(1) = 1
points(2) = 1: points(3) = 2
points(4) = 2: points(5) = 2
points(6) = 3: points(7) = 2
points(8) = 4: points(9) = 4
' Tạo đường đa tuyến trong không gian mô hình
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) ZoomAll
MsgBox "Thay doi toa do dinh 2.", , "Vi du Coordinate"