陳伊璐,沈景鳳,仲梁維,卜 凡
(上海理工大學(xué)機(jī)械工程學(xué)院,上海200093))
隨著科技的發(fā)展和市場(chǎng)競(jìng)爭(zhēng)的加劇,大量的重復(fù)勞作嚴(yán)重影響產(chǎn)品的開(kāi)發(fā)效率。產(chǎn)品的更新?lián)Q代速度加快使得配套模具生命周期縮短,而傳統(tǒng)模具設(shè)計(jì)方法耗時(shí)長(zhǎng)、設(shè)計(jì)人員工作量大。因此,模具快速設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)能有效彌補(bǔ)這些缺點(diǎn),提高模具幾何模型設(shè)計(jì)和工程圖繪制的效率。知識(shí)工程(KBE)是一種主動(dòng)的知識(shí)獲取與集成過(guò)程,即具有“自我生成”的知識(shí)繁衍機(jī)制,將知識(shí)工程應(yīng)用于快速設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)過(guò)程中,能解決目前參數(shù)化快速設(shè)計(jì)的諸多不足[1]。
Pro/E二次開(kāi)發(fā)是借助第三方語(yǔ)言環(huán)境,通過(guò)Pro/E提供的接口工具,調(diào)用其底層函數(shù)和頭文件資源庫(kù),以此來(lái)實(shí)現(xiàn)面向特定用戶(hù)的快速設(shè)計(jì)系統(tǒng)。傳統(tǒng)Pro/E二次開(kāi)發(fā)大多采用以C語(yǔ)言為編譯環(huán)境的Pro/TOOLKIT[2]。Pro/Engineer Wildfire 4.0及以上的版本新增VB.NET的接口函數(shù),VB.NET簡(jiǎn)單易學(xué)的特點(diǎn)使得用戶(hù)無(wú)需借助第三方工具即可直接進(jìn)行編程,節(jié)省程序開(kāi)發(fā)時(shí)間。
本設(shè)計(jì)基于Pro/E提供的VBAPI接口函數(shù),結(jié)合系統(tǒng)后臺(tái)推理機(jī)實(shí)現(xiàn)設(shè)計(jì)經(jīng)驗(yàn)知識(shí)的應(yīng)用。該快速設(shè)計(jì)系統(tǒng)主要包含三個(gè)部分:符合要求的桿件模具的參數(shù)化模型,用戶(hù)設(shè)計(jì)系統(tǒng)和設(shè)計(jì)數(shù)據(jù)庫(kù)。整個(gè)快速設(shè)計(jì)系統(tǒng)的框架如圖1所示。
圖1 快速設(shè)計(jì)系統(tǒng)整體框架
參數(shù)化模型的建立是在Pro/E中完成,建模過(guò)程中的約束、關(guān)系、參數(shù)的創(chuàng)建都與擠壓模具的設(shè)計(jì)知識(shí)庫(kù)息息相關(guān),貫穿整個(gè)系統(tǒng)開(kāi)發(fā)的過(guò)程。用戶(hù)設(shè)計(jì)系統(tǒng)包括用戶(hù)使用界面和后臺(tái)程序,是整個(gè)系統(tǒng)的核心,以VB.NET為編程語(yǔ)言搭建的系統(tǒng)交互界面為設(shè)計(jì)平臺(tái),通過(guò)接口函數(shù)實(shí)現(xiàn)對(duì)其他程序的數(shù)據(jù)交換。
開(kāi)發(fā)流程根據(jù)系統(tǒng)框架而定,依據(jù)上文所述,基于知識(shí)的擠壓模具快速設(shè)計(jì)系統(tǒng)開(kāi)發(fā)流程主要分為三個(gè)步驟:設(shè)計(jì)數(shù)據(jù)庫(kù)搭建、參數(shù)化模型建立和用戶(hù)系統(tǒng)設(shè)計(jì)。開(kāi)發(fā)流程如圖2所示。
圖2 快速設(shè)計(jì)系統(tǒng)開(kāi)發(fā)流程
本文主要研究面向企業(yè)定制的快速設(shè)計(jì)系統(tǒng)——復(fù)合材料桿件擠壓模具快速設(shè)計(jì),采用的是基于知識(shí)工程的快速設(shè)計(jì),通過(guò)設(shè)計(jì)知識(shí)庫(kù)中的設(shè)計(jì)知識(shí)、經(jīng)驗(yàn)公式、設(shè)計(jì)標(biāo)準(zhǔn)等內(nèi)容連接到幾何模型,對(duì)其進(jìn)行設(shè)計(jì)。針對(duì)不同模具的類(lèi)型和尺寸,經(jīng)過(guò)大量的模具設(shè)計(jì)經(jīng)驗(yàn),由提取的知識(shí)規(guī)則而編制的選取原則,快速匹配零件參數(shù),自動(dòng)重生零件實(shí)體,進(jìn)而生成模具。
設(shè)計(jì)數(shù)據(jù)庫(kù)包含相關(guān)設(shè)計(jì)知識(shí)庫(kù)和基礎(chǔ)設(shè)計(jì)數(shù)據(jù)庫(kù)。基礎(chǔ)數(shù)據(jù)的選擇和建立需要考慮系統(tǒng)復(fù)雜程度和用戶(hù)所需參數(shù)化程度等因素,在實(shí)現(xiàn)功能的前提下力求系統(tǒng)簡(jiǎn)潔。以復(fù)合材料方桿快速設(shè)計(jì)系統(tǒng)為例,基礎(chǔ)數(shù)據(jù)包括方桿的基本參數(shù)(長(zhǎng)度、寬度和厚度)和技術(shù)參數(shù)(設(shè)計(jì)者、設(shè)計(jì)日期及編號(hào))。
相關(guān)設(shè)計(jì)知識(shí)庫(kù)的搭建較為復(fù)雜,需要系統(tǒng)設(shè)計(jì)人員與模具設(shè)計(jì)人員交流溝通,獲取相關(guān)設(shè)計(jì)知識(shí)并進(jìn)行組織和規(guī)范化,以適當(dāng)表達(dá)形式存放于知識(shí)庫(kù)中。擠壓模具設(shè)計(jì)系統(tǒng)所設(shè)計(jì)的零件參數(shù)、特征、位置和尺寸聯(lián)系,可分別以表格、公式等形式體現(xiàn)。圖3為系統(tǒng)的固定板知識(shí)規(guī)則表,修改表中的知識(shí)并保存后,新的設(shè)計(jì)方案將按照新的規(guī)則進(jìn)行得到推理結(jié)果。
圖3 固定板的知識(shí)規(guī)則表
基于Pro/E二次開(kāi)發(fā)的參數(shù)化模型可以將部分設(shè)計(jì)知識(shí)集成于桿件模具的三維模型、特征和裝配中,并通過(guò)關(guān)系、參照和約束等方法提高知識(shí)的利用率。如某些簡(jiǎn)單且不會(huì)改變的知識(shí)元,可以在模型建立的時(shí)候使用幾何約束固化該知識(shí)。
(1)三維模型
一些經(jīng)驗(yàn)公式和設(shè)計(jì)規(guī)則無(wú)法通過(guò)簡(jiǎn)單的幾何約束表達(dá),此時(shí)可將規(guī)范化后的設(shè)計(jì)知識(shí)參數(shù)化,并集成在Pro/E的零件及裝配體中,使得設(shè)計(jì)結(jié)果有效可靠。基于知識(shí)工程的擠壓模具快速設(shè)計(jì)系統(tǒng)中的部分模芯關(guān)系如圖4所示,其中M-NAME、M-MATERIAL和DESIGN-ID等參數(shù)可根據(jù)用戶(hù)需求自行設(shè)定,既可在Pro/E的關(guān)系中使用,也用于系統(tǒng)界面輸入和后臺(tái)程序賦值[3]。
圖4 模芯的關(guān)系和參數(shù)
(2)二維工程圖模板
Pro/E軟件繪制的工程圖中的視圖都是基于三維模型的投影來(lái)建立的,視圖對(duì)模型的所有細(xì)節(jié)都有精確的體現(xiàn),理論上這樣的工程圖繪制是完全準(zhǔn)確的。但在實(shí)際的工程制圖中,為方便理解和繪制,會(huì)增加很多簡(jiǎn)化的畫(huà)法和特殊規(guī)定的表示。比如當(dāng)剖面經(jīng)過(guò)螺紋孔的時(shí)候,只希望孔所在的零部件上填充剖面線而螺釘不填充,甚至直接將螺釘省去不繪制。因此在自定義圖框的基礎(chǔ)上建立合理的、符合設(shè)計(jì)要求的工程圖模型后,需要再根據(jù)國(guó)標(biāo)、航標(biāo)和企標(biāo)對(duì)工程圖細(xì)節(jié)部分進(jìn)行調(diào)整修改以達(dá)到美觀的效果。
為將工程圖達(dá)到滿(mǎn)足企業(yè)設(shè)計(jì)標(biāo)準(zhǔn)的水平,使用了很多參數(shù)控制、位置約束、視圖修整、比例調(diào)整等方法[4]。如使用捕捉線定位尺寸、注釋?zhuān)恍薷囊晥D原點(diǎn)控制視圖位置;修改圖層區(qū)別不同類(lèi)型的圖元等。
在復(fù)合材料擠壓模具快速設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)中,本文采用了Microsoft Visual Studio 2008平臺(tái)中VB.NET作為開(kāi)發(fā)語(yǔ)言,可以在 Windows XP和 Windows7等操作系統(tǒng)中運(yùn)行。開(kāi)發(fā)對(duì)象則選用的是Pro/E Wildfire5.0以及AutoCAD 2010。利用VB.net語(yǔ)言搭建系統(tǒng)程序?qū)ro/E、Access、AutoCAD的二次開(kāi)發(fā)來(lái)實(shí)現(xiàn)各軟件之間的集成。
用戶(hù)設(shè)計(jì)系統(tǒng)包括用戶(hù)使用界面和后臺(tái)程序,使用界面如圖5所示。界面加載的過(guò)程中,系統(tǒng)會(huì)從設(shè)計(jì)案例庫(kù)中讀取歷史的設(shè)計(jì)者,并將設(shè)計(jì)者的信息寫(xiě)入到對(duì)應(yīng)的可選文本框中,方便設(shè)計(jì)工程師選擇。使用快速設(shè)計(jì)系統(tǒng)設(shè)計(jì)成功的案例,會(huì)被記錄到數(shù)據(jù)庫(kù)當(dāng)中,通過(guò)界面的“查詢(xún)歷史設(shè)計(jì)”就能進(jìn)入查詢(xún)系統(tǒng)。
圖5 擠壓模具快速設(shè)計(jì)系統(tǒng)使用界面
經(jīng)過(guò)對(duì)設(shè)計(jì)知識(shí)的整理以及對(duì)設(shè)計(jì)需求的分析,本設(shè)計(jì)系統(tǒng)主要修改的信息為需要該擠壓模具進(jìn)行生產(chǎn)的產(chǎn)品的參數(shù)信息,比如產(chǎn)品寬度、高度、長(zhǎng)度、壁厚情況、倒角情況。參數(shù)輸入完成后點(diǎn)擊“三維模具設(shè)計(jì)”按鈕,設(shè)計(jì)系統(tǒng)就會(huì)根據(jù)集成的該類(lèi)型模具的設(shè)計(jì)知識(shí)數(shù)據(jù)庫(kù)和推理機(jī)進(jìn)行推理分析,自動(dòng)檢測(cè)參數(shù)是否合理,過(guò)程中會(huì)彈出相應(yīng)的提醒對(duì)話框,如圖6所示。
圖6 設(shè)計(jì)過(guò)程中的部分提示框
通過(guò)數(shù)據(jù)檢測(cè)之后,系統(tǒng)運(yùn)行Pro/E開(kāi)始正式的設(shè)計(jì)過(guò)程。按鈕“導(dǎo)出設(shè)計(jì)文檔”用于導(dǎo)出設(shè)計(jì)完成后的所有二維設(shè)計(jì)文檔。
通過(guò)VB API的開(kāi)發(fā)程序只能是異步式的,簡(jiǎn)單異步模式啟動(dòng)Pro/E和打開(kāi)模型的主要代碼如下[5]。其中,Path為Pro/E執(zhí)行程序的全路徑;WD為程序啟動(dòng)后期望的工作路徑;Model Type為將要打開(kāi)的模型類(lèi)型;ModelName為模型的全路徑。
Dim newCon As Ipfc AsyncConnection=Nothing
Dim c AC As CCpfc AsyncConnection
Dim se As IpfcBaseSession
c AC=New CCpfc AsyncConnection
newCon=c AC.Start(Path,".")
se=asyncConnection.Session
newCon.Session.ChangeDirectory(WD)
Dim new Model As Ipfc ModelDescriptor
Dim model As Ipfc Model
Dim CMD As CCpfc ModelDescriptor
CMD=New CCpfc ModelDescriptor
new Model=CMD.Create(Model Type,ModelName,Nothing)
model=se.RetrieveModel(new Model)
model.Display()
模型中的參數(shù)有零件、特征、繼承等類(lèi)型,數(shù)量繁多,因此通過(guò)循環(huán)語(yǔ)句,如For…Next循環(huán)的語(yǔ)句進(jìn)行檢索判斷,獲取目標(biāo)參數(shù),進(jìn)行修改[6]。以下是循環(huán)修改模型參數(shù)的主要代碼:
Dim param Val As IpfcParam Value
Dim param As IpfcParameter
Dim params As CpfcParameters
Dim paramUnit As Ipfc Unit
Dim model As Ipfc Model
model=session.Current Model
params=CType(model,IpfcParameterOwner).ListParams()
For i=0 To params.Count-1
param=params.Item(i)
paramUnit=param.Units
Select Case param.Name
Case Parameter A
paramVal=PDUtils.createParamValue(Value,Type)
param.SetScaled Value(paramValue,paramunit)
Case Parameter B
paramVal=PDUtils.createParamValue(Value,Type)
param.SetScaled Value(param Value,paramunit)
…
End Select
Next
其中Parameter X為需要修改的目標(biāo)參數(shù);PDU-tils為自定義類(lèi),通過(guò)CMpfc ModelItem接口修改參數(shù)值;Value和Type分別為期望修改的參數(shù)值和參數(shù)類(lèi)型。
修改完成后的模型需要再生、保存。裝配體再生的主要代碼如下:
Dim regInstr As IpfcRegenInstructions
Dim solid As IpfcSolid
regInstr= (New CCpfcRegenInstructions).Create(True,True,Nothing)
model=aC.Session.Current Model
solid=CType(model,Ipfc Assembly)
solid.Regenerate(regInstr)
Ipfc AsyncConnection.Session.Get ModelWindow(solid).Repaint()
model.Save()
隨著復(fù)合材料的廣泛應(yīng)用,各個(gè)企業(yè)都迫切地希望通過(guò)提高設(shè)計(jì)效率以達(dá)到降低企業(yè)成本、提高企業(yè)綜合競(jìng)爭(zhēng)力的目的,使得現(xiàn)代化快速設(shè)計(jì)系統(tǒng)成為重要發(fā)展趨勢(shì)。鑒于個(gè)人能力水平的限制,系統(tǒng)功能的實(shí)現(xiàn)方法和研究范圍還有待于更深入的研究。如知識(shí)集成的建模方法將部分知識(shí)固化在模型當(dāng)中,隨著設(shè)計(jì)技術(shù)的更新,如果有固化知識(shí)的準(zhǔn)則變更,設(shè)計(jì)工程師需要對(duì)模型模板進(jìn)行修改,降低了系統(tǒng)靈活性。
[1]何利民,郭 力.鈦合金磨削加工研究的進(jìn)展[J].精密制造與自動(dòng)化,2008,(2):8-13.
[2]李如忠.Pro/Toolkit快速開(kāi)發(fā)方法研究[J].信息技術(shù),2014,10:121-124+133.
[3]張繼春.Pro/ENGINEER二次開(kāi)發(fā)實(shí)用教程[M].北京:北京大學(xué)出版社,2003.
[4]劉 龍,朱林波.基于VB.NET的Pro/E二次開(kāi)發(fā)關(guān)鍵技術(shù)[J].現(xiàn)代制造工程,2008,(10):63-65.
[5]Parametric Technology Corporation.Pro/ENGINEER Wildfire 5.0 VB API User’s Guide[M].USA:PTC,2010.
[6]黃 愷,李 雷,劉 杰.Pro/E參數(shù)化設(shè)計(jì)高級(jí)應(yīng)用教程[M].北京:化學(xué)工業(yè)出版社,2008.