高 原
GAO Yuan
(天津汽車模具股份有限公司,天津 300308)
汽車沖壓模具基體結構主要包括平面、立面和孔等,模具二維編程主要是利用CAM軟件編制面和孔的編程。由于模具整體輪廓尺寸大,鑄件毛坯等原因,所有加工面、孔的鑄造貼量是不均勻的。為了使UG CAM模塊更加符合鑄件的編程及加工特點,我們需要借助API函數庫,基于UG CAM模板,使用C++語言進行專業化的二次開發,使UG CAM更加符合模具加工的要求。
使用UG CAM模板策略編制一個同時加工多個面的程序(oper_tag)時,毛坯余量(Blank Distance)只能設置一個固定值,且這個值需要人工輸入,如圖1所示。但是鑄件無法保證所有面的鑄造量均勻一致。通過逆向工程得到四個平面實際鑄造量分別為15mm,18mm,17mm,19mm,如圖2所示。為了加工時程序的安全,編程員只能將Blank Distance參數框輸入19,如圖1所示。加工1,2,3號面時機床Z向總共空運行7mm。

圖1 FACE_MILLING編程模板
這就體現出了UG軟件通用CAM模塊在汽車模具編程加工過程中的弊端:1)不符合模具結構特點,功能不夠強大;2)浪費編程及加工工時;3)手動輸值極易出錯等。

圖2 模具理論貼量與實際鑄造貼量
通過調用API中UDOP(User Defined Operations)系列函數,在PROFILE_3D策略基礎之上,進行開發主要實現針對每一邊界存儲自己一組數據。使用UIStyler編輯器生成一個UG風格的對話框,以便于操作和顯示分析計算結果,如圖3所示,對話框顯示了某一邊界所包含的一組數據:毛坯余量、每層切深、側面余量、底面余量以及毛坯增量,五個按鈕分別實現批量編輯毛坯余量、批量修改底面余量、自動修改參數和指向前一邊界、指向后一邊界。面板中設置一個用戶邊界參數開關“Custom Boundary Data”,關掉后所有邊界按照相同參數設置,如同圖1所示UG自帶加工策略。點擊“后一邊界”或“前一邊界”顯示相應邊界的五參數。

圖3 面余量分析模塊對話框

圖4 程序屬性表
利用UIStyler提供的控件資源,組裝好對話框,并規劃好控件的布局,確定響應控件事件的回調函數,保存生成Edit_para.dlg,Edit_para.c和Edit_para.h文件。在Edit_para.dlg中自定義各回調函數后,通過編譯生成Edit_para.dll。調用Edit_para.dll執行UG/Open API函數、訪問Edit_para.dlg資源文件,實現面余量分析對話框界面功能。將最終計算結果存儲在程序的屬性表(Attributes)中,如圖4所示。
所有數據保存完后,不同鑄造平面根據屬性表中對應的數值而生成不同高度的刀軌,鑄造量大的就多加工幾刀,鑄造量少的就少加工幾刀。
1)選擇一個程序后進入面余量分析模塊。系統判斷所選程序是否包含加工邊界mill_area,如果程序沒有加工邊界,則返回程序。
2)程序中存在mill_area,則等待用戶下一步操作:單擊批量修改毛坯余量按鈕則進入3);單擊批量修改底面余量按鈕則進入4);單擊Auto Parameter按鈕則進入5);單擊OK按鈕,系統提示用戶是否保存文件,如果需要則保存文件,程序終止;單擊Back或Cancel按鈕則程序終止。
3)判斷是否選擇了毛坯體,如果存在毛坯體則計算出毛坯余量值,如果沒有毛坯體,則退出計算進入2)。
4)判斷是否選擇了毛坯體,如果存在毛坯體則計算出底面余量值,如果沒有毛坯體,則退出計算進入2)。
5)判斷是否選擇了毛坯體,如果存在毛坯體則計算出當前邊界對應的毛坯余量值和底面余量值等,點擊后一邊界計算下一邊界各參數值,直至所有邊界計算結束。如果沒有毛坯體,則退出計算進入2)。
程序流程圖如圖5所示。


圖5 面余量分析模塊程序流程圖

圖6 按類選擇對話框



調用函數UF_MODL_ask_minimum_dist(),可以計算出object1與object2在三維空間中的最小距離min_dist,并得到object1與object2上最小距離點pt_on_obj1[3]和pt_on_obj2[3]。
匹配邊界mill_area的最大距離毛坯面過程,如圖7所示:1)利用API函數UF_MODL_ask_minimum_dist(),循環三個毛坯面face1-3,計算得到三組最小距離矢量vector1[3],vector2[3],vector3[3];2)加工mill_area時刀軸方向規定為ZC[3],找到與ZC[3]平行的矢量,將不平行的vector3[3]排除,即將face3排除;3)然后我們計算刀軸平行的兩個面到邊界的最小值min_dist 1,min_dist 2,我們得到最大值min_dist 1,計算結束,邊界mill_area的最大距離毛坯面為face1,匹配成功。

圖7 匹配計算方法
循環程序中所有邊界,即可得到每個邊界對應的毛坯余量值。
4.4.1 批量修改毛坯余量
使用函數UF_ATTR_assign(oper_tag,"CUSTOM_BLANK_DIS",value)將模具基體四角平面不同鑄造量計算結果,存儲到程序屬性表(Attributes)中,如圖4所示,其中value包含了數值: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 修改毛坯余量和底面余量
此功能是同時修改某一邊界的毛坯余量和底面余量,這就不存在匹配問題,因為人工選擇毛坯面就是做匹配。使用函數UF_UI_select_with_class_dialog()進行選擇指定毛坯面,當只選擇一個面時,只修改毛坯余量,選擇兩個面時,同時修改毛坯余量和底面余量。再指向下一邊界繼續選面修改參數,直至修改完所有邊界參數,并將結果保存到屬性表中。
4.4.4 數據使用
所有數據保存完后,等到程序生成時,調用屬性表中所有參數,生成一個包含多個不同邊界(加工面)不同層切深度(鑄造量)的滿足鑄件毛坯特點的數控程序。
模具編程過程中,一些人機交互界面的輸值對話,是經常犯錯的地方。一個小數點的錯誤,可能在數控機床上造成重大生產事故。同時UG CAM模塊因其商品化、通用化的特點,不可能滿足復雜的模具制造,但是它擁有像API這樣的開放性的體系結構,用戶可以在通用CAM模塊基礎上,融入專業知識,構建專用CAM系統來滿足要求。這也是UG軟件具有強大生命力的原因之一。
[1]American EDS PLM solution,Unigraphics NX2.0 Help.
[2]董正衛,等.UG/OPEN API編程基礎[M].北京:清華大學出版社,2002.
[3]黃翔,等.UG應用開發教程與實例精解[M].北京:清華大學出版社,2005.
[4]C++程序設計與數據結構基礎教程[M].天津:天津大學出版社,2006.