高 原
GAO Yuan
(天津汽車模具股份有限公司,天津 300308)
汽車沖壓模具基體結(jié)構(gòu)主要包括平面、立面和孔等,模具二維編程主要是利用CAM軟件編制面和孔的編程。由于模具整體輪廓尺寸大,鑄件毛坯等原因,所有加工面、孔的鑄造貼量是不均勻的。為了使UG CAM模塊更加符合鑄件的編程及加工特點(diǎn),我們需要借助API函數(shù)庫,基于UG CAM模板,使用C++語言進(jìn)行專業(yè)化的二次開發(fā),使UG CAM更加符合模具加工的要求。
使用UG CAM模板策略編制一個同時加工多個面的程序(oper_tag)時,毛坯余量(Blank Distance)只能設(shè)置一個固定值,且這個值需要人工輸入,如圖1所示。但是鑄件無法保證所有面的鑄造量均勻一致。通過逆向工程得到四個平面實際鑄造量分別為15mm,18mm,17mm,19mm,如圖2所示。為了加工時程序的安全,編程員只能將Blank Distance參數(shù)框輸入19,如圖1所示。加工1,2,3號面時機(jī)床Z向總共空運(yùn)行7mm。
圖1 FACE_MILLING編程模板
這就體現(xiàn)出了UG軟件通用CAM模塊在汽車模具編程加工過程中的弊端:1)不符合模具結(jié)構(gòu)特點(diǎn),功能不夠強(qiáng)大;2)浪費(fèi)編程及加工工時;3)手動輸值極易出錯等。
圖2 模具理論貼量與實際鑄造貼量
通過調(diào)用API中UDOP(User Defined Operations)系列函數(shù),在PROFILE_3D策略基礎(chǔ)之上,進(jìn)行開發(fā)主要實現(xiàn)針對每一邊界存儲自己一組數(shù)據(jù)。使用UIStyler編輯器生成一個UG風(fēng)格的對話框,以便于操作和顯示分析計算結(jié)果,如圖3所示,對話框顯示了某一邊界所包含的一組數(shù)據(jù):毛坯余量、每層切深、側(cè)面余量、底面余量以及毛坯增量,五個按鈕分別實現(xiàn)批量編輯毛坯余量、批量修改底面余量、自動修改參數(shù)和指向前一邊界、指向后一邊界。面板中設(shè)置一個用戶邊界參數(shù)開關(guān)“Custom Boundary Data”,關(guān)掉后所有邊界按照相同參數(shù)設(shè)置,如同圖1所示UG自帶加工策略。點(diǎn)擊“后一邊界”或“前一邊界”顯示相應(yīng)邊界的五參數(shù)。
圖3 面余量分析模塊對話框
圖4 程序?qū)傩员?/p>
利用UIStyler提供的控件資源,組裝好對話框,并規(guī)劃好控件的布局,確定響應(yīng)控件事件的回調(diào)函數(shù),保存生成Edit_para.dlg,Edit_para.c和Edit_para.h文件。在Edit_para.dlg中自定義各回調(diào)函數(shù)后,通過編譯生成Edit_para.dll。調(diào)用Edit_para.dll執(zhí)行UG/Open API函數(shù)、訪問Edit_para.dlg資源文件,實現(xiàn)面余量分析對話框界面功能。將最終計算結(jié)果存儲在程序的屬性表(Attributes)中,如圖4所示。
所有數(shù)據(jù)保存完后,不同鑄造平面根據(jù)屬性表中對應(yīng)的數(shù)值而生成不同高度的刀軌,鑄造量大的就多加工幾刀,鑄造量少的就少加工幾刀。
1)選擇一個程序后進(jìn)入面余量分析模塊。系統(tǒng)判斷所選程序是否包含加工邊界mill_area,如果程序沒有加工邊界,則返回程序。
2)程序中存在mill_area,則等待用戶下一步操作:單擊批量修改毛坯余量按鈕則進(jìn)入3);單擊批量修改底面余量按鈕則進(jìn)入4);單擊Auto Parameter按鈕則進(jìn)入5);單擊OK按鈕,系統(tǒng)提示用戶是否保存文件,如果需要則保存文件,程序終止;單擊Back或Cancel按鈕則程序終止。
3)判斷是否選擇了毛坯體,如果存在毛坯體則計算出毛坯余量值,如果沒有毛坯體,則退出計算進(jìn)入2)。
4)判斷是否選擇了毛坯體,如果存在毛坯體則計算出底面余量值,如果沒有毛坯體,則退出計算進(jìn)入2)。
5)判斷是否選擇了毛坯體,如果存在毛坯體則計算出當(dāng)前邊界對應(yīng)的毛坯余量值和底面余量值等,點(diǎn)擊后一邊界計算下一邊界各參數(shù)值,直至所有邊界計算結(jié)束。如果沒有毛坯體,則退出計算進(jìn)入2)。
程序流程圖如圖5所示。
圖5 面余量分析模塊程序流程圖
圖6 按類選擇對話框
調(diào)用函數(shù)UF_MODL_ask_minimum_dist(),可以計算出object1與object2在三維空間中的最小距離min_dist,并得到object1與object2上最小距離點(diǎn)pt_on_obj1[3]和pt_on_obj2[3]。
匹配邊界mill_area的最大距離毛坯面過程,如圖7所示:1)利用API函數(shù)UF_MODL_ask_minimum_dist(),循環(huán)三個毛坯面face1-3,計算得到三組最小距離矢量vector1[3],vector2[3],vector3[3];2)加工mill_area時刀軸方向規(guī)定為ZC[3],找到與ZC[3]平行的矢量,將不平行的vector3[3]排除,即將face3排除;3)然后我們計算刀軸平行的兩個面到邊界的最小值min_dist 1,min_dist 2,我們得到最大值min_dist 1,計算結(jié)束,邊界mill_area的最大距離毛坯面為face1,匹配成功。
圖7 匹配計算方法
循環(huán)程序中所有邊界,即可得到每個邊界對應(yīng)的毛坯余量值。
4.4.1 批量修改毛坯余量
使用函數(shù)UF_ATTR_assign(oper_tag,"CUSTOM_BLANK_DIS",value)將模具基體四角平面不同鑄造量計算結(jié)果,存儲到程序?qū)傩员?Attributes)中,如圖4所示,其中value包含了數(shù)值:16,19,18,20 (所有毛坯余量都加上毛坯增量1mm,主要是考慮加工更加安全)。
4.4.2 批量修改底面余量
對于平面粗加工,底面余量是一致的,為0.5mm。同毛坯余量一樣,存儲在Attributes中。如圖4所示,CUSTOM_FKOOR_STOCK屬性值為0.5;0.5;0.5;0.5。
4.4.3 修改毛坯余量和底面余量
此功能是同時修改某一邊界的毛坯余量和底面余量,這就不存在匹配問題,因為人工選擇毛坯面就是做匹配。使用函數(shù)UF_UI_select_with_class_dialog()進(jìn)行選擇指定毛坯面,當(dāng)只選擇一個面時,只修改毛坯余量,選擇兩個面時,同時修改毛坯余量和底面余量。再指向下一邊界繼續(xù)選面修改參數(shù),直至修改完所有邊界參數(shù),并將結(jié)果保存到屬性表中。
4.4.4 數(shù)據(jù)使用
所有數(shù)據(jù)保存完后,等到程序生成時,調(diào)用屬性表中所有參數(shù),生成一個包含多個不同邊界(加工面)不同層切深度(鑄造量)的滿足鑄件毛坯特點(diǎn)的數(shù)控程序。
模具編程過程中,一些人機(jī)交互界面的輸值對話,是經(jīng)常犯錯的地方。一個小數(shù)點(diǎn)的錯誤,可能在數(shù)控機(jī)床上造成重大生產(chǎn)事故。同時UG CAM模塊因其商品化、通用化的特點(diǎn),不可能滿足復(fù)雜的模具制造,但是它擁有像API這樣的開放性的體系結(jié)構(gòu),用戶可以在通用CAM模塊基礎(chǔ)上,融入專業(yè)知識,構(gòu)建專用CAM系統(tǒng)來滿足要求。這也是UG軟件具有強(qiáng)大生命力的原因之一。
[1]American EDS PLM solution,Unigraphics NX2.0 Help.
[2]董正衛(wèi),等.UG/OPEN API編程基礎(chǔ)[M].北京:清華大學(xué)出版社,2002.
[3]黃翔,等.UG應(yīng)用開發(fā)教程與實例精解[M].北京:清華大學(xué)出版社,2005.
[4]C++程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)教程[M].天津:天津大學(xué)出版社,2006.