于曉
YU Xiao
大連傳森科技有限公司 遼寧大連 116600
Dalian Transen Technology Co.,Ltd. Dalian 116000
家電產(chǎn)品開發(fā)過程中,為了滿足各類人群的不同需求,在主型號設(shè)計完成并通過驗證后,還需設(shè)計基于已完成產(chǎn)品的子類型(系列)產(chǎn)品,即結(jié)構(gòu)原理相同,而關(guān)鍵尺寸不同的產(chǎn)品。每次都需要結(jié)構(gòu)設(shè)計人員根據(jù)要求重新設(shè)計,這樣不僅會浪費產(chǎn)品上市的寶貴時間,也會造成設(shè)計資源的大量浪費。是否可以設(shè)計出一個模型,當產(chǎn)品關(guān)鍵參數(shù)確定后,不需要結(jié)構(gòu)設(shè)計人員再浪費時間在結(jié)構(gòu)設(shè)計上,而是由計算機根據(jù)之前的模型,重新生成一個新產(chǎn)品,以縮短產(chǎn)品的開發(fā)周期,節(jié)約上市等待時間呢?在此背景下,筆者結(jié)合現(xiàn)有設(shè)計軟件功能,進行了家電系列化全參數(shù)自動設(shè)計的探索。
首先需要對產(chǎn)品進行分析,確定可變參數(shù),并在裝配零件的表達式中建立可變參數(shù),之后建立全參數(shù)化的單個零件,并在建立過程中應(yīng)用C++語言的類思想,嚴格規(guī)定本零件的接口參數(shù),通過零件之間的參數(shù)引用方法,將裝配件中的參數(shù)引入單個零件中,這樣,當改變裝配根部件中的表達式參數(shù)時,零件就會按預先的表達式進行改變。將這種方法應(yīng)用到產(chǎn)品不同級別的所有零件上,當改變裝配根部件中表達式的參數(shù)時,所有與此參數(shù)關(guān)聯(lián)的零件都將按預先設(shè)計的規(guī)則變化,最終一個系列產(chǎn)品的新型號便產(chǎn)生了。之后對新生成的模型進行參數(shù)修正,通過菜單工具按鈕,快速生成后期生產(chǎn)、采購所需數(shù)據(jù)[1]。
模板創(chuàng)建、產(chǎn)品整體參數(shù)輸入界面創(chuàng)建、產(chǎn)品模型發(fā)布、產(chǎn)品屬性參數(shù)輸入、及產(chǎn)品BOM發(fā)布實現(xiàn)的過程如下:
以使用大門的裝配體為例,此類裝配體門的變化參數(shù)主要有長、寬、高、開門數(shù)量、開門方向、連接方式等,因此將這些因素作為門的輸入?yún)?shù)。門的橫梁變化的參數(shù)主要有型材的長、寬、高,其中的長一定是與父裝配中的寬有關(guān),因此將這些參數(shù)作為子部件的輸入?yún)?shù),同時把橫梁的長與父裝配中的寬建立連接。以此類推設(shè)計零件。
表達式建立:【文件】→【新建】→【裝配】→1001.prt?!竟ぞ摺俊颈磉_式】,在【名稱】中填入“X_Door”代表長度,在【公式】中填入“1000”,單位類型“長度”“mm”,點擊【應(yīng)用】,一個表達式創(chuàng)建完畢。用同樣的方法創(chuàng)建其他表達式[2]。
表達式連接:【裝配】→【新建】→【模型】→1002.prt→【新建組件】→【確定】,1001裝配零件中加入了1002零件。將1002零件設(shè)為工作部件,選擇【工具】→【表達式】,在【名稱】中填入“X_Door_p01”代表橫梁1002零件長度,單位類型“長度”“mm”,鼠標放在“公式”文本框,點擊對話框靠下的【創(chuàng)建單個部件間表達式】,出現(xiàn)“選擇部件”對話框,選擇1001零件→【確定】,選擇表達式X_Door=1000→【確定】→【確定】,一個表達式連接創(chuàng)建完畢[2]。
圖1 模板參數(shù)關(guān)系示意圖
圖2 頂層參數(shù)輸入界面
圖3 屬性輸入界面
表達式使用:使用【拉伸】命令創(chuàng)建矩形方管,在“距離”框中點擊下拉列表,選擇【公式】打開“表達式”對話框,雙擊選擇“X_Door_p01”表達式,在【公式】對話框中寫入“X_Door_p01-10”,點擊【確定】,基于“X_Door_p01”表達式的實體結(jié)構(gòu)創(chuàng)建完成。1002.prt零件中所有與“X_Door_p01”表達式相關(guān)的結(jié)構(gòu),都能以“X_Door_p01”表達式為紐帶進行設(shè)計。
子部件的輸入?yún)?shù)引用的是父部件的輸入?yún)?shù),當零件數(shù)量增加時,參數(shù)名稱會變得難以理解,因此對于被引用的表達式,需要有統(tǒng)一的命名規(guī)則,并寫好備注。多個零件共同使用的表達式應(yīng)同時包含子部件的父部件建立,避免零件再生時產(chǎn)生邏輯混亂,有利于參數(shù)的集中管理。
建模的方法還可以使用宏錄制,生成VC++、JAVA、C#等高級計算機語言[3]。如果對UG API函數(shù)有了解,也可以使用UG提供的API函數(shù)建立零件[4],這樣做的好處是,后期運行效率會更高。模板、宏錄制、API方法各有優(yōu)缺點,可根據(jù)實際情況選擇。
利用以上方法,對產(chǎn)品的每一個零件進行參數(shù)的創(chuàng)建、連接、使用,最終形成一個全參數(shù)化的零件模板集合。模板參數(shù)關(guān)系如圖1所示。
輸入界面的作用是,間接對模型應(yīng)用輸入?yún)?shù),而非直接對模板模型操作,以達到避免因誤操作損壞模板參數(shù)的目的。
界面編寫:在零件設(shè)計模式下,點擊【文件】→【所有應(yīng)用模塊】→【塊UI樣式編輯器】進入UI對話框編輯界面。點擊【基本】→【標簽/位圖】,在“對話框”樹列表中插入了一個節(jié)點“l(fā)abel0”,同時新增了一個“Group”組。點擊“Group”,在“屬性”框中找到屬性“l(fā)abel”,在值中填入“產(chǎn)品參數(shù)設(shè)計”。點擊“l(fā)abel0”,在“屬性”框中找到屬性“l(fā)abel”,刪除值“無標題”,點擊“Bitmap”,在值中輸入位圖存放路徑。點擊【數(shù)字】→【整型】,插入?yún)?shù)輸入框。按此方法插入其余參數(shù)輸入框。對話框結(jié)構(gòu)設(shè)計完成后,選擇輸出語言C++,保存后生成三個文件:*.hpp,*.cpp,*.dlx。其中*.dlx文件是對話框界面文件,*.hpp和*.cpp是C++的程序接口文件,存放二次開發(fā)的程序源代碼[3]。調(diào)整后的參數(shù)輸入界面如圖2所示。
關(guān)鍵代碼:
以上代碼實現(xiàn)讀取模板模型零件中名稱為“N_BLOG_X”的參數(shù),并限定此參數(shù)的輸入范圍5≤a≤15,滿足條件后,應(yīng)用到模型中,并更新模型[6]。
啟動參數(shù)輸入界面后,UI界面中會顯示當前模型模板中的參數(shù)。當按要求填寫完所需參數(shù)后,點擊【確定】,程序?qū)⑿绿顚懙膮?shù)應(yīng)用到模型中,并更新模型,生成所需模型。
圖4 導出BOM界面
圖5 導出BOM計算
在產(chǎn)品模型發(fā)布前,要對所有零件進行精簡表達式處理,要求既要保留表達式參數(shù),又要避免在多個型號產(chǎn)品同時存在時,零件之間產(chǎn)生參數(shù)干擾。
關(guān)鍵代碼如下:
以上代碼實現(xiàn)將part_tag標識的指定模型中的所有表達式讀入exps列表中,將表達式總數(shù)量讀入number_of_exps中,用循環(huán)方法實現(xiàn)將每個讀入的表達式的名稱與值分離,再用計算后的表達式值,編輯同名表達式[4]。表達式經(jīng)處理后,會失去父子之間的引用關(guān)系,從而達到參數(shù)相對獨立的目的。
零件的相關(guān)制造信息,需手動填入具體參數(shù),并根據(jù)公司實際需求調(diào)整屬性項。屬性輸入支持多零件相同參數(shù)可同時輸入的功能。界面設(shè)計如圖3所示。
關(guān)鍵代碼如下:
以上代碼實現(xiàn)新建名稱為"DB_PART_NAME"的屬性項,并將UI中對應(yīng)ID的值復制到零件屬性值中。UG NX自身的Block UI界面可以實現(xiàn)常用名稱的預輸入。如常用單位,常用材質(zhì)等,可在創(chuàng)建UI界面時,預先寫入UI界面中。
啟動屬性輸入界面后,可以查看模型原有屬性值。對原有屬性值相同的零件,可以同時選擇多個零件,一次更改多個相同屬性值的屬性項。若【去除所選零件參數(shù)】被選中,則所有被選中零件的所有參數(shù)均將被刪除。
零件屬性填寫完成后,需要生成產(chǎn)品的結(jié)構(gòu)BOM,用于安排原材料采購,安排生產(chǎn)工藝等。同時要能夠生成生產(chǎn)專用BOM。BOM導出界面如圖4所示。
關(guān)鍵代碼如下:
以上代碼實現(xiàn)將顯示模型中所有不同零件的Tag值存入向量newbodyTAG中。CycleAllParts1是按深度方向遍歷模型獲取tag值的函數(shù)實現(xiàn)代碼。
啟動導出BOM功能,可以選擇多種導出方式?!皢挝募С觥敝傅氖遣煌慵谝粋€prt文件中的裝配圖BOM導出方式?!岸辔募С觥敝该總€prt文件是一個零件的裝配圖BOM導出方式。導出BOM還可根據(jù)實際情況選擇一鍵導出或選擇導出。BOM中會含有三維實體模型的最大外形尺寸。在選擇合適的模板后,可以輸出零件的重量[7]。
通過實際的應(yīng)用發(fā)現(xiàn),某款家電產(chǎn)品原來從改型參數(shù)確定,到形成產(chǎn)品BOM,需要1個月的時間才能完成,而應(yīng)用此全參數(shù)自動設(shè)計模型,計算機僅需1天時間便可完成,大大提高了設(shè)計速度,降低了出錯的概率和設(shè)計人員的重復勞動強度,達到了降低設(shè)計成本的目的。證明這種將設(shè)計思想以表達式的方式存儲在零件模板中,借助少量輔助開發(fā)工具,實現(xiàn)自動設(shè)計的思路,能夠滿足有系列化產(chǎn)品設(shè)計要求的設(shè)計場合,在人工成本不斷增加的現(xiàn)在,有著借鑒價值。同時,在激烈的家電市場競爭中,加快了投放市場的速度,為家電新系列產(chǎn)品搶占市場贏得了先機。