卜 凡,趙高輝,仲梁維,陳伊璐
(上海理工大學機械工程學院,上海200093)
隨著國家經濟以及基礎建設的高速發展,特種車輛受到越來越多的關注和重視。特種車輛在基礎建設事業中有至關重要的作用,尤其是自卸車輛,它是特種車輛中應用最為廣泛的車型,在建筑、礦山、農業生產等眾多領域扮演著極其重要的角色。自卸車輛的使用極大地縮短了裝卸時間、減小了勞動強度、節約了大量的勞動力、提高了運輸效率。
由于各個行業和客戶的要求不一致,導致同一品牌、型號的底盤,可能有多種尺寸的車廂需求。這一具有系列性的產品,絕大部分的設計工作都是基于原設計的,或者說是重復的,只有少量全新的設計。隨著社會的進步、現代科技的發展,企業圍繞產品的競爭加劇,產品的市場壽命日愈縮短,大量重復的開發工作嚴重影響產品的開發效率,浪費開發成本。本文基于Creo軟件完成的車廂三維模型,使用VB.NET語言在Microsoft Visual Studio 2008編譯環境中,利用VB API接口函數對自卸車車廂實現二次開發。這種二次開發技術具有語法規則較為簡單,非常易于掌握的特點。利用Creo提供的VB API接口函數控制三維模型的特征,較Automation GATEWY而言,功能更為強大,且與Creo可以直接進行數據交換,速度更快。
自卸車車廂設計過程具有很強的經驗性,雖然這些經驗具有不同的存在形式,而且應用的方式也有很大的差異,但是自卸車車廂設計方法的不斷改進,加之材料、力學等多門學科的理論和實際的交叉融合下,逐漸形成了較科學完整的知識體系。對自卸車車廂領域設計理論知識研究,是開發高效存儲、結構合理、易于管理的知識庫的基礎。
自卸車車廂設計知識的獲取包含隱形和顯性兩大部分。顯性知識的來源主要有:行業標準和規范、工廠調研分析、設計手冊等。隱性知識的來源主要是領域專家積累的知識和設計經驗。本文通過前期對企業的調研,擠壓模具原理的分析研究,以及與多名設計專家、工藝專家進行密切的交流,將專家寶貴的設計經驗提取出來進行分析,為知識庫的建立提供了基礎。
自卸車車廂快速設計系統以Creo設計軟件為中心,并集成自卸車車廂設計知識庫系統,提供給自卸車車廂設計工程師一個現代化、智能化的快速設計環境。
系統后臺程序是整個系統的核心,通過接口函數實現對其他程序的數據交換。利用知識庫中的知識處理設計工程師給出的設計數據,再利用處理結果,通過對Creo平臺的智能控制,修改基礎模型以及其他設計文件,最后輸出設計結果。
主要的設計工作是在Creo平臺中進行的,在快速設計系統的控制下,Creo實現打開模型、修改尺寸參數、特征關系等,完成重建后進行二維工程圖的調整優化。圖1所示為基于知識的快速設計系統運行流程。
知識庫中存儲著大量的設計知識、設計實例、生產工藝等數據,是系統智能化的保障。更多新的成功設計方案的知識增加了知識庫的設計知識,使系統更加智能,并能實現知識的沉淀。

圖1 快速設計系統運行流程
自卸車車廂快速設計系統主要包含三個部分,即滿足自卸車車廂的參數化基礎模型、用戶設計系統以及相關設計的歷史數據庫。
用戶設計系統界面是人機交互的最重要部分,用戶設計系統界面的方便簡潔與否將直接影響到用戶體驗[4]。本設計界面以遵循實際設計的過程為原則,制定了選擇自卸車底盤、選擇前板樣式、確定車廂主要尺寸三部分。為了使界面簡潔,主界面只列出了日期、設計人員、定單號以及主要參數輸入框。同時為了方便設計,系統界面設計了浮現提示圖,即當設計人員將鼠標移入車廂主要參數框內時,會自動浮現出對應尺寸提示圖。更多詳細參數在子窗口中列出。為了便于查詢,主界面中設計了一個歷史查詢子窗口以方便設計人員查詢。大部分數據根據用戶給出的條件自動計算得出,大大減少了設計者的工作量,提高了工作效率。系統界面如圖2所示。
為了使二次開發程序能成功連接到PTC Creo Parametric,必須要先設置一個新的系統環境變量PRO-COMM-MSG-EXE(見圖3),并將變量值指向可執行程序pro-comm-msg.exe所在的全路徑,該可執行程序的路徑為[2]:
[Creo-loadpoint]\<datecode>\CommonFiles\<machinetype>\obj\pro-comm-msg.exe,

圖2 系統界面

圖3 設置系統環境變量
其中,Creo loadpoint為Creo的安裝路徑;machinetype為windows系統類型,如果是32位windows系統,則machinetype是i489-nt,否則是x86e-win64。
由于VB API是需要程序通過COM組件構架進行服務交換的,因此需要對COM服務組件進行注冊。Creo自身就提供注冊COM組件的vb-api-register.bat文件,該文件路徑為:
[Creo-loadpoint]\<datecode>\Parametric\bin\obj\vb-api-register.bat
即Creo執行程序所在的路徑。COM服務成功注冊到系統后,當用戶開發的程序有調用COM服務內容的動作時,服務將會自動啟動。
新建的開發程序并不能直接調用VB API函數,而是先需要添加對Creo VB API Type Library for Creo Parametric 2.0這一COM服務組件的引用,如圖4所示。添加該COM組件后的程序,只需要導入pfcls命名空間就能正常調用VB API函數進行二次開發工作。

圖4 添加COM服務組件
VB.NET對Creo的開發只能是異步式,也就是說開發的程序不是像插件那樣集成于軟件中,而是獨立存在的可執行用戶程序[3]。程序可以通過VB API接口啟動Creo程序或者連接到其正在運行的會話中,再通過調用API函數對Creo進行數據和操作等方面的控制。在任何時候,程序只能與一個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程序的全路徑。
系統完成對Creo軟件驅動后,首先是對基礎模型進行驅動,然后對基礎模型進行數據交換與再生,完成新產品的模型設計。以上步驟的功能性代碼如下所示。
(1)驅動基礎模型
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為要驅動的模型類型,Mexe為要驅動的模型全路徑
modelS=session.RetrieveModel(sModel)modelS.Display()
(2)對基礎模型進行數據交換
Dim paramValue As IpfcParamValue
Dim param As IpfcParameter
Dim params As CpfcParameters
Dim paramUnit As Ipfc Unit
models=session.Current Model’獲取當前模型,準備讀取其參數
params=CType(model,IpfcParameterOwner).ListParams()’'獲取參數
For i=0 To params.Count-1 param=params.Item(i)
param Unit=param.Units
Select Case param.Name
Case Parameter A’選取參數賦值A
paramValue=PDUtils.createParamValue(Value,Type)’Value為要換參數A的數值
param.SetScaled Value(paramValue,paramunit)…
End Select
Next
(3)對模型進行再生得到設計模型
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工程圖中雖然包含了大量的知識信息,也方便修改,但是對于保密性較強的公司,或者要進行數據外發的時候,往往不方便使用。將圖紙輸出為絕大部分公司都能方便查閱的PDF或者DWG格式,并在格式轉換的過程中將文件名稱修改為新的設計編號,不僅能將數據壓縮,而且能方便數據的存檔和查閱。
工程圖轉換為PDF格式的代碼如下:
Dim PDFinstructions As IpfcPDFExportInstructions
PDFinstructions=(New CCpfcPDFExportInstructions).Create()
model.Export(outdir,PDFinstructions)
其中,outdir表示PDF文件輸出的全路徑,這個名稱不能超過30個字符(包括文件的pdf后綴名)。
類似的,通過API函數可以將工程圖轉換成其他多種二維圖紙格式,如轉換DXF格式,代碼如下:
Dim DXFinstructions As IpfcDXFExportInstruc-tions
DXFinstructions=(New CCpfcDXFExportInstructions).Create()
model.Export(outdir,DXFinstructions)
格式的轉換過程需要對顏色、圖層、線型和字體等根據需求進行修改,這樣的設置可以編寫導出映射文件dxf-export.pro,通過映射內容達到指定的要求。
通過VB.NET對數據庫操作是建立在ADO.NET的基礎之上的,它包含了外部應用程序對數據庫執行訪問、查詢、更新、管理等動作的必須類庫。
通過ODBC或OLE DB兩種數據提供程序都可以連接到Access數據庫。雖然ODBC相對來說出現的時間更早,但是很多應用程序仍使用ODBC連接Access、SQL Server、Oracle等數據庫,SQL Server和Oracle的舊版本以及Sybase甚至只支持ODBC這種數據訪問數據庫。OLEDB則適合于所有新版本的數據庫,對數據庫進行一般訪問時,最好選擇OLE DB方式。ODBC和OLE DB兩者有各自的命名空間,分別為System.Data.Odbc和System.Data.OleDb,在使用之前必須導入相應的命名空間。本文使用的是OLE DB數據提供程序動態連接數據庫[5]。主要功能代碼如下:
'打開數據庫
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()’執行操作
conn.Close()’關閉數據庫連接
其中connstr中定義的Source由操作的對象數據庫決定,AccStr根據操作內容編寫語句代碼。系統讀取數據庫結果如圖5所示。

圖5 數據庫運行結果
運行程序后,進行相應的底盤、前板樣式選擇以及輸入相應的參數后,點擊三維模型設計按鈕后,就會在Creo軟件中自動建立自卸車與車廂相關三維模型。圖6為本快速設計系統運行后得到的自卸車車廂設計模型。

圖6 自卸車車廂設計模型
本文通過PTC Creo提供的API接口,利用VB.NET和Creo完成了自卸車車廂的二次開發工作,使自卸車車廂這一原本復雜、重復、工作量大、易出錯的工作變得簡單、高效、準確,極大地提高了設計效率,縮短了設計周期,從而使得公司競爭力得到了較大的提高。利用Creo二次開發技術,可以使機械制造等領域提高效率,具有很多實際意義。
[1]賈禮鳳,趙高暉,仲梁維.基于模塊化的余熱鍋爐快速設計研究[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二次開發方法的再探討[J].金屬加工冷加工,2009,(13):65-67.
[4]鄺杰靈,仲梁維.基于Pro/E二次開發的微型行星齒輪快速設計系[J].機械工程與自動化,2015,03:31-32+34.
[5]甘淑娟.基于VB.NET與Access的題庫管理系統設計與實現[J].軟件導刊,2013,12(7):117-119.