Tạo đối tượng dạng đường thẳng

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 224 - 230)

CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD

3. Tại dòng nhắc “Enter Variable(s) to List”, nhấn ENTER

5.2. Tạo mới đối tượng hình học

5.2.4. Tạo đối tượng dạng đường thẳng

Đường thẳng là đối tượng hình học cơ bản hay được dùng nhất trong AutoCAD. Nhìn chung, ta có thể vẽ các đường thẳng bằng cách nhập vào tham số là tọa độ của các điểm của đường thẳng.

Để tạo một đường thẳng, có thể sử dụng một trong những phương thức sau:

Phng thc Gii thch

AddLine Tạo đường thẳng đi qua hai điểm.

AddLightweightPolyline Tạo đường đa tuyến 2D.

AddMLine Tạo đường đa tuyến nét đôi.

Add3DPoly Tạo đường đa tuyến 3D.

To !i t*ng Line

Phương thức thứcAddLine sẽ tạo đối tượng Line, là một đoạn thẳng đi qua hai điểm:

Set RetVal = object.AddLine(StartPoint, EndPoint)

Tham s Gii thch

StartPoint, EndPoint Là tham số đầu vào kiểu variant hoặc mảng 3 phần tử kiểu Double, chứa toạ độ điểm đầu và điểm kết thúc của đoạn thẳng.

RetVal Đối tượng kiểu Line, tham chiếu đến đoạn thẳng vừa mới được tạo.

Ví dụ sau tạo một đoạn thẳng trong không gian mô hình với toạ độ điểm đầu và điểm cuối là (1,1,0) và (5,5,0):

Sub Example_AddLine() Dim lineObj As AcadLine

Dim diemDau(0 To 2) As Double Dim diemCuoi(0 To 2) As Double

' Định điểm đầu và điểm cuối của đoạn thẳng

diemDau(0) = 1#: diemDau(1) = 1#: diemDau(2) = 0#

diemCuoi(0) = 5#: diemCuoi(1) = 5#: diemCuoi(2) = 0#

' Tạo đoạn thẳng trong không gian mô hình

Set lineObj = ThisDrawing.ModelSpace.AddLine(diemDau, diemCuoi) ZoomAll

End Sub

Còn trong ví dụ sau, đoạn thẳng sẽ được tạo ra từ hai điểm bất kỳ do người dùng chọn trên màn hình. Đoạn thẳng này sẽ được tạo ra trên không gian mô hình hoặc không gian in, tuỳ thuộc vào không gian nào là hiện hành.

Public Sub TestAddLine() Dim diemDau As Variant Dim diemCuoi As Variant Dim objEnt As AcadLine On Error Resume Next

' Lấy toạ độ điểm đầu và điểm cuối do người dùng nhập diemDau = ThisDrawing.Utility.GetPoint _

(, vbCr & "Chon diem dau: ") diemCuoi = ThisDrawing.Utility.GetPoint _

(diemDau, vbCr & "Chon diem cuoi: ")

http://www.ebook.edu.vn ' 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

To !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ượngLWPolyline 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 Gii thch

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ứcAddLightweightPolyline, 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ượngLWPolyline.

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

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ượngLWPolylineđã tối ưu hoá cho quá trình hiển thị và lưu trữ trong bản vẽ.

To !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 Gii thch

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ứcAdd3DPoly, 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ượng3DPolyline.

Đ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

http://www.ebook.edu.vn

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.

To !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 Gii thch

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 5và 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

To !i t*ng Arc

Để 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 Gii thch

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 II-83: 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

http://www.ebook.edu.vn ' 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

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 224 - 230)

Tải bản đầy đủ (PDF)

(434 trang)