248
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 đó.
acRed 1 Màu đỏ.
acYellow 2 Màu và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
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
' 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ộctínhLineType–Kiểuđườngcủađốitượ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):
acLnWtByLwDefault Mặc định acLnWt030 0.3 acLnWt100 1.0
acLnWt000 0.0 acLnWt035 0.35 acLnWt106 1.06
acLnWt005 0.05 acLnWt040 0.4 acLnWt120 1.2
acLnWt009 0.09 acLnWt050 0.5 acLnWt140 1.4
acLnWt013 0.13 acLnWt053 0.53 acLnWt158 1.58
acLnWt015 0.15 acLnWt060 0.6 acLnWt200 2.0
acLnWt018 0.18 acLnWt070 0.7 acLnWt211 2.11
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
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
A
A
U
U
T
T
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êmmộtđỉnhvàođườngđatuyến
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
Đọchoặcthayđổitoạđộđỉnhcủađườngđatuyế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"