TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 31 - ZoomExtents End Sub 12 Đặt con trỏ vào giữa hai dòng Sub HelloWorld() và End Sub , sau đó nhấn phím F5 để thực thi Macro. Một hộp thoại nhỏ sẽ hiện lên yêu cầu người dùng nhập vào một thông điệp ð Nhập vào thông điệp và nhấn OK ð Thông điệp mà bạn vừa nhập sẽ được vẽ trên không gian mô hình của AutoCAD. 13 Trong màn hình của VBA IDE, chọn trình đơn File ð Save. Tiếp tục chọn trình đơn File ð Close and Return to AutoCAD để trở về AutoCAD. c. Tạo lệnh mới trong AutoCAD để thực thi Macro Sau khi đã tạo xong Macro, ta sẽ tiến hành khai báo một lệnh mới trong AutoCAD thông qua AutoLISP và lệnh đó sẽ thực thi Macro HelloWorld vừa được tạo. 14 Khởi động chương trình soạn thảo văn bản, ví dụ như chương trình Notepad có sẵn trong Windows. Trong Windows, chọn trình đơn Start ð Run. Trong hộp thoại Run, nhập notepad sau đó nhấn OK để khởi động trình soạn thảo văn bản Notepad. 15 Trong chương trình Notepad, nhập vào đoạn khai báo sau: (defun C:Hello() (command "-vbarun" "HelloWorld") ) Trong đó Hello là lệnh được khai báo để đăng ký sử dụng trong AutoCAD. Còn HelloWorld là tên Macro đã tạo trong VBA. 16 Chọn trình đơn File ð Save. Trong hộp thoại Save As…, chọn thưc mục cài đặt của AutoCAD trong mục Save in. Trong mục File name nhập vào ACAD.LSP . Chọn Save. 17 Thoát khỏi chương trình AutoCAD (nếu đang thao tác trên AutoCAD). Khởi động chương trình AutoCAD. Trong dòng lệnh của AutoCAD, gõ lệnh Hello . Thật bất ngờ, Macro HelloWorld đã được thực thi. Như vậy, bằng cách sử dụng VBA kết hợp với AutoLISP, ta đã có thể tạo thêm rất nhiều lệnh mới trong AutoCAD một cách dễ dàng. Để có thể hiểu thêm về AutoLISP, xin đọc thêm tài liệu hướng dẫn có sẵn trong AutoCAD. 4.2.5. Mô hình đối tượng của AutoCAD Mô hình đối tượng thể hiện cấu trúc giao diện AutoCAD ActiveX. Mô hình này được thể hiện dưới dạng cấu trúc phân nhánh, trong đó, mỗi đối tượng là một thành phần trong AutoCAD. Nhờ có mô hình đối tượng này mà người sử dụng có thể hình dung một cách dễ dàng cấu trúc của AutoCAD để có thể truy cập dần đến đối tượng mà mình quan tâm. Để có thể lập trình tốt trên AutoCAD, người sử dụng trước hết phải quen thuộc và thao tác thành thạo trên các đối tượng của AutoCAD và đồng thời phải nắm rõ mô hình đối tượng của AutoCAD. Trong AutoCAD, có rất nhiều loại đối tượng khác nhau, chẳng hạn như: § Đối tượng đồ hoạ, như: line , arc , text ,…; TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 32 - § Cấu hình về kiểu (style settings) như: linetype , dimension style ,…; § Cấu trúc tổ chức như: layer , group , block ,…; § Hiển thị bản vẽ như: view , viewport ; § Và ngay cả bản thân bản vẽ trong chương trình AutoCAD cũng được xem là một đối tượng. 4.2.5.1. Mô hình đối tượng Mô hình đối tượng của AutoCAD trong VBA được thể hiện dưới dạng cấu trúc cây phân cấp, trong đó đối tượng gốc là Application, là phiên làm việc hiện hành của AutoCAD. Nhờ có mô hình đối tượng mà người lập trình có thể biết được một đối tượng có thể cho phép truy cập đến những đối tượng nào ở cấp tiếp theo. Dưới đây là mô hình đối tượng rút gọn trong AutoCAD VBA. Mô hình đối tượng đầy đủ có thể tham khảo trong tài liệu “ActiveX and VBA Developer's Guide” đi kèm AutoCAD. a. Đối tượng Application Đối tượng Application là đối tượng gốc của mô hình đối tượng trong AutoCAD VBA. Từ đối tượng Application, ta có thể truy xuất đến bất kỳ đối tượng nào khác, hoặc thuộc tính, phương thức gán cho một đối tượng. Vì là đối tượng gốc trong AutoCAD VBA nên ta có thể tham chiếu trực tiếp đến các phương thức và thuộc tính của đối tượng Application mà không cần phải có tiền tố Application ở trước. Application Preferences Documents D ocument ModalSpace PaperSpace PViewPort DimStyles Layers Arc Circle Hatch Line MText Point Polyline Ray Text … Layouts Linetypes TextStyles SelectionSets Plot DimStyle Layer Layout Linetype TextStyle SelectionSet MenuGroups Chú giải: Tập đối tượng Đối tượng Utility TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 33 - b. Đối tượng Document Đối tượng Document, thực chất là một bản vẽ AutoCAD, thuộc tập đối tượng Documents cho phép truy cập vào tất cả các đối tượng đồ hoạ và hầu hết các đối tượng phi đồ họa của AutoCAD. Các đối tượng đồ họa (đường thẳng, hình tròn, cung, …) được truy cập thông qua tập ModelSpace và PaperSpace, còn các đối tượng phi đồ họa (layer, linetype, text style, …) được truy cập thông qua tập đối tượng có tên tương tự như tên đối tượng nhưng có thêm chữ “s” ở sau cùng, chẳng hạn như Layers, Linetypes, TextStyles. Đối tượng Document còn cho phép truy cập đến đối tượng Plot (là đối tượng chứa các phương thức và thuộc tính để cài đặt các thông tin về in ấn cho một Layout nhất định) và Utility (là đối tượng chứa các phương thức tiện ích trong bản vẽ như nhập, chuyển đổi số liệu,…). Trong VBA có thể sử dụng đối tượng ThisDrawing để truy cập vào bản vẽ hiện hành. § Đối với các dự án độc lập, đối tượng ThisDrawing tương ứng với bản vẽ hiện hành. § Đối với các dự án nhúng, đối tượng ThisDrawing tương ứng với bản vẽ chứa dự án nhúng. c. Đối tượng Đồ hoạ và Phi đồ hoạ Các đối tượng đồ hoạ, còn gọi là thực thể, là những đối tượng hữu hình cấu thành bản vẽ (đường thẳng, hình tròn,…). Để tạo những đối tượng này, ta sử dụng phương thức Add<Tên thực thể> tương ứng. Để hiệu chỉnh hoặc truy vấn các đối tượng, ta sử dụng các phương thức và thuộc tính của bản thân từng đối tượng. Mỗi đối tượng đồ hoạ đều có các thuộc tính cho phép ứng dụng có thể thực hiện hầu hết các lệnh hiệu chỉnh đối tượng trong AutoCAD như Copy, Erase, Move, Mirror… Những đối tượng này còn có phương thức để xác lập và gọi lại các dữ liệu mở rộng (xdata), lựa chọn và cập nhật. Các đối tượng đồ hoạ đều có các thuộc tính điển hình như Layer, Linetype, Color, và Handle cũng như những thuộc tính riêng biệt, phụ thuộc vào loại đối tượng, chẳng hạn như Center, Radius, và Area. Các đối tượng phi đồ hoạ là những đối tượng không thể nhìn thấy được (đối tượng thông tin) chẳng hạn như Layer, Linetype, DimStyle, SelectionSets… Để tạo những đối tượng này, sử dụng phương thức Add của tập đối tượng cha. Còn để chỉnh sửa và truy vấn các đối tượng thì sử dụng các phương thức và thuộc tính riêng của từng đối tượng. Mỗi đối tượng phi đồ hoạ đều có các phương thức và thuộc tính đặc biệt tương ứng với từng mục đích; tất cả đều có các phương thức để thiết lập và gọi lại dữ liệu mở rộng (xdata), và xoá bản thân đối tượng. d. Tập lựa chọn (Tập đối tượng SelectionSet) Tập lựa chọn, một phần tử của tập đối tượng SelectionSets, là tập hợp của các đối tượng được người dùng chọn trong bản vẽ AutoCAD. Tập lựa chọn có thể chứa rất nhiều loại đối tượng khác nhau nhưng lại được xử lý như một đối tượng đơn nhất. Ngoài ra, ta cũng có thể truy xuất đến từng đối tượng có trong tập lựa chọn. Một trong những thao tác thường được sử dụng trong tập lựa chọn là thao tác lọc đối tượng để có thể tìm được các đối tượng thực sự cần thao tác trong tất cả các đối tượng mà người dùng lựa chọn. Quá trình lọc có thể được thông qua vòng lặp để duyệt từng đối tượng hoặc thông qua cơ cấu lọc được định nghĩa trước. Để tìm hiểu rõ hơn về vấn đề này, có thể tham khảo trong tài liệu “ActiveX and VBA Developer’s Guide” và “AutoCAD DXF Reference”. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 34 - 4.2.5.2. Các thao tác cơ bản a. Khai báo và truy xuất đối tượng Mặc dù có rất nhiều kiểu đối tượng khác nhau, nhưng ta cũng có thể dễ dàng biết được tên kiểu đối tượng bằng cách thêm “Acad” vào trước tên của đối tượng có trong cây phân cấp thể thiện mô hình đối tượng của AutoCAD. Ví dụ khi muốn khai báo một đối tượng có kiểu là đường thẳng (trong mô hình đối tượng có tên là Line), ta sẽ thực hiện như sau: Dim objLine As AcadLine Để truy xuất vào đối tượng cũng như các phương thức và thuộc tính có trong đối tượng, ta cần phải căn cứ vào mô hình đối tượng. Để truy cập vào đối tượng bên trong, ta cần phải truy cập thông qua các đối tượng ở lớp cha. Trong đó đối tượng gốc là Application, và ta không cần phải thể hiện rõ trong tham chiếu đến đối tượng. Ví dụ, để truy xuất đến đối tượng Utility của bản vẽ hiện hành, ta sử dụng đoạn mã lệnh sau: Application.ActiveDocument.Utility Còn đối với các đối tượng nằm trong một tập đối tượng, ta có thể truy xuất thông qua chỉ số hoặc tên của đối tượng trong tập đối tượng. Ví dụ, để truy xuất vào lớp có tên là “Cot_Thep” của bản vẽ hiện hành, ta sử dụng đoạn mã sau: ThisDrawing.Layers(“Cot_thep”) hoặc ThisDrawing.Layers.Item(“Cot_thep”) Để truy xuất đến các phương thức và thuộc tính có trong đối tượng, ta sử dụng cú pháp sau: <Ten_doi_tuong>.<Thuoc_tinh> <Ten_doi_tuong>.<Phuong_thuc> Ví dụ khi cần thay đổi màu của lớp cốt thép thành màu đỏ, ta sử dụng đoạn mã lệnh sau: ThisDrawing.Layers.Item(“Cot_thep”).Color = acRed b. Làm việc với bản vẽ Các thao tác liên quan đến bản vẽ được thực hiện thông qua đối tượng Document trong tập đối tượng Documents và thông quan bản thân tập đối tượng Documents. § Tạo mới bản vẽ: sử dụng phương thức Add của tập đối tượng Documents Sub Tao_moi() Dim objDwg As AcadDocument Set objDwg = Application.Documents.Add End Sub § Mở bản vẽ đã có: sử dụng phương thức Open của tập đối tượng Documents. Sub Mo_ban_ve() Application.Documents.Open _ "C:\Program Files\Autocad 2002\sample\campus.dwg" End Sub Hoặc để kiểm tra sự tồn tại của bản vẽ trước khi thực sự mở bản vẽ, ta có thể sử dụng đoạn mã lệnh sau: Sub Mo_ban_ve () Dim dwgName As String TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 35 - dwgName="C:\Program Files\Autocad 2002\sample\campus.dwg" If Dir(dwgName) <> "" Then Application.Documents.Open dwgName Else MsgBox "Tep " & dwgName & " khong ton tai." End If End Sub § Lưu bản vẽ: sử dụng phương thức Save hoặc SaveAs của đối tượng Document. Sub Luu_ban_ve() ' Lưu bản vẽ hiện hành theo tên đang sử dụng ThisDrawing.Save ' Lưu bản vẽ hiện hành theo tên mới ThisDrawing.SaveAs "MyDrawing.dwg" End Sub § Đóng bản vẽ: sử dụng phương thức Close của đối tượng Document để đóng một bản vẽ, hoặc sử dụng phương thức Close của tập đối tượng Documents để đóng tất cả các bản vẽ đang được mở trong AutoCAD. Sub Dong_ban_ve() 'Đóng bản vẽ hiện hành và không lưu bản vẽ ThisDrawing.Close SaveChanges:=False 'Đóng bản vẽ hiện hành và lưu bản vẽ. 'Nếu bản vẽ chưa được lưu trước đó thì sẽ được lưu 'với tên được chỉ định ThisDrawing.Close SaveChanges:=True, _ FileName:="C:\MyDrawing.DWG" 'Đóng tất cả các bản vẽ đang được mở Application.Documents.Close End Sub c. Làm việc với các đối tượng Tạo mới đối tượng Theo mô hình đối tượng của AtuoCAD, các đối tượng đồ hoạ đều thuộc trong ModelSpace và PaperSpace, còn các đối tượng phi đồ hoạ thì nằm chủ yếu trong đối tượng Document. Để tạo mới một đối tượng đối tượng đồ hoạ, trước tra cần phải khai báo biến đối tượng, sau đó sử dụng phương thức Add<tên_đối_tượng> tạo đối tượng mới và câu lệnh set để gán đối tượng vừa được tạo trong bản vẽ cho biến đối tượng mà ta khai báo. Đối với đối tượng phi đồ hoạ, thông thường, để tạo một đối tượng mới, ta chỉ cần sử dụng phương thức Add có trong tập đối tượng chứa đối tượng phi đồ hoạ đó. Ví dụ sau sẽ minh hoạ cách tạo một đường thẳng mới (đối tượng đồ hoạ) và một lớp mới (đối tượng phi đồ hoạ) 'Tạo mới một đường thẳng và đổi màu thành màu đỏ Dim P1(0 To 2) As Double Dim P2(0 To 2) As Double Dim objLine As AcadLine P1(0) = 0: P1(1) = 0: P1(2) = 0 P2(0) = 100: P2(1) = 100: P2(2) = 0 Set objLine = ThisDrawing.ModelSpace.AddLine(P1, P2) TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 36 - objLine.Color = acRed 'Tạo mới lớp và đổi tên lớp thành “Be_tong” Dim objLayer As AcadLayer Set objLayer = ThisDrawing.Layers.Add("Cot_thep") objLayer.Name = "Be_tong" Hiệu chỉnh đối tượng Việc hiệu chỉnh đối tượng có thể được thực hiện một cách dễ dàng thông qua hệ thống các phương thức và thuộc tính mà đối tượng đó cung cấp. Đối với các đối tượng đồ hoạ (hay còn gọi là các thực thể - AcadEntity), mỗi đối tượng đều có những phương thức và thuộc tính riêng. Tuy nhiên, do được xây dựng xuất phát từ một đối tượng nên chúng cũng có những thuộc tính và phương thức chung. Dưới đây sẽ liệt kê các phương thức và thuộc tính thường sử dụng với các đối tượng đồ hoạ Phương thức Giải thích Move(P1,P2) Thủ tục tịnh tiến đối tượng đồ hoạ theo véc tơ P1-P2 Copy() Hàm sao chép đối tượng, trả về đối tượng giống như đối tượng gốc Mirror(P1,P2) Hàm lấy đối xứng trục đối tượng, trả về đối tượng đã được lấy đối xứng với đối tượng ban đầu qua đường thẳng P1-P2 Rotate(P, A) Thủ tục quay đối tượng đối tượng quanh điểm P với góc quay A ScaleEntity(P, TL) Thủ tục co dãn đối tượng đều nhau theo các phương X, Y và Z với điểm cơ sở là P là tỉ lệ co dãn là TL ArrayPolar(N, A, P) Hàm nhân bản dạng cực, trả về mảng chứa N đối tượng sau khi được nhân bản để lấp đầy góc A có tâm là điểm P ArrayRectangular(Y, X, Z, dY, dX, dZ) Hàm nhân bản dạng chữ nhật, trả về YxXxZ đối tượng sau khi sao chép và bố trí theo Y hàng, X cột, Z tầng với các khoảng cách theo hàng, cột, tầng tương ứng là dY, dX, dZ GetBoundingBox MinPoint, MaxPoint Thủ tục lấy hình chữ nhật bao, MinPoint là điểm ở góc dưới trái còn điểm MaxPoint là điểm ở góc trên phải của hình chữ nhật bao IntersectWith(ĐT, Opt) TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 37 - Hàm lấy giao điểm, trả về mảng chứa các điểm giao giữa đối tượng đang xét và đối tượng ĐT, ta có thể thiết lập thêm về chế độ xét giao cắt trong biến Opt Update Thủ tục cập nhật, cập nhật các đối tượng đồ hoạ trên bản vẽ. Thủ tục này thường được gọi sau khi ta thay đổi một số thuộc tính của đối tượng đồ hoạ Thuộc tính Giải thích Color Gán/trả về định màu của đối tượng đồ hoạ Layer Gán/trả về tên lớp chứa đối tượng đồ hoạ Linetype Gán/trả về kiểu đường của đối tượng đồ hoạ LinetypeScale Gán/trả về tỉ lệ kiểu đường của đối tượng đồ hoạ Lineweight Gán/trả về bề dày nét của đối tượng đồ hoạ Visible Quy định sự hiển thị/ẩn của đối tượng đồ hoạ, giá trị kiểu boolean Đối với các đối tượng phi đồ hoạ, mỗi đối tượng đều có những phương thức và thuộc tính riêng của từng loại đối tượng. Chính vì vậy, trong tài liệu này chỉ giới thiệu một số phương thức và thuộc tính của đối tượng Layer, một đối tượng được sử dụng rất nhiều trong khi lập trình trên AutoCAD. Phương thức Giải thích Delete Xoá lớp. Phương thức này cũng có hiệu lực trong hầu hết các đối tượng trong AutoCAD Thuộc tính Giải thích Color Gán/trả về màu của lớp Freeze 1 Bật/tắt chế độ làm đông lớp, có giá trị kiểu boolean LayerOn Bật/tắt hiển thị lớp, có giá trị kiểu boolean Linetype Gán/trả về kiểu đường của lớp 1 Phân biệt giữa các chế độ Làm đông (Freeze) – Hiển thị (LayerOn) – Khoá (Lock) lớp: Với chế độ làm đông, khi bật chế độ làm đông, các đối tượng thuộc lớp sẽ không được hiển thị trong bản vẽ và cũng sẽ không được in ra, và đồng thời qua trình tái tạo bản vẽ (lệnh regen trong AutoCAD) sẽ không có tác dụng với lớp đã được làm đông; và do đó sẽ giảm tải khả năng xử lý của máy tính. Với chế độ hiển thị, khi đã tắt lớp, các đối tượng trong lớp sẽ không được hiển thị trên màn hình cũng như khi in ra, tuy vậy, các đối tượng vẫn được tái tạo khi sử dụng lệnh regen. Với chế độ khoá, khi lớp đã bị khoá, các đối tượng trong lớp sẽ vẫn được hiển thị trên màn hình và vẫn được in ra, nhưng người sẽ không thể hiệu chỉnh các đối tượng đó. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 38 - LineWeight Gán/trả về bề dày nét của lớp Lock Bật/tắt chế độ khoá lớp, giá trị kiểu Boolean Name Gán/trả về tên của lớp d. Thao tác trên tập lựa chọn – SelectionSet Trong quá trình thao tác với bản vẽ, đôi lúc người dùng cần phải nhóm các đối tượng lại để sau đó thực hiện một thao tác nào đó trên nhóm đối tượng đó, chẳng hạn như khi cần đổi màu các đường thẳng do người dùng chọn chẳng hạn, lúc đó, ta sẽ xử dụng đến tập lựa chọn – SelectionSet. Để sử dụng tập lựa chọn, cần phải thực hiện qua hai bước: tạo một đối tượng SelectionSet và thêm vào tập đối tượng SelectionSets; Thêm các đối tượng vào tập lựa chọn. Tạo tập lựa chọn mới Để tạo một tập lựa chọn mới, ta sử dụng phương thức Add có trong tập đối tượng SelectionSets, với chỉ một tham số cần truyền vào là tên của tập lựa chọn. ’Tạo tập lựa chọn mới Dim sset As AcadSelectionSet Set sset = ThisDrawing.SelectionSets.Add("NewSelectionSet") Nếu có một tập lựa chọn trùng tên, AutoCAD sẽ báo lỗi. Chính vì vậy, trong khi lập trình, ta nên xoá tập lựa chọn đi nếu ta không dùng đến tập lựa chọn đó nữa. ’Xoá tập lựa chọn ThisDrawing.SelectionSets.Item("NewSelectionSet").Delete Thêm đối tượng vào tập lựa chọn Ta có thể thêm các đối tượng vào trong tập lựa chọn hiện hành bằng cách sử dụng một trong những phương thức sau: Phương thức Giải thích AddItems ITEMS Thêm các đối tượng có trong mảng đối tượng ITEMS vào tập lựa chọn Select Lựa chọn các đối tượng và thêm vào trong tập lựa chọn. Ta có thể chọn tất cả các đối tượng, các đối tượng bên trong và cắt ngang qua một hình chữ nhật, các đối tượng bên trong và cắt ngang qua hình đa giác, đối tượng vừa mới tạo, đối tượng trong tập lựa chọn vừa mới tạo, đối tượng bên trong một cửa sổ, đối tượng bên trong hình đa giác. SelectAtPoint Chọn các đối tượng đi qua một điểm và thêm vào tập lựa chọn SelectByPolygon Chọn các đối tượng bên trong một đa giác và thêm vào tập lựa chọn SelectOnScreen Nhắc người dùng chọn đối tượng trên màn hình và thêm vào tập lựa chọn Ví dụ sau sẽ minh hoạ cách thức thêm đối tượng vào tập lựa chọn Sub Ch4_AddToASelectionSet() ’ Tạo tập đối tượng mới Dim sset As AcadSelectionSet TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 39 - Set sset = ThisDrawing.SelectionSets.Add("SS1") ’ Nhắc người dùng chọn đối tượng để thêm vào tập lựa chọn ’ Để kết thúc việc chọn đối tượng, nhấn phím ENTER. sset.SelectOnScreen ’ Duyệt qua tập lựa chọn và gán màu đối tượng là màu xanh Dim entry As AcadEntity For Each entry In sset entry.Color = acBlue entry.Update Next entry End Sub Loại bỏ đối tượng ra khỏi tập lựa chọn Sau khi tạo tập lựa chọn, ta có thể xử lý tất cả các đối tượng hoặc chỉ lựa chọn để xử lý một số đối tượng trong tất cả các đối tượng đã được lựa chọn. Để loại bỏ đối tượng khỏi tập lựa chọn, ta sử dụng một trong những phương thức sau: Phương thức Giải thích RemoveItems ITEMS Phương thức này sẽ gỡ bỏ các đối tượng có trong mảng đối tượng ITEMS. Các đối tượng đã được gỡ bỏ sẽ không nằm trong tập lựa chọn, nhưng vẫn tồn tại bình thường trong bản vẽ. Clear Phương thức này sẽ gỡ bỏ tất cả các đối tượng trong tập lựa chọn. Tập lựa chọn vẫn tồn tại nhưng không chứa đối tượng nào cả. Các đối tượng đã được gỡ bỏ vẫn tồn tại bình thường trong bản vẽ. Erase Phương thức này sẽ xoá tất cả các đối tượng có trong tập lựa chọn. Tập lựa chọn vẫn tồn tại nhưng không chứa đối tượng nào cả. Các đối tượng có trong tập lựa chọn sẽ bị xoá và không còn tồn tại trong bản vẽ. Delete Phương thức này sẽ xoá tập lựa chọn. Tập đối tượng sẽ không còn tồn tại nữa. Các đối tượng có trong tập lựa chọn vẫn tồn tại bình thường trong bản vẽ. Sử dụng bộ lọc trong tập lựa chọn Đôi lúc, trong quá trình chọn đối tượng, ta chỉ cần quan tâm đến một số đối tượng nào đó, chẳng hạn như chỉ chọn các đối tượng có màu đỏ. Khi đó, ta có thể sử dụng bộ lọc cho tập lựa chọn, và như thế, chỉ có các đối tượng thoả mãn các yêu cầu đã chỉ ra trong bộ lọc thì mới được thêm vào tập lựa chọn. Để sử dụng được bộ lọc, ta cần phải xác định được kiểu bộ lọc và dữ liệu tương ứng với kiểu bộ lọc. Danh sách của các loại bộ lọc có thể tham khảo trong tài liệu “AutoCAD DXF Reference” trong tài liệu trợ giúp của AutoCAD. Ví dụ sau minh họa nhiều bộ lọc khác nhau. ’Chỉ thêm những đối tượng kiểu Text vào tập lựa chọn: FilterType = 0 FilterData = "TEXT" sset.SelectOnScreen FilterType, FilterData ’Chỉ thêm những đối tượng thuộc lớp FLOOR9 vào tập lựa chọn: FilterType = 8 TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 40 - FilterData = "FLOOR9" sset.SelectOnScreen FilterType, FilterData ’Chỉ thêm những đối tượng có màu đỏ vào tập lựa chọn: Filter Type = 62 Filter Data = 5 sset.SelectOnScreen FilterType, FilterData e. Nhập dữ liệu từ người dùng Trong quá trình lập trình, việc tạo ra sự tương tác với người sử dụng trong chương trình là điều không thể thiếu. Ngoài cách nhập dữ liệu thông qua hệ thống các cửa sổ (Form), ta còn có thể tạo ra tương tác với người dùng thông qua các phương thức có trong đối tượng Utility. Các phương thức này sẽ hiển thị một dòng nhắc trên dòng lệnh của AutoCAD và yêu cầu người sử dụng nhập vào nhiều kiểu dữ liệu khác nhau (tuỳ thuộc vào từng loại phương thức) như chọn một điểm trên màn hình, chọn đối tượng, nhập vào một số nguyên,… Dưới đây là một số phương thức thường được sử dụng của đối tượng Utility: Phương thức Giải thích GetInteger([dòng_nhắc]) AutoCAD sẽ dừng lại, hiển thị dòng_nhắc và chờ người dùng nhập vào một số nguyên. Phương thức này sẽ trả về số nguyên mà người dùng nhập vào. GetString([dòng_nhắc]) AutoCAD sẽ dừng lại, hiển thị dòng_nhắc và chờ người dùng nhập vào một chuỗi. Phương thức này sẽ trả về chuỗi mà người dùng nhập vào. GetPoint([điểm_cơ_sở] [, dòng_nhắc]) AutoCAD sẽ dừng lại, hiển thị dòng_nhắc và chờ người dùng chọn một điểm trên màn hình. Khi muốn chọn một điểm tương đối với một điểm nào đó, ta sẽ truyền toạ độ điểm đó thông qua tham số điểm_cơ_sở. Phương thức này sẽ trả về toạ độ điểm mà người dùng nhập vào. GetDistance([điểm_cơ_sở] [, dòng_nhắc]) AutoCAD sẽ dừng lại, hiển thị dòng_nhắc và chờ người dùng nhập vào khoảng cách. Khoảng cách nhập vào có thể là một số nguyên, hoặc người dùng chọn hai điểm, hoặc chỉ định trước một điểm (thông qua tham số điểm_cơ_sở) và người dùng chọn một điểm trên màn hình. Phương thức này sẽ trả về khoảng cách giữa hai điểm. GetAngle([điểm_cơ_sở] [, dòng_nhắc]) AutoCAD sẽ dừng lại, hiển thị dòng_nhắc và chờ người dùng nhập vào góc. Góc nhập vào có thể là một số chỉ góc (đơn vị là độ), hoặc người dùng chọn hai điểm, hoặc chỉ định trước một điểm (thông qua tham số điểm_cơ_sở) và người dùng chọn một điểm. Giá trị trả về có đơn vị là Radian chỉ góc giữa tia nối hai điểm đã chọn và trục Ox (trong mặt phẳng Oxy). Ví dụ sau minh hoạ cách nhập toạ độ điểm, sử dụng phương thức GetPoint: Sub Ví_dụ_GetPoint() ' Ví dụ sau trả về điểm do người dùng nhập vào Dim returnPnt As Variant . và “AutoCAD DXF Reference”. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 34 - 4. 2.5.2. Các thao tác cơ bản a. Khai báo và truy xuất đối tượng Mặc dù có rất nhiều kiểu đối. dàng. Để có thể hiểu thêm về AutoLISP, xin đọc thêm tài liệu hướng dẫn có sẵn trong AutoCAD. 4. 2.5. Mô hình đối tượng của AutoCAD Mô hình đối tượng thể hiện cấu trúc giao diện AutoCAD ActiveX Mô hình này được thể hiện dưới dạng cấu trúc phân nhánh, trong đó, mỗi đối tượng là một thành phần trong AutoCAD. Nhờ có mô hình đối tượng này mà người sử dụng có thể hình dung một cách dễ