杜宏艷 張雯麗 張俊 吳方正 馮賀平



摘 要:針對公司因業務需要對零件號與數模號進行了適度分離后,如何保證數模號創建時兩者的一致性和正確性等問題?本文介紹了在CATIA中基于VBA進行二次開發,實現基于零件號生成數模號并創建其三維空數據的方法,保證數模號創建時的正確性及相關屬性一致性,同時提升設計人員的工作效率。
關鍵詞:CATIA VBA 數模號 Automation 接口
Implementation and application of CAD data coding based on CATIA VBA
DU Hongyan Zhang Wenli Zhang Jun WU Fangzheng Feng Heping
Abstract:How to ensure the consistency and correctness of the two when the PartNumber and Model_Number is created, after they are properly separated thanks to companys businesss demand ?This article introduces the method of secondary development based on VBA in CATIA to generate a Model_Number based on the PartNumber and create 3D empty data, to ensure the correctness and consistency of related attributes when the Model_Number is created, and to improve the working efficiency of designers.
Key words:CATIA VBA,Model_Number,Automation,API
1 前言
根據本公司業務發展規劃和實際應用需求,研發階段的工程BOM與設計CAD進行了適度分離,并基于有對應關系但不完全相同的零件號與數模號分別在兩個系統內進行管理,因此產生了零件號與數模號在生成與發布時不同步、不一致及不繼承等問題。
基于零件號及其屬性,如何保證數模號及數模屬性創建時的正確性與一致性?本論文介紹了一種利用CATIA提供的二次開發功能,開發自動生成數模號并創建其三維空數據的程序,用自動化程序方式解決這一問題。
2 CATIA二次開發簡介
CATIA是達索公司的CAD/CAE/CAM一體化軟件。CATIA通過進程內應用程序和進程外應用程序兩種接口通信方式,提供了多種二次開發方法,如Automation API、CAA(Component Application Architecture,組件應用架構)、C++、Java API等。基于Automation API的VBA開發相對簡便且方法靈活,交換式的定制開發可以快速滿足CAD數據管理和專業設計的需求。本文正是介紹用CATIA VBA滿足正確創建數模號需求的程序。
3 設計思路及流程
3.1 總體思路
基于VBA的解決方案,工程師首先需要在公司變更系統中通過創建EWO(設計變更指令)申請零件號;然后在CATIA內基于EWO號建立搜索,通過與變更系統的接口,獲取零件號及相關屬性;最后根據數模編碼規則匹配對應的屬性,生成數模號并創建其三維空數據。
3.2 流程圖
4 關鍵技術
4.1 接口交互
本文提供的方案共涉及3次與變更系統接口的交互:
(1)以參數形式給接口傳遞EWO號,接口以文本的形式返回EWO包含的零件號及相關屬性;
(2)以文本形式給接口傳遞EWO號及零件號信息;
(3)接口以文本形式返回根據規則生成的數模號。
4.2 三維空數據創建API應用
Automation文檔結構為樹形結構,頂層Application對象下的Documents對象是Part、Product、Drawing等文檔對象的集合,文檔對象下包含子對象及方法用于操縱零件文檔[1][2]。所有接口方法都直接或間接地從頂層接口繼承,逐層定義[3]。
基于此樹形文檔結構,本文提供的方案,首先定義文檔對象PartDocument和ProductDocument,基于文檔對象,再定義Part和Product數據對象,最后分別利用其子對象和方法,完成三維空數據新建、屬性創建及屬性賦值。
5 實現過程
5.1 定義CATIA
首先定義CATIA對象, VBA程序才能連接訪問CATIA,具體如下:
Public Catia As INFITF.Application
Set Catia=GetObject(,"CATIA.Application")
If Catia Is Nothing Then
Catia= CreateObject("CATIA.Application")
End If
Set GetCATIA = Catia[1]
5.2 用戶權限
為確保使用用戶的合規性,及方便后期功能擴展,本方案設計包含用戶權限。權限結合以下兩種方式進行控制:
(1)結合本公司的域賬號管理策略,非本公司域內賬號不可使用;
(2)用戶信息基于車型項目維護在數據庫。本方案通過與數據庫交互,確認用戶是否可用。