C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
A
D
D
213 ' Nhập điểm sử dụng điểm tham chiếu
Dim basePnt(0 To 2) As Double
basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
returnPnt = ThisDrawing.Utility.GetPoint(basePnt, "Nhap mot diem: ")
MsgBox "Toa do WCS cua diem: " & returnPnt(0) & ", " & _
returnPnt(1) & ", " & returnPnt(2)
' Vẽ đường thẳng nối từ điểm tham chiếu đến điểm
' cuối cùng nhập vào
Dim lineObj As AcadLine
Set lineObj = ThisDrawing.ModelSpace.AddLine(basePnt,returnPnt)
ZoomAll
End Sub
GetDistance
Phương thức GetDistance được sử dụng để người dùng nhập vào giá trị khoảng cách. Người
dùng có thể nhập một số thực trực tiếp từ dòng lệnh hoặc có thể chọn hai điểm trên màn hình
bản vẽ, AutoCAD sẽ tự động trả về giá trị số thực là khoảng cách giữa hai điểm. Cú pháp của
phương thức GetDistance như sau:
RetVal = Utility.GetDistance([Point][, Prompt])
Tham số Giải thích
' Ví dụ minh họa cách sử dụng phương thức GetDistance.
Dim returnDist As Double
' Nhập và trả về giá trị khoảng cách, có sử dùng dòng nhắc
returnDist = ThisDrawing.Utility.GetDistance(, "Nhap khoang cach: ")
MsgBox "Khoang cach vua nhap la: " & returnDist & vbCrLf & _
"(Nhap gia tri tiep theo co su dung diem co so.)" ' Nhập và trả về giá trị khoảng cách
' Có sử dùng dòng nhắc và điểm cơ sở
Dim basePnt(0 To 2) As Double
basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
returnDist = ThisDrawing.Utility.GetDistance(basePnt, _
"Nhap khoang cach: ")
MsgBox "Khoang cach vua nhap la: " & returnDist
End Sub
GetEntity
Phương thức GetEntity được sử dụng để lấy một đối tượng của AutoCAD bằng cách cho phép
người dùng chọn trực tiếp bằng chuột trên màn hình đồ họa. Cú pháp của phương thức như sau:
Utility.GetEntity Object, PickedPoint[, Prompt]
Tham số Giải thích
Object Tham số trả về đối tượng được người dùng chọn
Pickedpoint Tham số kiểu Variant, trả về mảng số thực có 3 phần tử thể hiện toạ độ của điểm
mà người dùng kích chuột để chọn đối tượng.
Prompt Tham số tuỳ chọn, là chuỗi ký tự sẽ hiện trên dòng lệnh AutoCAD để nhắc người
dùng nhập dữ liệu.
Phương thức GetEntity yêu cầu người dùng chọn đối tượng bằng cách kích chuột trên màn hình
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
Dim returnObj As AcadObject
Dim basePnt As Variant
On Error Resume Next
' Trong ví dụ này, AutoCAD chờ người dùng lựa chọn đối tượng
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Chọn đối tượng:"
If Err <> 0 Then
Err.Clear
MsgBox "Bạn không chọn đối tượng. Tạm biệt."
Exit Sub
Else
returnObj.Color = acRed
returnObj.Update
MsgBox "Kiểu đối tượng là: " & returnObj.EntityName
MsgBox "tại vị trí " & basePnt(0) & "," & basePnt(1)
returnObj.Color = acByLayer
returnObj.Update
End If
End Sub
5.1.6. Thiết lập biến hệ thống
AutoCAD sử dụng các biến hệ thống dùng để điều khiển các hoạt động của chính nó, chẳng
hạn như chế độ bắt điểm, chế độ lưới, điều kiển cách thực hiện của các lệnh,… Phần này sẽ
giới thiệu cách thức đọc và thiết lập các biến hệ thống cho AutoCAD thông qua các phương
th
ức GetVariable và SetVariable cũng như một số biến hệ thống thường dùng trong AutoCAD.
Đối với mỗi phiên bản của AutoCAD, các biến hệ thống có thể khác nhau, vì vậy cần phải
nghiên cứu trong tài liệu đi kèm với phiên bản AutoCAD đang sử dụng để có được các thông
tin cụ thể về các biến hệ thống.
RetVal Là biến kiểu Variant chứa giá trị trả về của biến hệ thống.
Ví dụ sau minh hoạ các sử dụng phương thức này bằng cách thực hiện lấy giá trị của biến hệ
thống MIRRTEXT:
Sub VD_GetVariable()
' Ví dụ sau hiển thị giá trị hiện tại của
' biến hệ thống MIRRTEXT.
Dim strTenBien As String
Dim KetQua As Variant
strTenBien = "MIRRTEXT"
KetQua = ThisDrawing.GetVariable(strTenBien)
MsgBox (strTenBien & " = " & KetQua)
End Sub
PhươngthứcSetVariable
Phương thức này dùng để thiết lập giá trị cho biến hệ thống trong AutoCAD. Cú pháp của
phương thức này như sau:
object.SetVariable Name, Value
Tham số Giải thích
Name Tham số kiểu String xác định tên biến hệ thống cần lấy giá trị (không phân biệt chữ
hoa/chữ thường). Nếu tên biến hệ thống nhập vào không đúng sẽ phát sinh lỗi khi
thực thi chương trình.
Value Tham số kiểu Variant, xác định giá trị cần gán cho biến hệ thống có tên trong tham
số Name ở trên.
object Đối tượng kiểu Document, nơi thực hiện phương thức SetVariable.
Biến hệ thống trong AutoCAD rất đa dạng với nhiều kiểu dữ liệu khác nhau: số thực, số
nguyên, chuỗi,… Chính vì vậy, khi gán giá trị cho biến hệ thống, cần phải chú ý sao cho kiểu
dự liệu của biến hệ thống cần gán và kiểu giá trị của tham số Value phải tương thích nhau, nếu
không sẽ làm phát sinh lỗi khi thực thi chương trình.
Ví dụ sau minh hoạ cách thức gán giá trị cho biến hệ thống s
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
A
Dim dataDouble As Double
TenBien = "LTSCALE"
dataDouble = 1.5
GiaTri = dataDouble ' Kiểu Double
ThisDrawing.SetVariable TenBien, GiaTri
' Kiểm tra giá trị đã gán sử dụng phương thức GetVariable
GiaTri = ThisDrawing.GetVariable(TenBien)
MsgBox (TenBien & " = " & GiaTri)
' Gán giá trị biến INSBASE (kiểu mảng chứa toạ độ) bằng (1.0,1.0,0)
Dim arrayData3D(0 To 2) As Double
TenBien = "INSBASE"
arrayData3D(0) = 1#: arrayData3D(1) = 1#: arrayData3D(2) = 0
GiaTri = arrayData3D ' Kiểu mảng chứa toạ độ
điểm
ThisDrawing.SetVariable TenBien, GiaTri
' Kiểm tra giá trị đã gán sử dụng phương thức GetVariable
GiaTri = ThisDrawing.GetVariable(TenBien)
MsgBox (TenBien & " = " _
& GiaTri(0) & ", " & GiaTri(1) & ", " & GiaTri(2))
End Sub
Cácbiếnhệthốngthườngdùng
Để hiển thị được đầy đủ tất cả các biến hệ thống cũng như giá trị hiện thời của chúng, có thể
thực hiện theo các bước sau:
1. Tại dòng lệnh của AutoCAD, nhập lệnh setvar.
2. Tại dòng nhắc “Enter Variable Name”, nhập dấu ?
3. Tại dòng nhắc “Enter Variable(s) to List”, nhấ
n ENTER
Bảng dưới đây giới thiệu các biến hệ thống thường dùng trong AutoCAD:
Biến hệ thống Giải thích