林立
(黑龍江信息技術職業學院,黑龍江 哈爾濱 150086)
在進行二次開發的過程中,需要創建一個新線程,執行一些操作,而CAA并沒有提供多線程的方法,這樣就需要使用DLL,在DLL創建新線程實現這個操作。
DLL和CAA介紹
DLL:DLL 是 Dynamic Link Library的縮寫,意為動態鏈接庫。
程序使用 DLL的優點
(1)使用較少的資源
當多個程序使用同一個函數庫時,DLL可以減少在磁盤和物理內存中加載的代碼的重復量。這不僅可以大大影響在前臺運行的程序,而且可以大大影響其他在 Windows操作系統上運行的程序。
(2)推廣模塊式體系結構
DLL有助于促進模塊式程序的開發。這可以幫助您開發要求提供多個語言版本的大型程序或要求具有模塊式體系結構的程序。模塊式程序的一個示例是具有多個可以在運行時動態加載的模塊的計帳程序。
DLL有兩種類型,當在應用程序中加載DLL時,可以使用兩種鏈接方法來調用導出的DLL函數。這兩種鏈接方法是加載時動態鏈接和運行時動態鏈接。
在加載時動態鏈接中,應用程序像調用本地函數一樣對導出的 DLL函數進行顯式調用。要使用加載時動態鏈接,請在編譯和鏈接應用程序時提供頭文件 (.h)和導入庫文件 (.lib)。當您這樣做時,鏈接器將向系統提供加載 DLL所需的信息,并在加載時解析導出的 DLL函數的位置。
根據對兩種類型的了解,結合CATIA的開發包CAA開發語言的特點,選擇了第一種加載時動態鏈接。
CAA:Component Application Architecture(CAA)組件應用架構,是第三方產品集成和一般客戶進行客戶化、個性化設計的強有力的工具。
CATIA(Computer Aided Three&Two Dimensional Interaction Application System,計算機輔助三維/二維交互式應用系統)V5是IBM/DS基于Windows核心開發的高端CAD/CAM軟件系統。作為強大的工程軟件,CATIA具有很強的開放性能。用戶可以按照自己的需要,采用不同方式進行各種程度上的開發。
二次開發:二次開發,簡單的說就是在現有的軟件上進行定制修改,功能的擴展,然后達到自己想要的功能,一般來說都不會改變原有系統的內核。
具體來說,CATIA的二次開發主要有兩種方法:使用宏對CATIA進行二次開發和使用組件應用架構(CAA-RADE)對CATIA進行二次開發。
(1)使用宏(Macro)對CATIA進行二次開發。
可以用于自動化(Automation)組件,使用VBScript作為編輯工具,這是一種交互方式的定制??梢杂涗浻脩舻牟僮鬟^程,自動生成代碼。CATIA提供了Automation API用于VBScript對CATIA的二次開發,Automation API具備了與任何OLE所兼容的平臺進行通訊能力。自動化應用接口可以調用“InputBox”和“MsgBox”函數獲取用戶輸入信息和進行輸出,而對于NT用戶則可以應用Visual Basic來定義更為復雜的輸入輸出面板。運行的時候可以給宏關聯一個圖標,并置入CATIA顯示框架。
(2)使用組件應用架構(CAA-RADE)對CATIA進行二次開發,CAA組件應用架構,是Dassault Systemes產品擴展和客戶進行二次開發的強有力工具。
快速應用研發環境Rapid Application Development Environment(RADE)是一個可視化的集成開發環境,它提供完整的編程工具組。RADE以Microsoft Visual C++6.0為載體,開發工具完全集成在了VC++環境中,并且提供了一個CAA框架程序編譯器,但同時也限制了VC++的部分功能。可以說CATIA CAA-RADE是目前所有高端CAD/CAM開發環境中最為復雜、同時也是功能最為強大的一個。
CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型(COM)和對象的連接和嵌入(OLE)技術。
創建DLL的步驟
第一步:運行AppWizard,定義項目名為mydll,選擇 MFC AppWizard(dll)。
第二步:在這個例子中,只有一個AppWizard屏幕出現,選擇MFC擴展DLL(MFC Extension DLL(using shared MFC DLL),點擊 FINISH生成工程。
第三步:創建導出函數


(1)創建一個文件夾,將動態鏈接庫導出.h文件和Lib文件放入該文件夾。
(2)在CAA的.mkmk文件中加入提供頭文件 (.h)和導入庫文件 (.lib)

(3)在CAA程序使用該導出函數的類中添加頭文件,即可使用導出函數。
動態鏈接庫在軟件中很常見,它的優點注定它是程序員的最愛。在CATIA的二次開發中還有很多情況使用DLL,比如說訪問數據庫,CAA沒有訪問數據庫的接口,這樣就需要使用DLL讀取數據庫的內容,與CATIA進行交互。對于CATIA的用戶來講,有了更多的使用空間。
[1]《Visual c++6.0編程寶典》,電子工業出版社,[美]David Simon等著。
[2]《c++How To Program(Second Edition)》,電子工業出版社,Harvey M.Deitel、paul James Deitel著。