司海伯,苗 盈,張西祁,吳 凡,楊 燕
(無錫職業(yè)技術(shù)學(xué)院機(jī)械技術(shù)學(xué)院,江蘇無錫 214121)
汽車車燈由反射鏡、透鏡、光源等組件構(gòu)成。其中透鏡和反射鏡上大量分布的花紋可以對(duì)光線進(jìn)行合理的分配,從而滿足照明功能和信號(hào)功能。車燈花紋的種類很多,不同的車燈花紋對(duì)光線的調(diào)整也起到不同的作用。
汽車車燈花紋具有單元尺寸小、單元結(jié)構(gòu)類似、單元數(shù)量多和造型精度要求高等特點(diǎn)。每一個(gè)配光紋單元雖然結(jié)構(gòu)類似,但因無法使用陣列等快速批量建模的方法,逐一創(chuàng)建花紋單元是非常煩瑣而耗時(shí)的,通常占據(jù)車燈建模過程中20%以上的工作量[1]。因此,提高車燈配光紋的創(chuàng)建效率,將大大縮短車燈開發(fā)的周期,進(jìn)而降低生產(chǎn)成本。
NX 是一個(gè)交互式CAD/CAE/CAM 系統(tǒng)[2],可以輕松實(shí)現(xiàn)各種復(fù)雜實(shí)體及造型的建構(gòu)。NX 在面對(duì)不同應(yīng)用領(lǐng)域時(shí),如汽車車燈花紋造型,若采用軟件提供的常規(guī)性功能可以完成開發(fā)任務(wù),但重復(fù)性高,自動(dòng)化程度低,降低了車燈設(shè)計(jì)開發(fā)的效率[3]。NX 為用戶提供良好的二次開發(fā)環(huán)境彌補(bǔ)了這一缺陷,使用戶可以進(jìn)行更加貼合需求的專用定制,使設(shè)計(jì)開發(fā)過程更加的便捷高效。王皓宇等[4]基于NX Open C++實(shí)現(xiàn)大批量非參數(shù)圓孔的參數(shù)化轉(zhuǎn)變,能提高大約50%的工作效率。何寥等[5]利用NX OpenC++/NX Open API 技術(shù)和MFC窗體開發(fā)工具,開發(fā)出能自動(dòng)對(duì)裝配文件遷移和管理的插件。
不同車燈花紋的建模方法存在差異,但大致都分為2 個(gè)步驟:劃分網(wǎng)格和花紋形狀建模。異形四棱錐花紋單元建模原理如下。
第一,求2 組曲線形成的曲線網(wǎng)格中所有的交點(diǎn),如圖1 所示。
圖1 創(chuàng)建交點(diǎn)
第二,取出其中的4 個(gè)相鄰交點(diǎn)作為一個(gè)花紋單元,利用4 個(gè)交點(diǎn)的坐標(biāo)創(chuàng)建中點(diǎn),并將中點(diǎn)投影到曲面上。
第三,將投影點(diǎn)先按照創(chuàng)建方向偏移一個(gè)花紋高度的距離,再按照花紋頂線正向和反向分別偏移半個(gè)頂線長(zhǎng)度的距離,創(chuàng)建2 個(gè)頂線端點(diǎn),如圖2 所示。
圖2 花紋創(chuàng)建示意圖
第四,所有點(diǎn)創(chuàng)建完成后,生成1 條頂線、4 條側(cè)棱、4 條底邊。如圖3 所示。
圖3 花紋框架點(diǎn)位標(biāo)注
第五,生成4 個(gè)側(cè)面和1 個(gè)底面,并將其縫合在一起,形成一個(gè)完整的異形四棱錐花紋單元。
第六,不斷重復(fù)該過程,完成所有的車燈花紋單元的建模,如圖4 所示。
圖4 異形四棱錐車燈花紋
為了方便交點(diǎn)創(chuàng)建,需要將曲線進(jìn)行分組。通過曲線與曲線之間的相交關(guān)系來進(jìn)行分組,同一組內(nèi)曲線不相交。該步驟為曲線分組模塊,對(duì)應(yīng)的流程圖如圖5所示。
圖5 曲線分組流程
任意取出1 條曲線,存入曲線組一中。求曲線組一中第一條曲線和原曲線組中剩余曲線之間的距離,將距離在建模公差范圍內(nèi)的曲線存入曲線組二中。交替選擇用2 個(gè)曲線組中的曲線,判斷其與原曲線組中剩余曲線之間的距離,將符合條件的曲線存入與選用曲線相反的曲線組。直到原曲線組中所有曲線被取出,即完成分組。
創(chuàng)建花紋單元需要曲線網(wǎng)格的所有交點(diǎn),所以在創(chuàng)建花紋單元之前,應(yīng)創(chuàng)建所有交點(diǎn),根據(jù)交點(diǎn)的實(shí)際位置排序并儲(chǔ)存。在創(chuàng)建交點(diǎn)的過程中,2 條曲線實(shí)際沒有相交,但系統(tǒng)根據(jù)2 條曲線的走向自動(dòng)擬合出延長(zhǎng)線并求出交點(diǎn),所以要在創(chuàng)建交點(diǎn)的過程中同時(shí)判斷點(diǎn)的真假性,方便創(chuàng)建花紋過程中對(duì)點(diǎn)的選用。該步驟為交點(diǎn)創(chuàng)建排序模塊。
利用橫向曲線和縱向曲線求交點(diǎn),將求出的交點(diǎn)與形成這個(gè)交點(diǎn)的2 條曲線分別比較距離,比較出的2 個(gè)距離都在建模公差范圍之內(nèi)則為真點(diǎn),若其中有一個(gè)距離不在公差范圍之內(nèi)則該點(diǎn)為假點(diǎn)。將交點(diǎn)以矩陣的形式進(jìn)行存儲(chǔ),在同一條橫向曲線上的交點(diǎn)對(duì)應(yīng)矩陣的同一行。選出任意一個(gè)點(diǎn)求該點(diǎn)和所有點(diǎn)之間的距離,選出相距最遠(yuǎn)的點(diǎn)。將最遠(yuǎn)的點(diǎn)通過矩陣變換將其換到第一行第一列,再按照距離將第一行的點(diǎn)進(jìn)行重新排序,同時(shí)將第一行中的所有交點(diǎn)所屬的列進(jìn)行列變化;同理,將第一列中的點(diǎn)及其所屬行進(jìn)行排序,最后得到一個(gè)和實(shí)際位置相同的交點(diǎn)矩陣。
定制UI 對(duì)話框使用的是集成在NX 中具有可視化功能的人機(jī)交互界面定制模塊Block UI Styler[6],操作簡(jiǎn)便高效,并且定制出的UI 對(duì)話框符合用戶的使用習(xí)慣,從而實(shí)現(xiàn)友好的人機(jī)交互[7]。設(shè)計(jì)好的異形四棱錐花紋對(duì)話框如圖6 所示。該對(duì)話框共有4 個(gè)組和7個(gè)控件。
圖6 異形四棱錐花紋對(duì)話框
3.2.1 獲取用戶輸入
將選擇的所有對(duì)象,記為L(zhǎng)ist<o(jì)bject>。選擇的與頂線走向相同的一條曲線,記為Curνe?;y相對(duì)于曲面的創(chuàng)建方向和指定方向時(shí)選取的曲面上點(diǎn),記為Vec和Pν。設(shè)定的花紋高度和頂線長(zhǎng)度,記為H和L。選擇的花紋類型是實(shí)體或是片體,記為bodyType。設(shè)定的建模公差,記為tolerance。
3.2.2 異形四棱錐花紋建模
1)利用UF_OBJ_ask_type_and_subtype 對(duì)List <o(jì)bject>中的對(duì)象進(jìn)行判別,將其分為L(zhǎng)ist<curνe>(曲線組)和List<surface>(曲面組)。并將曲面組中的曲面利用UF_MODL_create_sew 縫合成一個(gè)曲面,記為Surface。
2)通過曲線分組模塊將曲線組List<curνe>中的曲線分成List<curνe1>和List<curνe2>。判斷Curνe在List<curνe1>中還是在List<curνe2>中,將曲線Curνe所在的集合記為橫向曲線組,另一個(gè)集合記為縱向曲線組。再通過交點(diǎn)創(chuàng)建排序模塊,利用橫向曲線組和縱向曲線組創(chuàng)建出一個(gè)交點(diǎn)矩陣Aij。
3)首先利用UF_MODL_ask_face_parm_2 獲得點(diǎn)Pν 在Surface上的uv坐標(biāo),再使用UF_MODL_ask_fac e_props 求出該uv坐標(biāo)處的曲面法向量D1。將D1 和Vec作比對(duì),若方向一致,創(chuàng)建花紋單元時(shí)獲得的曲面法向量直接使用;若方向相反,則反向后再使用。
4)取交點(diǎn)矩陣Aij中相鄰的4 個(gè)交點(diǎn)記為如圖3所示的點(diǎn)1、點(diǎn)2、點(diǎn)3 和點(diǎn)4,且點(diǎn)1、點(diǎn)2 在Aij中的同一行;若4 個(gè)交點(diǎn)同為真,繼續(xù)向下執(zhí)行,否則重新選取。
5)利用點(diǎn)1、點(diǎn)2、點(diǎn)3 和點(diǎn)4 創(chuàng)建中點(diǎn),記為點(diǎn)5;利用函數(shù)UF_CURVE_create_proj_curves 將點(diǎn)5 沿所在位置的曲面法向量投影到曲面Surface上,得到投影曲面特征的tag值,利用函數(shù)UF_CURVE_ask_proj_curves 獲取曲面特征中生成的投影點(diǎn)的tag值,將投影點(diǎn)記為點(diǎn)6,利用函數(shù)UF_CURVE_ask_point_data 根據(jù)點(diǎn)6 的tag值找到對(duì)應(yīng)坐標(biāo),求出點(diǎn)6 在Surface上的曲面法向量,記為SurfaceVec,并根據(jù)步驟3)判斷是否需要反向。
6)將點(diǎn)1 和點(diǎn)2 中點(diǎn)指向點(diǎn)3 和點(diǎn)4 中點(diǎn)的方向定為頂線創(chuàng)建方向,記為topVec。
7)根據(jù)異形四棱錐花紋建模原理,先創(chuàng)建出2 個(gè)頂點(diǎn),記為點(diǎn)7 和點(diǎn)8。利用函數(shù)UF_CURVE_create_line 創(chuàng)建出需要9 條邊線。最后利用函數(shù)UF_MODL_create_curve_mesh 創(chuàng)建平面。
8)利用函數(shù)UF_MODL_create_sew 將創(chuàng)建的平面縫合起來,根據(jù)bodyType,生成片體或?qū)嶓w,完成一個(gè)花紋單元的創(chuàng)建。
以同樣的方式完成所有花紋單元的創(chuàng)建。
基于上述方法,完成異形四棱錐花紋的快速建模功能。調(diào)用該功能,彈出如圖6 所示的對(duì)話框。首先選擇創(chuàng)建花紋所需要的曲線曲面,所有曲線和曲面一次框選。在網(wǎng)格曲線中選擇一條與頂線走向相同的曲線確定頂線方向;在曲面上選擇一個(gè)點(diǎn),在該點(diǎn)處生成的箭頭即為花紋相對(duì)于曲面創(chuàng)建的方向,箭頭的方向可以通過反向改變。在參數(shù)欄中,設(shè)定好花紋的高度和頂線的長(zhǎng)度。設(shè)置生成花紋的體類型和建模公差。最后單擊對(duì)話框中的“確定”按鈕,生成如圖4 所示的異形四棱錐車燈花紋。
經(jīng)過實(shí)際的對(duì)比發(fā)現(xiàn),一個(gè)熟練的造型工程師手工創(chuàng)建100 個(gè)花紋單元所需要的時(shí)間大約在200 min。采用異形四棱錐車燈花紋快速建模程序,只需框選所有元素,并按照需求設(shè)定參數(shù),即可完成所有花紋的創(chuàng)建,總耗時(shí)大約5 min。由此可見,該程序?qū)Ξ愋嗡睦忮F車燈花紋的建模效率有著顯著的提高。
為了縮短車燈的設(shè)計(jì)開發(fā)周期,針對(duì)車燈造型過程中重復(fù)性高、耗時(shí)長(zhǎng)、效率不高的車燈花紋手工建模步驟,利用NX10 提供的開發(fā)工具,完成了異形四棱錐車燈花紋快速建模的功能實(shí)現(xiàn)。使用NX 中集成的可視化人機(jī)交互界面定制模塊(Block UI Styler),定制出風(fēng)格統(tǒng)一的UI 對(duì)話框。首先開發(fā)了2 個(gè)對(duì)曲線網(wǎng)格的處理模塊;再利用應(yīng)用程序接口(NX Open API)函數(shù),結(jié)合異形四棱錐車燈花紋的手工建模思路,實(shí)現(xiàn)了異形四棱錐車燈花紋的快速建模。實(shí)踐證明,異形四棱錐車燈花紋快速建模系統(tǒng)可以提高建模效率,能有效縮短車燈的設(shè)計(jì)開發(fā)周期。