1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình hình thành phương pháp lập trình trên autocad và phương pháp hệ thống đối tượng p10

5 7 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 646,69 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ố acByBlock acRed acYellow acGreen acCyan acBlue acMagenta acWhite acByLayer

Trang 1

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 đó

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

Thuộc tính Layer – Lớp chứa đối tượng 

Sử dụng thuộc tính Layer để lấy và thay đổi lớp chứa đối tượng Thông thường, khi một đối tượng hình học mới được tạo ra, đối tượng đó sẽ được đặt trên lớp hiện hành của bản vẽ Khi người dùng thay đổi giá trị của thuộc tính Layer thành tên của một lớp khác, đối tượng đó sẽ được tự động chuyển về nằm trên lớp mới này Nếu người dùng gán cho thuộc tính Layer một tên lớp không có trong bản vẽ thì chương trình sẽ không báo lỗi, và đối tượng vẫn nằm trên lớp

object.Layer

Tham số Giải thích

Object Là đối tượng hình học

Layer Chuỗi chứa tên của lớp

Đ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 lớp của đối tượng được chọn thành lớp “Layer1” (người dùng phải tạo trước một lớp có tên là

“Layer1” bằng lệnh của AutoCAD):

Trang 2

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

249

Sub VD_Layer()

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 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ộc tính LineType – Kiểu đường của đối tượ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):

Sub VD_LineType()

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 DT can doi kieu duong: "

If Not (ent Is Nothing) Then

' Chuyển kiểu đường cho đối tượng

ent.Linetype = "DASHED2"

ent.Update

End If

End Sub

CHÚ Ý có thể phải điều chỉnh giá trị của biến hệ thống LTSCALE thì mới quan sát được các

kiểu đường không phải là nét liền

Trang 3

250

Thuộc tính Lineweight – Chiều dày nét in 

Thuộc tính Lineweight dùng để thiết lập chiều dày nét in cho các đối tượng hình học và đối tượng Layer

object.Lineweight

Giá trị của thuộc tính này là một hằng số kiểu acLineWeight:

Hằng số Bề dày (mm) Hằng số Bề dày

(mm)

Hằng số Bề dày

(mm) acLnWtByLayer Theo lớp acLnWt020 0.2 acLnWt080 0.8 acLnWtByBlock Theo Block acLnWt025 0.25 acLnWt090 0.9 acLnWtByLwDefault Mặc định acLnWt030 0.3 acLnWt100 1.0

acLnWt013 0.13 acLnWt053 0.53 acLnWt158 1.58

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

End Sub

Ngoài những thuộc tính như đã giới thiệu ở trên, người lập trình có thể sử dụng các thuộc tính sau để hiệu chỉnh đối tượng:

Thuộc tính Đối tượng áp dụng Giải thích

Trang 4

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

251

Center Arc, Circle Kiểu Variant (mảng 3 phần tử kiểu double) Toạ độ

tâm của đối tượng

Radius Arc, Circle Kiểu Double Bán kính của cung tròn hoặc đường

tròn

Area Arc, Circle, LWPolyline,

Polyline Kiểu Double Diện tích vùng khép kín của đối tượng là thuộc tính đọc-ghi đối với đối tượng Circle, là thuộc

tính chỉ đọc với các đối tượng khác

Length Line Kiểu Double Thuộc tính chỉ đọc xác định chiều dài

của đoạn thẳng

TextString MText, Text Kiểu String Chuỗi văn bản được hiển thị trong đối

tượng văn bản

Alignment Text Hằng số kiểu acAlignment, xác định chế độ canh

hàng theo phương đứng và phương ngang

Rotation DimAligned, DimAngular,

DimDiametric, 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êm một đỉnh vào đường đa tuyến 

Để thêm một đỉnh vào đường đa tuyến, có thể sử dụng phương thức AddVertex Cú pháp của phương thức này như sau:

Trang 5

252

object.AddVertex Index, Point

Tham số Giải thích

Object Là đối tượng LWPolyline

Index Kiểu Integer Chỉ số của đỉnh cần thêm vào đường đa tuyến Đỉnh đầu tiên của

đường đa tuyến được đánh số là 0 Giá trị Index nhập vào phải lớn hơn 0

Point Kiểu Variant (mảng 2 phần tử kiểu Double) chứa toạ độ của điểm cần thêm vào

đường đa tuyến

Ví dụ sau sẽ minh hoạ cách thức chèn một đỉnh vào đường đa tuyến:

Sub VD_AddVertex()

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 "Them dinh vao duong da tuyen.", , "Vi du AddVertex"

' Định nghĩa toạ độ đỉnh mới

Dim newVertex(0 To 1) As Double

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

Đọc hoặc thay đổi toạ độ đỉnh của đường đa tuyế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"

Ngày đăng: 11/05/2021, 02:26

🧩 Sản phẩm bạn có thể quan tâm