卜 凡,趙高輝,仲梁維,陳伊璐
(上海理工大學(xué)機(jī)械工程學(xué)院,上海200093)
隨著國家經(jīng)濟(jì)以及基礎(chǔ)建設(shè)的高速發(fā)展,特種車輛受到越來越多的關(guān)注和重視。特種車輛在基礎(chǔ)建設(shè)事業(yè)中有至關(guān)重要的作用,尤其是自卸車輛,它是特種車輛中應(yīng)用最為廣泛的車型,在建筑、礦山、農(nóng)業(yè)生產(chǎn)等眾多領(lǐng)域扮演著極其重要的角色。自卸車輛的使用極大地縮短了裝卸時間、減小了勞動強(qiáng)度、節(jié)約了大量的勞動力、提高了運輸效率。
由于各個行業(yè)和客戶的要求不一致,導(dǎo)致同一品牌、型號的底盤,可能有多種尺寸的車廂需求。這一具有系列性的產(chǎn)品,絕大部分的設(shè)計工作都是基于原設(shè)計的,或者說是重復(fù)的,只有少量全新的設(shè)計。隨著社會的進(jìn)步、現(xiàn)代科技的發(fā)展,企業(yè)圍繞產(chǎn)品的競爭加劇,產(chǎn)品的市場壽命日愈縮短,大量重復(fù)的開發(fā)工作嚴(yán)重影響產(chǎn)品的開發(fā)效率,浪費開發(fā)成本。本文基于Creo軟件完成的車廂三維模型,使用VB.NET語言在Microsoft Visual Studio 2008編譯環(huán)境中,利用VB API接口函數(shù)對自卸車車廂實現(xiàn)二次開發(fā)。這種二次開發(fā)技術(shù)具有語法規(guī)則較為簡單,非常易于掌握的特點。利用Creo提供的VB API接口函數(shù)控制三維模型的特征,較Automation GATEWY而言,功能更為強(qiáng)大,且與Creo可以直接進(jìn)行數(shù)據(jù)交換,速度更快。
自卸車車廂設(shè)計過程具有很強(qiáng)的經(jīng)驗性,雖然這些經(jīng)驗具有不同的存在形式,而且應(yīng)用的方式也有很大的差異,但是自卸車車廂設(shè)計方法的不斷改進(jìn),加之材料、力學(xué)等多門學(xué)科的理論和實際的交叉融合下,逐漸形成了較科學(xué)完整的知識體系。對自卸車車廂領(lǐng)域設(shè)計理論知識研究,是開發(fā)高效存儲、結(jié)構(gòu)合理、易于管理的知識庫的基礎(chǔ)。
自卸車車廂設(shè)計知識的獲取包含隱形和顯性兩大部分。顯性知識的來源主要有:行業(yè)標(biāo)準(zhǔn)和規(guī)范、工廠調(diào)研分析、設(shè)計手冊等。隱性知識的來源主要是領(lǐng)域?qū)<曳e累的知識和設(shè)計經(jīng)驗。本文通過前期對企業(yè)的調(diào)研,擠壓模具原理的分析研究,以及與多名設(shè)計專家、工藝專家進(jìn)行密切的交流,將專家寶貴的設(shè)計經(jīng)驗提取出來進(jìn)行分析,為知識庫的建立提供了基礎(chǔ)。
自卸車車廂快速設(shè)計系統(tǒng)以Creo設(shè)計軟件為中心,并集成自卸車車廂設(shè)計知識庫系統(tǒng),提供給自卸車車廂設(shè)計工程師一個現(xiàn)代化、智能化的快速設(shè)計環(huán)境。
系統(tǒng)后臺程序是整個系統(tǒng)的核心,通過接口函數(shù)實現(xiàn)對其他程序的數(shù)據(jù)交換。利用知識庫中的知識處理設(shè)計工程師給出的設(shè)計數(shù)據(jù),再利用處理結(jié)果,通過對Creo平臺的智能控制,修改基礎(chǔ)模型以及其他設(shè)計文件,最后輸出設(shè)計結(jié)果。
主要的設(shè)計工作是在Creo平臺中進(jìn)行的,在快速設(shè)計系統(tǒng)的控制下,Creo實現(xiàn)打開模型、修改尺寸參數(shù)、特征關(guān)系等,完成重建后進(jìn)行二維工程圖的調(diào)整優(yōu)化。圖1所示為基于知識的快速設(shè)計系統(tǒng)運行流程。
知識庫中存儲著大量的設(shè)計知識、設(shè)計實例、生產(chǎn)工藝等數(shù)據(jù),是系統(tǒng)智能化的保障。更多新的成功設(shè)計方案的知識增加了知識庫的設(shè)計知識,使系統(tǒng)更加智能,并能實現(xiàn)知識的沉淀。
圖1 快速設(shè)計系統(tǒng)運行流程
自卸車車廂快速設(shè)計系統(tǒng)主要包含三個部分,即滿足自卸車車廂的參數(shù)化基礎(chǔ)模型、用戶設(shè)計系統(tǒng)以及相關(guān)設(shè)計的歷史數(shù)據(jù)庫。
用戶設(shè)計系統(tǒng)界面是人機(jī)交互的最重要部分,用戶設(shè)計系統(tǒng)界面的方便簡潔與否將直接影響到用戶體驗[4]。本設(shè)計界面以遵循實際設(shè)計的過程為原則,制定了選擇自卸車底盤、選擇前板樣式、確定車廂主要尺寸三部分。為了使界面簡潔,主界面只列出了日期、設(shè)計人員、定單號以及主要參數(shù)輸入框。同時為了方便設(shè)計,系統(tǒng)界面設(shè)計了浮現(xiàn)提示圖,即當(dāng)設(shè)計人員將鼠標(biāo)移入車廂主要參數(shù)框內(nèi)時,會自動浮現(xiàn)出對應(yīng)尺寸提示圖。更多詳細(xì)參數(shù)在子窗口中列出。為了便于查詢,主界面中設(shè)計了一個歷史查詢子窗口以方便設(shè)計人員查詢。大部分?jǐn)?shù)據(jù)根據(jù)用戶給出的條件自動計算得出,大大減少了設(shè)計者的工作量,提高了工作效率。系統(tǒng)界面如圖2所示。
為了使二次開發(fā)程序能成功連接到PTC Creo Parametric,必須要先設(shè)置一個新的系統(tǒng)環(huán)境變量PRO-COMM-MSG-EXE(見圖3),并將變量值指向可執(zhí)行程序pro-comm-msg.exe所在的全路徑,該可執(zhí)行程序的路徑為[2]:
[Creo-loadpoint]\<datecode>\CommonFiles\<machinetype>\obj\pro-comm-msg.exe,
圖2 系統(tǒng)界面
圖3 設(shè)置系統(tǒng)環(huán)境變量
其中,Creo loadpoint為Creo的安裝路徑;machinetype為windows系統(tǒng)類型,如果是32位windows系統(tǒng),則machinetype是i489-nt,否則是x86e-win64。
由于VB API是需要程序通過COM組件構(gòu)架進(jìn)行服務(wù)交換的,因此需要對COM服務(wù)組件進(jìn)行注冊。Creo自身就提供注冊COM組件的vb-api-register.bat文件,該文件路徑為:
[Creo-loadpoint]\<datecode>\Parametric\bin\obj\vb-api-register.bat
即Creo執(zhí)行程序所在的路徑。COM服務(wù)成功注冊到系統(tǒng)后,當(dāng)用戶開發(fā)的程序有調(diào)用COM服務(wù)內(nèi)容的動作時,服務(wù)將會自動啟動。
新建的開發(fā)程序并不能直接調(diào)用VB API函數(shù),而是先需要添加對Creo VB API Type Library for Creo Parametric 2.0這一COM服務(wù)組件的引用,如圖4所示。添加該COM組件后的程序,只需要導(dǎo)入pfcls命名空間就能正常調(diào)用VB API函數(shù)進(jìn)行二次開發(fā)工作。
圖4 添加COM服務(wù)組件
VB.NET對Creo的開發(fā)只能是異步式,也就是說開發(fā)的程序不是像插件那樣集成于軟件中,而是獨立存在的可執(zhí)行用戶程序[3]。程序可以通過VB API接口啟動Creo程序或者連接到其正在運行的會話中,再通過調(diào)用API函數(shù)對Creo進(jìn)行數(shù)據(jù)和操作等方面的控制。在任何時候,程序只能與一個Creo會話啟動或連接,程序運行新會話,將會丟失之前會話的連接。異步式連接啟動Creo的代碼如下。
Dim AC as IpfcAsyncConnection
Dim Cc AC as New Ccpfc AsyncConnection
AC=CcAC.Start("pro-g:no-graphics-i:rpcinput",”.”)
其中“pro-g:no-graphics-i:rpc-input”為Creo程序的全路徑。
系統(tǒng)完成對Creo軟件驅(qū)動后,首先是對基礎(chǔ)模型進(jìn)行驅(qū)動,然后對基礎(chǔ)模型進(jìn)行數(shù)據(jù)交換與再生,完成新產(chǎn)品的模型設(shè)計。以上步驟的功能性代碼如下所示。
(1)驅(qū)動基礎(chǔ)模型
Dim s Model As Ipfc ModelDescriptor’打開模型
Dim modelS As Ipfc Model
Dim CM As CCpfc ModelDescriptor
CM=New CCpfc ModelDescriptor
sModel=CMD.Create(MType,Mexe,Nothing)‘MType為要驅(qū)動的模型類型,Mexe為要驅(qū)動的模型全路徑
modelS=session.RetrieveModel(sModel)modelS.Display()
(2)對基礎(chǔ)模型進(jìn)行數(shù)據(jù)交換
Dim paramValue As IpfcParamValue
Dim param As IpfcParameter
Dim params As CpfcParameters
Dim paramUnit As Ipfc Unit
models=session.Current Model’獲取當(dāng)前模型,準(zhǔn)備讀取其參數(shù)
params=CType(model,IpfcParameterOwner).ListParams()’'獲取參數(shù)
For i=0 To params.Count-1 param=params.Item(i)
param Unit=param.Units
Select Case param.Name
Case Parameter A’選取參數(shù)賦值A(chǔ)
paramValue=PDUtils.createParamValue(Value,Type)’Value為要換參數(shù)A的數(shù)值
param.SetScaled Value(paramValue,paramunit)…
End Select
Next
(3)對模型進(jìn)行再生得到設(shè)計模型
Dim RegenInstruction As IpfcRegenInstructions
D
im Isolid As IpfcSolid
RegenInstruction=(New CCpfcRegenInstructions).Create(True,True,Nothing)
modelS=aC.Session.Current Model
Isolid=CType(model,Ipfc Assembly)
Isolid.Regenerate(RegenInstruction)’模型再生
Ipfc AsyncConnection.Session.Get ModelWindow(solid).Repaint()’窗口刷新
models.Save()保存模型
Creo工程圖中雖然包含了大量的知識信息,也方便修改,但是對于保密性較強(qiáng)的公司,或者要進(jìn)行數(shù)據(jù)外發(fā)的時候,往往不方便使用。將圖紙輸出為絕大部分公司都能方便查閱的PDF或者DWG格式,并在格式轉(zhuǎn)換的過程中將文件名稱修改為新的設(shè)計編號,不僅能將數(shù)據(jù)壓縮,而且能方便數(shù)據(jù)的存檔和查閱。
工程圖轉(zhuǎn)換為PDF格式的代碼如下:
Dim PDFinstructions As IpfcPDFExportInstructions
PDFinstructions=(New CCpfcPDFExportInstructions).Create()
model.Export(outdir,PDFinstructions)
其中,outdir表示PDF文件輸出的全路徑,這個名稱不能超過30個字符(包括文件的pdf后綴名)。
類似的,通過API函數(shù)可以將工程圖轉(zhuǎn)換成其他多種二維圖紙格式,如轉(zhuǎn)換DXF格式,代碼如下:
Dim DXFinstructions As IpfcDXFExportInstruc-tions
DXFinstructions=(New CCpfcDXFExportInstructions).Create()
model.Export(outdir,DXFinstructions)
格式的轉(zhuǎn)換過程需要對顏色、圖層、線型和字體等根據(jù)需求進(jìn)行修改,這樣的設(shè)置可以編寫導(dǎo)出映射文件dxf-export.pro,通過映射內(nèi)容達(dá)到指定的要求。
通過VB.NET對數(shù)據(jù)庫操作是建立在ADO.NET的基礎(chǔ)之上的,它包含了外部應(yīng)用程序?qū)?shù)據(jù)庫執(zhí)行訪問、查詢、更新、管理等動作的必須類庫。
通過ODBC或OLE DB兩種數(shù)據(jù)提供程序都可以連接到Access數(shù)據(jù)庫。雖然ODBC相對來說出現(xiàn)的時間更早,但是很多應(yīng)用程序仍使用ODBC連接Access、SQL Server、Oracle等數(shù)據(jù)庫,SQL Server和Oracle的舊版本以及Sybase甚至只支持ODBC這種數(shù)據(jù)訪問數(shù)據(jù)庫。OLEDB則適合于所有新版本的數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行一般訪問時,最好選擇OLE DB方式。ODBC和OLE DB兩者有各自的命名空間,分別為System.Data.Odbc和System.Data.OleDb,在使用之前必須導(dǎo)入相應(yīng)的命名空間。本文使用的是OLE DB數(shù)據(jù)提供程序動態(tài)連接數(shù)據(jù)庫[5]。主要功能代碼如下:
'打開數(shù)據(jù)庫
Dim connstr As String="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CASC.accdb"
Dim conn As New OleDbConnection(connstr)
conn.Open()
Dim mycom As New OleDbCommand
Dim AccStr As String="SELECT*FROM*"
mycom=New OleDbCommand(AccStr,conn)
cmd.ExecuteNonQuery()’執(zhí)行操作
conn.Close()’關(guān)閉數(shù)據(jù)庫連接
其中connstr中定義的Source由操作的對象數(shù)據(jù)庫決定,AccStr根據(jù)操作內(nèi)容編寫語句代碼。系統(tǒng)讀取數(shù)據(jù)庫結(jié)果如圖5所示。
圖5 數(shù)據(jù)庫運行結(jié)果
運行程序后,進(jìn)行相應(yīng)的底盤、前板樣式選擇以及輸入相應(yīng)的參數(shù)后,點擊三維模型設(shè)計按鈕后,就會在Creo軟件中自動建立自卸車與車廂相關(guān)三維模型。圖6為本快速設(shè)計系統(tǒng)運行后得到的自卸車車廂設(shè)計模型。
圖6 自卸車車廂設(shè)計模型
本文通過PTC Creo提供的API接口,利用VB.NET和Creo完成了自卸車車廂的二次開發(fā)工作,使自卸車車廂這一原本復(fù)雜、重復(fù)、工作量大、易出錯的工作變得簡單、高效、準(zhǔn)確,極大地提高了設(shè)計效率,縮短了設(shè)計周期,從而使得公司競爭力得到了較大的提高。利用Creo二次開發(fā)技術(shù),可以使機(jī)械制造等領(lǐng)域提高效率,具有很多實際意義。
[1]賈禮鳳,趙高暉,仲梁維.基于模塊化的余熱鍋爐快速設(shè)計研究[J].機(jī)械工程與自動化,2015,02:34-36.
[2]Parametric Technology Corporation.PTC Creo Parametric 3.0 VB API User’s Guide[M].USA:PTC,2014.
[3]劉 龍,朱林波.基于VB的Pro/E二次開發(fā)方法的再探討[J].金屬加工冷加工,2009,(13):65-67.
[4]鄺杰靈,仲梁維.基于Pro/E二次開發(fā)的微型行星齒輪快速設(shè)計系[J].機(jī)械工程與自動化,2015,03:31-32+34.
[5]甘淑娟.基于VB.NET與Access的題庫管理系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2013,12(7):117-119.