Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
2,28 MB
Nội dung
December 22, 20 13 ObjectARX 1 Vũ Văn Thiên Cơ điện tử 1_K50 TổngQuanvềAutoCad Phần mềm Cad đầu tiên là Sketchpad xuất hiện vào năm 1962 được viết bởi Ivan Sutherland thuộc trường kĩ thuật Massachsetts. Chức năng: Thiết kế các bản vẽ hai chiều Thiết kế các bản vẽ 3D Đặc điểm nổi bật: Chính xác Năng suất cao Trao đổi dữ liệu với phần mềm khác December 22, 20 13 ObjectARX 2 Vũ Văn Thiên Cơ điện tử 1_K50 Các ngôn ngữ phát triển trên AutoCad AutoLISP : (LISt Processing :ngôn ngữ xử lý danh sách) Lập trình viên có thể mở rộng tính năng của AutoCAD bằng cách viết các lệnh của chính họ ADS (AutoCAD Development System) : từ AutoCAD R 10, do AutoLISP không áp ứng được tốc độ cao. Một chương trình ADS thực chất là một file khả thi (executable) chứa các hàm định nghĩa theo một quy tắc nhất định để có thể gọi từ trong AutoCAD. ADSRX (RX : Runtime Extension) : từ AutoCAD R13, nhằm tăng khả năng giao tiếp với AutoCad Một chương trình ADSRX là một thư viện liên kết động (DLL) chứa các hàm có thể thực hiện từ trong AutoCAD December 22, 20 13 ObjectARX 3 Vũ Văn Thiên Cơ điện tử 1_K50 Các ngôn ngữ phát triển trên AutoCad ObjectARX : (Mở rộng hướng đối tượng của thư viện ARX) xuất hiện cùng AutoCAD R14. Thay vì cung cấp một thư viện các hàm như trong ARX, giờ đây một thư viện các lớp đối tượng tương ứng với các đối tượng (object) trong bản vẽAutoCAD cho phép thao tác dể dàng hơn rất nhiều. Do đó các chương ứng dụng có thể dễ quản lý và chạy ổn định hơn VBA :Từ phiên bản R14, cho phép phát triển ứng dụng AutoCAD bằng Visual Basic for Application. Nhờ đó một đội ngũ rất lớn các lập trình viên Basic cùng với hiểu biết về môi trường AutoCAD có thể phát triển các ứng dụng phục vụ thiết kế kỹ thuật VisualLISP : từ AutoCAD R14. Ngoài những cải tiến về ngôn ngữ so với AutoLISP, VisualLISP còn cung cấp một môi trương phát triển (IDE : Intergrated Development Environment) hoàn chỉnh, cho phép soạn thảo , chạy thử , gỡ rối và dịch chương trình LISP dễ dàng hơn December 22, 20 13 ObjectARX 4 Vũ Văn Thiên Cơ điện tử 1_K50 Phân loại các ngôn ngữ lập trình API phát triển AutoCAD thông dịch (interpreted) biên dịch (compiled) AutoLISP, VBA và VisualLISP ADS, ADS/ARX và ObjectARX December 22, 20 13 ObjectARX 5 Vũ Văn Thiên Cơ điện tử 1_K50 ObjectARX là gì ? ObjectARX là một thư viện lập trình ứng dụng hướng đối tượng cho môi trường AutoCAD Phục vụ các hầu hết các nhu cầu cần thiết để phát triển AutoCAD : Truy cập tới cơ sở dữ liệu bản vẽ T ng tác v i AutoCad ươ ớ Editor T o giao di n ng i dùng s d ng ạ ệ ườ ử ụ MFC nh ngh a đ i t ng m i (Custom Đị ĩ ố ượ ớ Objects) T ng tác môi tr ng l p trình ươ ườ ậ khác . December 22, 20 13 ObjectARX 6 Vũ Văn Thiên Cơ điện tử 1_K50 Yêu cầu khi lập trình ObjectARX Chương trình AutoCad: Thao tác tạo ra bản vẽ,hiểu cấu trúc dữ liệu bản vẽ . Kỹ thuật lập trình hướng đối tượng và môi trương Visual C++ Kỹ thuật lập trình ứng dụng trên Microsoft Windows với MFC(Microsoft Foundation Class) bởi chương trình ARX thực chất là một thư viện liên kết động (DLL) trong các hệ điều hành Windows 32-bit. Lập trình viên phải nắm vững các khái niệm quan trọng của lập trình hướng đối tượng như kế thừa (inheritance) , đóng gói dữ liệu (data encapsulation) , đa hình (polymorphism), hàm ảo(virtual function) . Ðồng thời phải nắm được các thức tạo và thay đổi thiết lập các project trong môi trường Visual C++ , các thao tác soạn thảo , biên dịch, gỡ rối các chương trình . December 22, 20 13 ObjectARX 7 Vũ Văn Thiên Cơ điện tử 1_K50 Cài đặt ObjectARX 1.AutoCAD 2.ObjectARX SDK http://www.autodesk.com/objectarx http://www.objectarx.com 3.Microsoft Visual C++ .NET 4.ObjectARX Wizard Sử dụng ArxWizards.msi "<ObjectARX SDK folder>\utils\ObjARXWiz\" AutoCAD 2000,2000i and 2002 (plus verticals): ObjectARX 2000 and Microsoft Visual C++ 6.0 AutoCAD 2004, 2005 and 2006 (plus verticals): ObjectARX 2004 and Microsoft Visual C.NET 2002 (7.0) AutoCAD 2007, 2008 and 2009 (plus verticals): ObjectARX 2007 and Microsoft Visual C.NET 2005 (8.0) December 22, 20 13 ObjectARX 8 Vũ Văn Thiên Cơ điện tử 1_K50 Cấu trúc thư viện ObjectARX Thư viện ObjectARX gồm nhiều thư viện con khác nhau tuỳ theo yêu cầu lập trình : AcDb Các lớp cung cấp các thao tác truy cập cơ sở dữ liệu bản vẽAutoCAD AcGi Thư viện các lớp đối tượng dùng để thể hiện đối tượng do người sử dụng định nghĩa (custom object) AcGe Các lớp tiện ích hình học và đại số : điểm, véc tơ , ma trận , biểu diễn đường cong, mặt cong . AcRx Phục vụ đăng ký các lớp đối tượng mới, định kiểu khi chạy chương trình . AcEd Dùng khi đăng ký các lệnh, xử lý các message của AutoCAD , xử lý transaction ADS Thu viện các hàm C dựng trong các thao tác liên quan đến select đối tượng, nhập số liệu . December 22, 20 13 ObjectARX 9 Vũ Văn Thiên Cơ điện tử 1_K50 Cấu trúc một chương trình ObjectARX Một chương trình ObjectARX thực chất là một thư viện liên kế động trong đó có chứa một điểm nhập (entry point) tuân theo những quy tắc nhất định cho phép AutoCAD tương tác với chương trình Tương tác giữa AutoCAD và ứng dụng ARX được thực hiện thông qua các message và entry point là nơi xử lý các message này. Entry point này đóng vai trò như hàm main() trong một chương trình C/C++ hay một Message Loop trong một chương trình ứng dụng Windows December 22, 20 13 ObjectARX 10 Vũ Văn Thiên Cơ điện tử 1_K50 [...]... sở dữ liệu của bản vẽAutoCad December 22, 20 13 Bản vẽAutoCAD là một cơ sở dữ liệu (CSDL) chứa các đối tượng tạo nên bản vẽ Các đối tượng trong bản vẽ thuộc một trong hai loại sau : Nonentity (phi thực thể) : đối tượng kiểu đường (linetype), kiểu chữ (text style) hay lớp (layer) Entity (thực thể) : các đối tượng có thể hiện hình học, như các đối tượng LINE, CIRCLE, POLYLINE Cấu trúc cơ sở dữ liệu. .. class BigWorld Vũ Văn Thiên 33 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 5.Dữ liệu bổ sung Các ứng dụng ObjectARX có thể gắn các dữ liệu của chúng vào các đối tượng của cơ sở dữ liệu bản vẽAutoCAD bằng nhiều cách khác nhau 5.1.Extended Data(Xdata) Xdata là một danh sách móc nối thuộc kiểu resbuf do các ứng dụng AutoCAD gắn vào các đối tượng của bản vẽ union ads_u_val { ads_real rreal; ads_real... một đối tượng desc() : Trả về thông tin kiểu (descriptor object ) của đối tượng cast() : Ep một con trỏ đối tượng về một kiểu con trỏ nhất định Nếu không đúng kiểu, trả về NULL isKindOf() : Kiểm tra một đối tượng có thuộc kiểu nhất định (hay các lớp kế thừa từ đó) hay không AcDbEntity* pEntity; acdbOpenAcDbEntity (pEntity, objId, AcDb::kForRead); //Mở đối tượng kiểu AcDbEntity tổng quát if (pEntity ->isKindOf(AcDbEllipse::desc()))... dịch từ *.dll sang *.arx để sau đó load vào Autocad Bước 5: Thêm mã vào chương trình Vũ Văn Thiên 15 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 //Thêm các file Header #include "stdafx.h" #include #include //Đăng ký 2 hàm void initApp(); //Sẽ được gọi khi AutoCad load ứng dụng void unloadApp(); //Sẽ được gọi khi gỡ bỏ ứng dụng khỏi AutoCad void helloWorld(); //Hàm này thực hiện... AcDbObjectId Id; pBTR->appendAcDbEntity(Id, pLine); pBTR->close(); pLine->close(); Vũ Văn Thiên 26 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 Truy cập cơ sở dữ liệu 1.Truy cập vào các biến trạng thái Khi lấy được con trỏ tới đối tượng cơ sở dữ liệu một bản vẽ, có thể truy cập các biến trạng thái của bản vẽ bằng cách sử dụng các phương thức của lớp AcDbDatabase Adesk::Boolean fillmode() const; double... break; case AcRx::kUnloadAppMsg: unloadApp(); //Go bo ung dung break; default: break; } return AcRx::kRetOK; } Vũ Văn Thiên 17 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 Đưa Module vào trong AutoCad Khởi động AutoCad Trong Command Line gõ lệnh ap hoặc arx Ta tìm đến thư mục chứa file module Objectarx(arx hoặc dbx) rồi click vào load Vũ Văn Thiên 18 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 ObjectARX... LIMMIN … + Các bảng ký hiệu (symbol tables): trong một bản vẽ luôn có 9 bảng ký hiệu + Các dictionary (từ điển) : Trong từ điển gốc (named object dictionary), AutoCAD cho phép các chương trình ứng dụng định nghĩa các bảng ký hiệu khác ngoài các bảng do AutoCAD định nghĩa trước +Hai bảng chứa entity (MODEL _SPACE và PAPER _SPACE): Bảng MODEL_SPACE chứa các entity nằm trong không gian mô hình (model space)... acedRegCmds->removeGroup(_T("HELLOWORLD_COMMANDS")); } void helloWorld() { acutPrintf(_T("\nHello World!")); } Vũ Văn Thiên 16 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 Nhớ rằng ObjectARX là một ứng dụng DLL nên nó không có hàm main() là điểm vào AutoCAD gọi hàm acrxEntryPoint() ,module ObjectArx để truyền thông điệp đến các ứng dụng extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg:... setElevation(double elev) ; Acad::ErrorStatus setLimmin(const AcGePoint2d& limmin) ; Vũ Văn Thiên 27 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 2 Truy cập vào bảng ký hiệu(Symbol Table) Bảng ký hiệu trong cơ sở dữ liệu được biểu diễn tương ứng bằng các lớp và các bộ lặp dùng để truy cập sau Bảng Tên lớp container Tên lớp Iterator Block Layer Text style Linetype View UCS Viewport Registered applications Dimension... pLtTableRcd->close(); acutPrintf(_T("\nLinetype name is: %s"), pLtName); } delete pLtIterator; pLinetypeTbl->close(); } Vũ Văn Thiên 29 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 Các đối tượng cơ sở dữ liệu (database objects) 1.Đối tượng và ID Tương tác với các đối tượng thì ta phải thông qua OBjectID của chúng Vũ Văn Thiên 30 Cơ điện tử 1_K50 ObjectARX December 22, 20 13 2.Mở và đóng đối tượng 2.1.Mở . December 22, 20 13 ObjectARX 1 Vũ Văn Thiên Cơ điện tử 1_K50 Tổng Quan về AutoCad Phần mềm Cad đầu tiên là Sketchpad xuất hiện vào năm 1962 được. cho môi trường AutoCAD Phục vụ các hầu hết các nhu cầu cần thiết để phát triển AutoCAD : Truy cập tới cơ sở dữ liệu bản vẽ T ng tác v i AutoCad ươ ớ Editor