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

Giáo trình hướng dẫn lập trình các tham số của bảng vẽ phần 5 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 (678.57 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



223

' Vẽ đối tượng
If ThisDrawing.ActiveSpace = acModelSpace Then
Set objEnt = ThisDrawing.ModelSpace.AddLine(diemDau, diemCuoi)
Else
Set objEnt = ThisDrawing.PaperSpace.AddLine(diemDau, diemCuoi)
End If
' Cập nhật đối tượng để hiển thị trên màn hình bản vẽ
objEnt.Update
End Sub
TạođốitượngLWPolyline,Polyline
LWPolyline là đối tượng dùng để biểu diễn đường đa tuyến “phẳng” và do đó chỉ dùng để thể
hiện các đối tượng trong không gian 2D. Điều này giúp cho dữ liệu của đối tượng
LWPolyline
gọn nhẹ hơn và các thao tác đồ hoạ sẽ thực hiện nhanh hơn. Đó cũng chính là lý do tại sao đối
tượng này là có tên là “LightWeight - Nhẹ”.
Để tạo đối tượng
LWPolyline, sử dụng phương thức AddLightweightPolyline. Cú pháp
phương thức này như sau:
Set RetVal = object.AddLightweightPolyline(VerticesList)
Tham số Giải thích
VerticesList Tham số đầu vào kiểu Variant hoặc mảng kiểu Double, chứa toạ độ các đỉnh của
đa tuyến.

RetVal Đối tượng kiểu LWPolyline, tham chiếu đến đa tuyến 2D vừa mới được tạo.
Khi sử dụng phương thức AddLightweightPolyline, tham số VerticesList sẽ chứa toạ độ
các đỉnh của đa tuyến 2D. Toạ độ của mỗi đỉnh được biểu diễn bằng hai thành phần x và y, nên
các thành phần của mảng được bố trí theo dạng (
p1x,p1y,p2x,p2y,…). Vì vậy số phần tử của
tham số
VerticesList luôn là bội số của 2 và đương nhiên, tối thiểu cần phải có 4 phần tử
(hai điểm) để có thể tạo được đối tượng
LWPolyline.
CHÚ Ý Mỗi đỉnh của LWPolyline chỉ có hai toạ độ x và y, không có thông số về cao độ.
Thay vào đó, người lập trình có thể gán cao độ chung cho toàn bộ đường đa tuyến phẳng
này bằng cách thay giá trị cao độ thích hợp cho thuộc tính Elevation.
Đoạn mã sau sẽ tạo một đường đa tuyến phẳng gồm có 5 đỉnh trong không gian mô hình:
Sub Example_AddLightWeightPolyline()
Dim plineObj As AcadLWPolyline
Dim points(0 To 9) As Double

' Xác định các đỉnh của đa tuyến phẳng
points(0) = 1: points(1) = 1 ' Toạ độ đỉnh 1
points(2) = 1: points(3) = 2 ' Toạ độ đỉnh 2
points(4) = 2: points(5) = 3 ' Toạ độ đỉnh 3
points(6) = 3: points(7) = 2 ' Toạ độ đỉnh 4
points(8) = 4: points(9) = 4 ' Toạ độ đỉnh 5

' Tạo đối tượng LWPolyline trong không gian mô hình
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
ZoomAll
End Sub



224
Ngoài ra, với VBA trong AutoCAD, người dùng cũng có thể tạo đường đa tuyến phẳng với
phương thức
AddPolyline. Cú pháp của phương thức này tương tự như của phương thức
AddLightweightPolyline:
Set RetVal = object.AddPolyline(VerticesList)
Tuy nhiên, đối tượng trả về RetVal là đối tượng kiểu Polyline. Tham số VerticesList
cũng chứa toạ độ các đỉnh của đa tuyến, nhưng mỗi đỉnh sẽ có 3 thành phần, hai thành phần
đầu là toạ độ (
x,y) thành phần thứ 3 sẽ không được sử dụng.
Khi muốn tạo đường đa tuyến phẳng, nên sử dụng phương thức
AddLightweightPolyline,
vì đối tượng
LWPolyline đã tối ưu hoá cho quá trình hiển thị và lưu trữ trong bản vẽ.
Tạođốitượng3DPolyline
Phương thức
Add3DPoly sẽ tạo một đường đa tuyến 3D dựa trên toạ độ các đỉnh được truyền
vào. Cú pháp của phương thức này như sau:
Set RetVal = object.Add3DPoly(VerticesList)
Tham số Giải thích
VerticesList Tham số đầu vào kiểu Variant hoặc mảng kiểu Double, chứa toạ độ các đỉnh của
đa tuyến.
RetVal Đối tượng kiểu 3DPolyline, tham chiếu đến đa tuyến 3D vừa mới được tạo.
Khi sử dụng phương thức Add3DPoly, tham số VerticesList sẽ chứa toạ độ các đỉnh của đa
tuyến. Toạ độ của mỗi đỉnh được biểu diễn bằng ba thành phần x, y và z nên các thành phần
của mảng được bố trí theo dạng (
p1x,p1y,p1z,p2x,p2y,p2z…). Vì vậy số phần tử của tham
số
VerticesList luôn là bội số của 3 và đương nhiên, tối thiểu cần phải có 6 phần tử (hai
điểm) để có thể tạo được đối tượng

3DPolyline.
Đoạn mã sau sẽ tạo một đường đa tuyến có 5 đỉnh trong không gian mô hình:
Sub VD_AddPolyline()

Dim plineObj As Acad3DPolyline
Dim points(0 To 14) As Double

' Xác định cách đỉnh của đa tuyến 3D
points(0) = 1: points(1) = 1: points(2) = 0 ' Toạ độ điểm 1
points(3) = 1: points(4) = 2: points(5) = 10 ' Toạ độ điểm 2
points(6) = 2: points(7) = 3: points(8) = 30 ' Toạ độ điểm 3
points(9) = 3: points(10) = 2: points(11) = 0 ' Toạ độ điểm 4
points(12) = 4: points(13) = 4: points(14) = 8 ' Toạ độ điểm 5

' Tạo đường đa tuyến 3D trong không gian mô hình
Set plineObj = ThisDrawing.ModelSpace.Add3DPoly (points)
ZoomAll
End Sub
5.2.5. Tạo đối tượng dạng đường cong
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



225

VBA trong AutoCAD cho phép tạo nhiều loại đối tượng dạng đường cong khác nhau, trong đó
có hai loại đối tượng rất phổ biến là Circle – đường tròn và Arc – cung tròn. Tất cả các phương

thức này đều tạo đối tượng trong mặt phẳng XY.
TạođốitượngCircle
Để tạo đối tượng Circle, sử dụng phương thức AddCircle. Phương thức này sẽ tạo một đường
tròn dựa trên thông số tâm và bán kính của đườ
ng tròn:
Set RetVal = object.AddCircle(Center, Radius)
Tham số Giải thích
Center Tham số đầu vào kiểu Variant hoặc mảng 3 phần tử kiểu Double, chứa toạ độ tâm
của đường tròn.
Radius Tham số đầu vào kiểu Double, là bán kính của đường tròn sẽ được tạo.
RetVal Đối tượng kiểu Circle, tham chiếu đến đường tròn vừa mới được tạo.
Đoạn mã sau tạo một đường tròn bán kính bằng 5 và toạ độ tâm là (1,2,0) trong không gian
mô hình:
Sub Example_AddCircle()
Dim circleObj As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius As Double

' Xác định tâm và bán kính của đường tròn
centerPoint(0) = 1#: centerPoint(1) = 2#: centerPoint(2) = 0#
radius = 5#

' Tạo đối tượng Circle trong không gian mô hình
Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint,
radius)
ZoomAll
End Sub
Hoặc tâm và bán kính của đường tròn có thể được nhập vào:
Sub VD_AddCircle()
Dim varCenter As Variant

Dim dblRadius As Double
Dim objEnt As AcadCircle

On Error Resume Next
' Lấy các thông số do người dùng nhập vào
With ThisDrawing.Utility
varCenter = .GetPoint(, vbCr & "Chọn tâm đường tròn: ")
dblRadius = .GetDistance(varCenter, vbCr & "Nhập bán kính: ")
End With

' Tạo đối tượng Circle trong không gian mô hình
Set objEnt = ThisDrawing.ModelSpace.AddCircle(varCenter, dblRadius)
objEnt.Update
End Sub
TạođốitượngArc


226
Để tạo đối tượng Arc, sử dụng phương thức AddArc. Phương thức này sẽ tạo ra một cung tròn
dựa trên 4 thông số khác nhau để xác định vị trí và kích thước của cung tròn:
Set RetVal = object.AddArc(Center, Radius, StartAngle, EndAngle)
Tham số Giải thích
Center Tham số đầu vào kiểu Variant hoặc mảng 3 phần tử kiểu Double, chứa toạ độ tâm
của cung tròn.
Radius Tham số đầu vào kiểu Double, là bán kính của đường tròn sẽ được tạo.
StartAngle,
EndAngle
Tham số đầu vào kiểu Double, xác định góc bắt đầu và góc kết thúc của cung tròn
(tính bằng Radian). Phương thức AddArc sẽ vẽ cung tròn theo chiều ngược chiều
kim đồng hồ từ góc StartAngle đến góc EndAngle.

RetVal Đối tượng kiểu Arc, tham chiếu đến cung tròn vừa mới được tạo.

Hình V-9: Minh hoạ tham số StartAngle, EndAngle của phương thức AddArc.
CHÚ Ý Hầu hết các tham số có liên quan đến góc trong VBA đều có đơn vị là Radian.
Đoạn mã sau tạo một cung tròn có tâm (0,0,0) và bán kính là 5 từ góc 45 đến 315 độ. Do giá trị
tham số góc tính bằng radian nên cần phải chuyển đổi từ độ sang radian:
Sub Example_AddArc()
Dim arcObj As AcadArc
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngleInDegree As Double
Dim endAngleInDegree As Double

' Xác định các thuộc tính của cung tròn
centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
radius = 5 ‘Bán kính
startAngleInDegree = 45 ‘Góc bắt đầu
endAngleInDegree = 315 ‘Góc kết thúc

' Chuyển các góc từ độ sang Radian
Dim startAngleInRadian As Double
Dim endAngleInRadian As Double
startAngleInRadian = startAngleInDegree * 3.141592 / 180
endAngleInRadian = endAngleInDegree * 3.141592 / 180

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




227

' Tạo đối tượng Arc trong không gian mô hình
Set arcObj = ThisDrawing.ModelSpace.AddArc _
(centerPoint, radius, startAngleInRadian,
endAngleInRadian)
ZoomAll
End Sub
5.2.6. Tạo đối tượng văn bản
Văn bản là đối tượng dùng để truyền đạt những thông tin quan trọng trong bản vẽ. Ngoài ra,
văn bản còn dùng để đặt tiêu đề cho khối, tạo nhãn cho từng thành phần của bản vẽ, thể hiện
quy định chung hoặc để làm ghi chú trong bản vẽ.
AutoCAD cung cấp nhiều cách khác nhau để tạo văn bản, với những đoạn văn bản ng
ắn và đơn
giản, có thể sử dụng văn bản đơn (Text), với những đoạn văn bản dài hơn, có chứa định dạng
riêng bên trong thì có thể sử dụng văn bản nhiều dòng (MText). Mặc dù tất cả các đoạn văn bản
mới được tạo đều sử dụng kiểu chữ hiện hành, với những thiết lập mặc định về phông chữ và
định dạng nhưng cũng có nhiều cách khác nhau để tùy biến phần hiển thị của đoạn băn bản.
Trong phạm vi của tài liệu này, chỉ giới thiệu về cách thức tạo đối tượng văn bản.
Tạovănbảnđơn(Text)
Văn bản đơn là một đối tượng kiểu văn bản (Text) mà nội dung của nó chỉ bao gồm mộ
t dòng
văn bản. Trong AutoCAD, để tạo đối tượng văn bản đơn trên bản vẽ, người dùng có thể sử
dụng lệnh Text hoặc DText. Từ VBA, để tạo đối tượng văn bản đơn, sử dụng phương thức
AddText của tập đối tượng ModelSpace, cú pháp của phương thức này như sau:
Set RetVal = object.AddText(TextString, InsertionPoint, Height)
Tham số Giải thích
TextString Kiểu String, là chuỗi sẽ được hiển thị trên bản vẽ.

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.
Height Kiểu Double, xác định chiều cao 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.
RetVal Đối tượng kiểu Text, tham chiếu đến đối tượng văn bản đơn vừa mới được tạo.
Ví dụ sau sẽ tạo văn bản một dòng “Hello, World.” trong không gian mô hình tại vị trí (2,2,0).
Sub VD_AddText()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double

' Tạo đối tượng Text
textString = "Hello, World."
insertionPoint(0) = 2
insertionPoint(1) = 2
insertionPoint(2) = 0
height = 0.5
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
textObj.Update

×