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

Giáo trình phân tích khả năng ứng dụng các phương pháp lập trình ajax trên autocad p3 docx

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 (772.52 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



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

Point Tham số tuỳ chọn, kiểu Variant, là mảng số thực có 3 phần tử thể hiện toạ độ của
điểm cơ sở để tính khoảng cách. Nếu tham số này không có thì người dùng phải
chọn hai điểm để xác định khoảng cách.
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.
RetVal Là biến kiểu số thực chứa giá trị trả về của phương thức GetDistance.
Phương thức GetDistance cho phép người dùng nhập một số âm tại dòng nhắc và sẽ trả về một
số âm tương ứng. Nhưng khi người dùng chọn điểm trên màn hình bản vẽ, phương thức luôn
trả về giá trị tuyệt đối của khoảng cách giữa hai điểm.
Nếu khoảng cách được nhập vào bằng cách chọn điểm trên màn hình, AutoCAD sẽ tạo ra một
đường thẳng để giúp ngườ
i dùng quan sát và đường thẳng này sẽ mất đi sau khi người dùng
nhập xong khoảng cách. Nếu không nhập giá trị cho tham số Point, người dùng sẽ phải xác
định hai điểm trên màn hình để xác định khoảng cách. Nếu gán giá trị cho tham số Point, người
dùng chỉ cần chọn thêm một điểm trên màn hình, giá trị khoảng cách sẽ được tính từ điểm
truyền cho tham số Point và điểm cho người dùng chọn.
Theo mặc định của AutoCAD, các đi
ểm nhập vào có tọa độ không gian gồm đầy đủ 3 thành
phần (x, y, z) nên khoảng cách giữa hai điểm là khoảng cách trong không gian. Người dùng có
thể yêu cầu AutoCAD chỉ tính khoảng cách phẳng bằng cách thực hiện phương thức
InitializeUserInput trước khi thực hiện phương thức GetDistance với tham số OptionBits tương
ứng để AutoCAD bỏ qua thành phần tọa độ z.
Nếu người dùng không nhập giá trị hoặc điểm nào cả mà nhấn ENTER thì AutoCAD sẽ phát
sinh l
ỗi “User input keyword.”
Ví dụ dưới đây minh họa cách sử dụng phương thức GetDistance:


214
Sub Example_GetDistance()

' 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

bản vẽ. Nếu người dùng chọn một đối tượng, đối tượng đó sẽ được trả về thông qua tham số
Object và toạ độ của điểm mà người dùng chọn sẽ được trả về trong tham số PickedPoint. Nếu
điểm mà người dùng kích chuột không phải đối tượng thì phương thức này sẽ làm phát sinh lỗi.
Với phương thức này, người dùng còn có thể chọn nhanh đối tượng được vẽ sau cùng nhất
bằng cách nhập ký tự “L” hoặc “l” tại dòng lệnh AutoCAD. Khi dùng lệnh “L” này, nếu đối
tượng được vẽ cuối cùng không nhìn thấy trên màn hình bản vẽ (đối tượng có thuộc tính
Visible=FALSE) hoặc đối tượng đó đang nằm trong một lớp đã bị đóng băng (FrozenLayer) thì
đối tượng cuối cùng nhất được vẽ nằ
m trên một lớp bình thường sẽ được chọn. Tuy nhiên, cách
ứng xử này có thể khác nhau trong từng phiên bản của AutoCAD, chẳng hạn như đối với
AutoCAD 2007, với lệnh “L”, phương thức GetEntity có thể trả về một đối tượng không được
nhìn thấy trên màn hình bản vẽ.
CHÚ Ý Với phương thức GetEntity, tại một thời điểm, người dùng chỉ có thể chọn được
một đối tượng.
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



215

Ví dụ dưới đây minh họa cách sử dụng phương thức GetEntity. Đối tượng được lựa chọn sẽ
được tạm thời chuyển sang màu đỏ để người dùng dễ nhận thấy trước khi chuyển sang lựa chọn
đối tượng khác (trước khi thực hiện ví dụ cần tạo sẵn một số đối tượng hình học trong bản vẽ
hiện hành của AutoCAD). Ví dụ này còn thực hiện bẫ
y lỗi phát sinh khi lựa chọn đối tượng.
Sub VD_GetEntity()


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.

Một điểm cần lưu ý khi thao tác với các biến hệ thống của AutoCAD là phạm vi tác dụng c
ủa
biến hệ thống. Có thể chia thành hai loại sau:
Ø
Ø

Loại biến có tác dụng với toàn bộ ứng dụng AutoCAD: với loại biến này, khi người thay
đổi giá trị của biến, tất cả các bản vẽ đang được mở sẽ chịu tác động do sự thay đổi của
biến này. Các biến kiểu này được lưu trong bản thân chương trình AutoCAD.
Ø
Ø

Loại biến có tác dụng vớ
i một bản vẽ AutoCAD: với loại biến này, khi người dùng thay
đổi giá trị của biến, chỉ có bản vẽ hiện hành (bản vẽ nơi thực hiện thao tác thay đổi giá trị
của biến) là chịu tác động do sự thay đổi của biến. Các biến hệ thống kiểu này được lưu
ngay bên trong tệp bản vẽ.
PhươngthứcGetVariable
Phương thức này dùng để lấy về
giá trị hiện hành của một biến hệ thống trong AutoCAD. Cú
pháp của phương thức này như sau:
RetVal = object.GetVariable(Name)


216
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.
object Đối tượng kiểu Document, nơi thực hiện phương thức GetVariable.

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ươngthứcSetVariable
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

ử dụng phương thức SetVariable:
Sub Example_SetVariable()
' Ví dụ sau gán giá trị cho nhiều biến hệ thống khác nhau,
' mỗi biến có một kiểu dữ liệu khác nhau.
Dim TenBien As String
Dim GiaTri As Variant

' Gán giá trị biến MIRRTEXT (kiểu số nguyên) bằng 1.
' Chú ý rằng cần phải gán giá trị thích hợp với
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



217

' kiểu dữ liệu của biến hệ thống.
Dim intData As Integer
TenBien = "MIRRTEXT"
intData = 0
GiaTri = intData ' Kiểu Integer
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 LTSCALE (kiểu số thực) bằng 1.5

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ácbiếnhệthốngthườngdù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

ANGBASE Thiết lập góc cơ sở, là góc hợp với phương X. Mặc định giá trị này bằng 0.
AUPREC Thiết lập số chữ số sau dấu phẩy của đơn vị đo góc.
DIMTIH Xác định vị trí chữ ghi kích thước. Nếu bằng 0: song song với đường ghi kích
thước; bằng 1: nằm ngang. Mặc định giá trị này bằng 1.
FILLETRAD Xác định bán kính vuốt cong mặc định khi dùng với lệnh Fillet
INSBASE Toạ độ điểm chèn mặc định.
CELTSCALE Thiết lập tỷ lệ kiểu đường cho các đối tượng mới tạo
LTSCALE Thiết lập tỷ lệ kiểu đường cho tất cả các đối tượng

×