/

17 tháng 3, 2013

Bài 3a: Ứng dụng nhỏ nhất

Xin chào

Trong bài này chũng ta sẽ thực hành một ứng dụng ObjectARX tối thiểu mà ko sử dụng ARXWizard. Để làm được, chúng ta cùng tạo ra một dự án Visual C++ từ đầu và tiến hành một vài tùy chỉnh.
Để bắt đầu, mở Microsoft Visual C++ .NET 2002. Mở File menu, chọn NewNew Project. Hộp thoại sau sẽ xuất hiện (nhớ rằng hộp thoại đó có thể thay đổi tí chút dựa trên việc bạn đã cài đặt add-on nào):
Trong hộp thoại này, chọn cây Visual C++ Projects bên phải chọn mẫu MFC DLL. Sau đó, Xác định tên và vị trí cho dự án này. Click OK để tiếp tục.

Sau khi nhấn OK, hộp thoại sau sẽ xuất hiện. Hộp thoại này có 2 bước (trong trường hợp này. Bước thứ nhất, gọi là Tổng quan, để xác nhận những gì bạn đã nhập trước đó.
 

Nhấn chuột vào bước Application Settings, trang sau sẽ xuất hiện bên trong hộp thoại này:   

Bây giờ ta chọn MFC extension DLL là kiểu DLL phổ biến nhất để xây dựng các ứng dụng ObjectARX. Ghi nhớ là sử dụng MFC không phải là bắt buộc. Bạn vẫn có thể xây dựng ứng dụng ObjectARX mà không có MFC nhưng tôi khuyên nên dùng MFC vì có thể không dùng MFC bây giờ thì có thể trong tương lai gần bạn sẽ cần nó.
Tôi không muốn nói nhiều hơn về vấn đề kỹ thuật trong khóa học vì nó không phải trọng tâm trong. MFC là một thư viện lớn và phong phú giúp bạn đỡ mất nhiều dòng mã và làm ứng dụng an toàn và dễ quản lý. Nhấn Finish để tiếp tục.
Sau khi nhấn FinishVisual C++ sẽ tạo ra các file dự án MFC DLL với các cài đặt các tính năng cơ bản. Hãy nhớ, hãy nhớ đây là ứng dụng tối thiểu và chúng ta chỉ làm một chút xíu để sẵn sàng cho biên dịch, xây dựng và tải vào trong AutoCAD.

Môi trường Visual C++ vô cùng trực quan và tôi nghĩ rằng bạn sẽ không gặp nhiều khó khăn để học cách sử dụng nó. Về cơ bản nó có khu vực quản lý dự án (mặc định đặt bên trái), khu vực biên tập (phía bên phải) và khu vực command / monitor được đặt ngay phía dưới. Khu vực quản lý dự án sử dụng hộp thoại tab để cung cấp công cụ như Solution ExplorerResource Viewvà Class View và nhiều công cụ khác.

Lựa chọn tab Solution Explorer bạn sẽ nhìn thấy các file trong dự án, tổ chức sử dụng cây thư mục. Cửa sổ này rất hữu dụng với nhiều dự án nhưng chỉ một cái duy nhất có thể là mặc định có tên được bôi đậm.

Giờ đây ta sẽ thay đổi vài cài đặt cơ bản trên môi trường Visual Studio để cho phép ta biên dịch và liên kết ứng dụng ObjectARX. Như đã nói ở nhiều bài trước, để xây dựng một ứng dụng DDL, ta cần phải biên dịch và sử dụng các headers ObjectARX (file .H) và liên kết với thư viện ObjectARX (file .LIB). Cách đơn giản nhất là thay đổi tùy chọn toàn bộ của Visual Studio. Nó sẽ ảnh hưởng đến toàn bộ các dự án và sẽ không cần lập lại cho các dự án mới.

Mở menu Tools và chọn Options (mục dưới cùng). Hộp thoại sau sẽ xuất hiện. Chọn Projects và sau đó là VC++ Directories. Trong Show directories for, chọn Include files. Bên dưới sẽ xuất hiện một danh sách các thư mục đi kèm mà Visual Studio đã sử dụng trước đó và sẽ thêm vào đường dẫn ObjectARX inc nơi chứa các file .H. Nhấn vào biểu tượng thư mục và click vào nút elip và tìm đường dẫn inc (trong trường hợp của tôi, nó được đặt tại C:\ObjectARX 2004\inc).
 
Đừng nhấn OK. Bây giờ ta cần phải thêm thư mục file thư viện. chọn Library files bên trong trường Show directories for. Lặp lại thủ tục trên để thêm đường dẫn nhưng lần này là đường dẫn thư viện lib (với trường hợp của tôi, C:\ObjectARX 2004\lib). Click OK để kết thúc.
  
Bây giờ ta cần phải định hình cho dự án. Việc này sẽ đòi hỏi thay đổi và cài đặt dự án với một vài dòng mã. Đầu tiên, ta sẽ thay đổi cài đặt của dự án. Click chuột phải vào tên dự án project name bên trong Solution Explorer và chọn Properties. Hộp thoại sau xuất hiện. Chọn ConfigurationAll Configurations. Việc đó cho phép thay đổi cài đặt cả Debug* và Release* cùng một lúc.

Bên trong Configuration Properties, chọn C/C++ và Code Generation. Phần bên phải của hộp thoại sẽ hiển thị danh sách của một vài thuộc tính. Chọn mục Runtime Library và thay đổi giá trị sang Multi-threaded DLL. Điều này là cần thiết để làm DLL tương thích với môi trường AutoCAD.

Bây giờ hãy chọn nhánh Linker và General. Trong mục Output File thay đổi tên mở rộng từ DLL sang ARX. Nhớ răng Visual Studio sử dụng vài macro (những cái tên bắt đầu bằng $) cho phép định hình đường dẫn một cách linh hoạt và đơn giản.
Vẫn bên trong nhánh Linker, chọn Input. Ở đây ta sẽ thêm vào các loại thư viện cho ứng dụng. Cái đó phụ thuộc vào loại đặc tính nào được sử dụng bên trong ứng dụng ObjectARX. Trong trường hợp này, ta chỉ thêm vào 2 thư viện cơ bản là rxapi.lib và acdb16.lib.

Lựa chọn mục Additional Dependencies và nhấn vào nút elip. Nhập 2 file đề cập bên trên vào. Các thư viện này được đặt trong thư mục lib. Nhớ lại trong bài học trước tôi đã nói về các đặc tính bên trong mỗi thư viện.
Nhấn OK để đóng hộp thoại Project Properties. Bây giờ chúng ta vẫn cần tạo vài đoạn mã. Bước đầu tiên là chỉnh sửa file DEF đặt trong thư mục Source Files của dự án (Solution Explorer). Nháy đúp vào DEF file và nó sẽ xuất hiện trong cửa sổ phải của Visual Studio. Ta cần phải thêm vài dòng, bên dưới phần EXPORTS của file:
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE

Hãy chú ý một chút vào cái tên giữa những lời chú thích ở trước phần LIBRARYcủa file. Tên phải giống với tên mà bạn nhập trong file đầu ra. Một ví dụ, nếu tên dự án là ABCD.arx thì cần phải có LIBRARY "ABCD" bên trong file DEF.

Bước kế tiếp là thay đổi file StdAfx.h – là chìa khóa để biên soạn. Chúng ta cần phải tìm hiểu thông tin về Visual Studio để sử dụng phiên bản thư viện MFC khi dự án được biên dịch sử dụng chỉ thị DEBUG.

Để làm điều đó, mở file StdAfx.h trong thư mục Header Files trong Solution Explorer. Trước dòng

#if defined(_DEBUG) && !defined(_FULLDEBUG_)
#define _DEBUG_WAS_DEFINED
#undef _DEBUG
#pragma
message (" Compiling MFC header files in release mode.")
#endif
Bây giờ hãy kéo xuống cuối file và thêm những dòng sau để quản lý biểu tượng _DEBUG để bao gồm các file .H cơ bản mà ứng dụng của ta sử dụng:
#ifdef _DEBUG_WAS_DEFINED
#define _DEBUG
#undef _DEBUG_WAS_DEFINED
#endif

// ObjectARX Includes
#include "rxregsvc.h"
#include "acutads.h"
Bước cuối cùng là thêm phương thức acrxEntryPoint điểm bắt đầu của ứng dụng. Mở file CPP trong ứng dụng mà trùng tên bạn đặt cho ứng dụng có đuôi mở rộng CPP. Nó nằm trong thư mục Source Files. Mở nó ra và kéo xuống dưới cùng. Thêm những dòng sau đây:

// ObjectARX ENTRYPOINT
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* appId){

switch(msg) {
case AcRx::kInitAppMsg:
acrxUnlockApplication(appId);
acrxRegisterAppMDIAware(appId);
acutPrintf(_T("\nMinimum ObjectARX application loaded!"));
break;
case AcRx::kUnloadAppMsg:
acutPrintf(_T("\nMinimum ObjectARX application
unloaded!"));
break;
}
return AcRx::kRetOK;
}

Bây giờ ta đã sẵn sàng để xây dựng ứng dụng. Mở menu Build và lựa chọn Build Solution (nhấn F7). Visual Studio sẽ biên dịch, liên kết và xây dựng dự án. Nếu bạn làm theo tất cả các bước trên một cách cẩn thận thì ứng dụng tạo ra ko gặp lỗi.
Khởi động AutoCAD và chạy lệnh APPLOAD, hộp thoại sau hiện ra. Duyệt tới dự án bạn sẽ tìm thấy ứng dụng bên trong thư mục Debug là nơi biên dịch mặc định. Chọn nó và nhấn nút Load. Một thông điệp sẽ xuất hiện ở phía dưới trong hộp thoại nói rằng ứng dụng ARX đã được tải thành công hay không! 

Vậy đó, ứng dụng ObjectARX dầu tiên của bạn đã được tải và chạy bên trong AutoCAD!
Bài tiếp theo ta sẽ học cách sử dụng Phù thủy ARXWizard. Hãy  tiếp tục theo dõi nhé!

 Link nguồn: Arxdummies





Không có nhận xét nào:

Đăng nhận xét