杜宏艷 張?chǎng)悺埧 欠秸●T賀平
摘 要:針對(duì)公司因業(yè)務(wù)需要對(duì)零件號(hào)與數(shù)模號(hào)進(jìn)行了適度分離后,如何保證數(shù)模號(hào)創(chuàng)建時(shí)兩者的一致性和正確性等問題?本文介紹了在CATIA中基于VBA進(jìn)行二次開發(fā),實(shí)現(xiàn)基于零件號(hào)生成數(shù)模號(hào)并創(chuàng)建其三維空數(shù)據(jù)的方法,保證數(shù)模號(hào)創(chuàng)建時(shí)的正確性及相關(guān)屬性一致性,同時(shí)提升設(shè)計(jì)人員的工作效率。
關(guān)鍵詞:CATIA VBA 數(shù)模號(hào) 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 前言
根據(jù)本公司業(yè)務(wù)發(fā)展規(guī)劃和實(shí)際應(yīng)用需求,研發(fā)階段的工程BOM與設(shè)計(jì)CAD進(jìn)行了適度分離,并基于有對(duì)應(yīng)關(guān)系但不完全相同的零件號(hào)與數(shù)模號(hào)分別在兩個(gè)系統(tǒng)內(nèi)進(jìn)行管理,因此產(chǎn)生了零件號(hào)與數(shù)模號(hào)在生成與發(fā)布時(shí)不同步、不一致及不繼承等問題。
基于零件號(hào)及其屬性,如何保證數(shù)模號(hào)及數(shù)模屬性創(chuàng)建時(shí)的正確性與一致性?本論文介紹了一種利用CATIA提供的二次開發(fā)功能,開發(fā)自動(dòng)生成數(shù)模號(hào)并創(chuàng)建其三維空數(shù)據(jù)的程序,用自動(dòng)化程序方式解決這一問題。
2 CATIA二次開發(fā)簡(jiǎn)介
CATIA是達(dá)索公司的CAD/CAE/CAM一體化軟件。CATIA通過進(jìn)程內(nèi)應(yīng)用程序和進(jìn)程外應(yīng)用程序兩種接口通信方式,提供了多種二次開發(fā)方法,如Automation API、CAA(Component Application Architecture,組件應(yīng)用架構(gòu))、C++、Java API等。基于Automation API的VBA開發(fā)相對(duì)簡(jiǎn)便且方法靈活,交換式的定制開發(fā)可以快速滿足CAD數(shù)據(jù)管理和專業(yè)設(shè)計(jì)的需求。本文正是介紹用CATIA VBA滿足正確創(chuàng)建數(shù)模號(hào)需求的程序。
3 設(shè)計(jì)思路及流程
3.1 總體思路
基于VBA的解決方案,工程師首先需要在公司變更系統(tǒng)中通過創(chuàng)建EWO(設(shè)計(jì)變更指令)申請(qǐng)零件號(hào);然后在CATIA內(nèi)基于EWO號(hào)建立搜索,通過與變更系統(tǒng)的接口,獲取零件號(hào)及相關(guān)屬性;最后根據(jù)數(shù)模編碼規(guī)則匹配對(duì)應(yīng)的屬性,生成數(shù)模號(hào)并創(chuàng)建其三維空數(shù)據(jù)。
3.2 流程圖
4 關(guān)鍵技術(shù)
4.1 接口交互
本文提供的方案共涉及3次與變更系統(tǒng)接口的交互:
(1)以參數(shù)形式給接口傳遞EWO號(hào),接口以文本的形式返回EWO包含的零件號(hào)及相關(guān)屬性;
(2)以文本形式給接口傳遞EWO號(hào)及零件號(hào)信息;
(3)接口以文本形式返回根據(jù)規(guī)則生成的數(shù)模號(hào)。
4.2 三維空數(shù)據(jù)創(chuàng)建API應(yīng)用
Automation文檔結(jié)構(gòu)為樹形結(jié)構(gòu),頂層Application對(duì)象下的Documents對(duì)象是Part、Product、Drawing等文檔對(duì)象的集合,文檔對(duì)象下包含子對(duì)象及方法用于操縱零件文檔[1][2]。所有接口方法都直接或間接地從頂層接口繼承,逐層定義[3]。
基于此樹形文檔結(jié)構(gòu),本文提供的方案,首先定義文檔對(duì)象PartDocument和ProductDocument,基于文檔對(duì)象,再定義Part和Product數(shù)據(jù)對(duì)象,最后分別利用其子對(duì)象和方法,完成三維空數(shù)據(jù)新建、屬性創(chuàng)建及屬性賦值。
5 實(shí)現(xiàn)過程
5.1 定義CATIA
首先定義CATIA對(duì)象, 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 用戶權(quán)限
為確保使用用戶的合規(guī)性,及方便后期功能擴(kuò)展,本方案設(shè)計(jì)包含用戶權(quán)限。權(quán)限結(jié)合以下兩種方式進(jìn)行控制:
(1)結(jié)合本公司的域賬號(hào)管理策略,非本公司域內(nèi)賬號(hào)不可使用;
(2)用戶信息基于車型項(xiàng)目維護(hù)在數(shù)據(jù)庫。本方案通過與數(shù)據(jù)庫交互,確認(rèn)用戶是否可用。