VBA for AutoCAD
Trang 1VBA for AutoCAD
GROUP 1
Trang 2Thông tin nhóm
NHÓM 1
1 1012331 Phan Tiến Quang – Nhóm trưởng oclockvn@gmail.com
Trang 3Nội dung trình bày
Tổng quan về dự án VBA trong AutoCAD
Hệ thống mô hình đối tượng trong AutoCAD
Các thao tác cơ bản trong AutoCAD
Trang 41 Tổng quan về dự án VBA trong AutoCAD
Dự án VBA trong AutoCAD chia làm 2 loại:
1 Dự án nhúng (Embedded Project)
• Lưu trữ trong tệp DWG cùng với các thông tin khác của bản vẽ trong AutoCAD.
• Tự động thực hiện khi mở bản vẽ chứa dự án nhúng.
• Hiệu lực đối với 1 bản vẽ chứa nó.
2 Dự án độc lập (Global Project)
• Lưu trữ tách biệt trong 1 tệp có phần mở rộng là *.dvb.
• Không phụ thuộc vào 1 bản vẽ nào cả.
Trang 5Cấu trúc dự án VBA
1 AutoCAD Objects: đối tượng đại
diện cho bản vẽ hiện hành của
AutoCAD.
2 Userform: giao diện hộp thoại hỗ
trợ giao tiếp giữa người dùng và
chương trình.
3 Module chuẩn: chứa mã lệnh khai
báo, chương trình con.
4 Class module: định nghĩa cho các
lớp của dự án
Trang 6Trình quản lý dự án
Cách 1
Trang 7Trình quản lý dự án
Cách 2
Trang 8Trình quản lý dự án
Trang 92 Hệ thống mô hình đối tượng trong AutoCAD
Theo góc nhìn lập trình:
• AutoCAD được cấu thành từ nhiều đối tượng khác nhau.
• Mỗi đối tượng có thể có nhiều đối tượng con ở cấp độ thấp hơn.
• Các đối tượng được tổ chức theo 1 cấu trúc nhất định, mỗi đối tượng trong cấu trúc đó tương đương với 1 thành phần của AutoCAD.
Trang 102 Hệ thống mô hình đối tượng trong AutoCAD
Các loại đối tượng trong AutoCAD:
• Đối tượng hình học: line, arc, text, dimension,…
• Thiết lập về định dạng: linetype, dimension style,…
• Cấu trúc tổ chức: layer, group, block,…
• Đối tượng liên quan đến hiển thị bản vẽ: view, viewport,…
• Ngay cả bản vẽ và bản thân chương trình AutoCAD cũng được xem là đối
tượng.
Trang 11Mô hình đối tượng
Trang 12Các đối tượng chính
• Application: phiên làm việc của AutoCAD.
• Document: bản vẽ đang được mở.
• Tập đối tượng: ModelSpace, PaperSpace, Block.
• Đối tượng phi hình học: dùng để thiết lập các thuộc tính cho đối tượng hình học VD: Layer, Linetype, DimStyle,…
• Đối tượng hình học: thực thể cấu thành bản vẽ AutoCAD VD: Line, Circle,…
Trang 13Thuộc tính của đối tượng hình học
Trang 14Phương thức của đối tượng hình học
Trang 153 Các thao tác cơ bản trong AutoCAD
• Thu phóng màn hình bản vẽ
• Nhập liệu người dùng từ dòng lệnh
• Tạo mới đối tượng hình học
• Hiệu chỉnh đối tượng hình học
Trang 16Thu phóng màn hình bản vẽ (zoom)
ZoomExtents Application.ZoomExtents Phóng màn hình theo vùng bao tất cả các đối
tượngZoomAll Application.ZoomAll Phóng màn hình theo giới hạn của bản vẽ (2D)ZoomPrevious Application.ZoomPrevious Chuyển màn hình về trạng thái trước đó
ZoomPickWindow Application.ZoomPickWindow Phóng màn hình theo hình chữ nhật được chọn
ZoomWindow Application.ZoomWindow
bottm_left, top_right
Phóng màn hình theo hình chữ nhật định trước
Trang 17Nhập liệu người dùng từ dòng lệnh
• Được AutoCAD và VBA hỗ trợ thông qua đối tượng Utility.
• Các phương thức thường có dạng GetXXX
• Lỗi phát sinh “User input keyword”
• Ẩn form khi nhập liệu: form.Hide()
Trang 18Nhập liệu người dùng từ dòng lệnh (tt)
Prompt Utility.Prompt Message Gửi đoạn Message đến dòng lệnh của
AutoCADGetString RetVal = Utility.GetString(HasSpaces[,
Nhập vào số nguyên hoặc số thực
GetAngle RetVal = Utility.GetAngle([Point][,
Trang 19Tạo mới đối tượng hình học
1 Khai báo đối tượng
Dim objAs AcadXXX
2 Thêm đối tượng
Set obj = Object.AddXXX (params)
Object = ThisDrawing.ModelSpace ‘không gian mô hình
Object = ThisDrawing.PaperSpace ‘không gian in
3 Cập nhật đối tượng
Obj.Update
VD:
Dim line As AcadLine
Set line = ThisDrawing AddLine (startPoint, endpoint)
Trang 20Hiệu chỉnh đối tượng hình học
Copy Set RetVal = object.Copy Sao chép đối tượng
Delete Object.Delete Xóa đối tượng khỏi bản vẽ
Explode Set RetVal = object.Explode Phá vỡ 1 đối tượng thành các đối tượng con
Move Object.Move Point1, Point2 Tịnh tiến đối tượng
Mirror Set RetVal =
object.Mirror(Point1, Point2)
Lấy đối xứng qua 1 trục
Offset Set RetVal =
Trang 214 Demo
Trang 22The end!
• Q&A
• Tham khảo: Giáo trình TDHTKCD.
• Cảm ơn thầy và các bạn đã theo dõi.