李麗芳,王 燕,陳開朗,溫媛媛,郭 杰
上汽通用汽車有限公司(上海 201208)
汽車外覆蓋件大都設(shè)計了棱線特征,一方面,棱線有調(diào)節(jié)風阻的作用,汽車高速行駛時,氣流能通過這些棱線增加行駛的穩(wěn)定性;另一方面,棱線有增加剛度的作用,零件受到外力作用時,不會輕易發(fā)生變形褶皺。最重要的是,棱線設(shè)計對車的顏值有所影響,剛毅的棱線讓汽車充滿力量,流暢的棱線則彰顯運動等等,美觀的棱線設(shè)計會讓人眼前一亮。
但是弧長偏小且夾角偏大的棱線采用常規(guī)的模具制造工藝不夠清晰美觀,不能很好的體現(xiàn)造型設(shè)計的意圖,因此需采用特殊的制造工藝,沖壓同步工程階段需把這種棱線識別出來,本文稱之為小圓角識別。一般情況下,需要肉眼識別分界點,使用UG自帶命令在分界點處測量弧長和夾角,手動將測量結(jié)果輸入報告,并根據(jù)測量結(jié)果標示紅(特殊制造工藝)、黃(過渡)、綠(普通制造工藝),效率和準確率都較低。本文使用Visual Studio等二次開發(fā)工具,在UG中建立了快速測量和自動生成報告的人機交互界面,提高了小圓角識別的效率和準確率。
UG打開零件片體,輸入判斷準則:夾角>X值,弧長<Y值,兩條件同時滿足呈現(xiàn)紅色,反之呈現(xiàn)綠色。將以下結(jié)果輸出到EXCEL當中,同一個項目的零件測量結(jié)果輸出到同一個EXCEL,每個零件占用一個工作表。
每個零件的棱線編號按照字母順序設(shè)置,每條棱線的測量點按照棱線編號+數(shù)字設(shè)置,包括2個端點和2個過渡點,如圖1所示。為避免每條棱線分段過多,最終只呈現(xiàn)4種狀態(tài)中的一種:全紅、全綠、紅黃綠、紅黃綠黃紅(綠黃紅黃綠)。其中,紅色代表滿足判斷準則,綠色代表不滿足判斷準則,黃色為100mm長的過渡段。同時,為避免出現(xiàn)由于剛好處于臨界值導致的紅綠點交替現(xiàn)象,人機交互界面需給出夾角和弧長的公差設(shè)定窗口。
圖1 棱線編號
根據(jù)棱線上的編號點,將測量結(jié)果填到模板指定的單元格中。其中,2個端點填入夾角值和弧長值,2個過渡點填入坐標值,如圖2所示。
圖2 輸出的數(shù)值
界面設(shè)計主要考慮簡潔、信息顯示全面,方便操作等等,從而提高小圓角識別的效率。
首先選擇測量的零件,可以選擇1個,也可以選擇多個;接著設(shè)置夾角的公差、弧長的公差以及過渡段的長度;接著輸入每個零件的參數(shù),包括料厚、所有的棱線、整個片體、測量取點的間隔等等;然后開始計算,如圖3所示。
圖3 輸入界面
計算完畢后,選擇需要輸出的零件,接著選擇零件中想要輸出的顏色球和輸出間隔,接著可以選擇渲染模式、整車截圖、想要輸出到的文件等等,然后創(chuàng)建報告,如圖4所示。
圖4 輸出界面
本二次開發(fā)的過程主要是通過用戶對不同零件的選擇,以及對選擇零件判斷準則的輸入,計算棱線的夾角和弧長。通過用戶在人機交互界面上對顯示內(nèi)容的設(shè)置以及輸出設(shè)置,使得用戶可以獲得詳盡清晰的EXCEL模板報告,大大提高了用戶手動操作的工作效率。整個核心流程圖如圖5所示。
圖5 核心流程圖
本文使用C++語言結(jié)合2000多個API函數(shù)開發(fā)出想要的UG界面,開發(fā)時首先要創(chuàng)建NXOpenWizard,在Visual Studio環(huán)境中創(chuàng)建程序,鏈接UGNX,進行編譯和調(diào)試,生成后綴名為dll的文件,在UG界面NXOpen中運行該文件,實現(xiàn)UG界面的二次開發(fā)。整個過程Visual Studio和UG的版本配置很重要,本文使用的是Visual Studio2013和NX11.0。
C++程序語言的書寫格式自由度高,靈活性強,隨意性大。為了提高程序的可讀性,編寫代碼要規(guī)范,使程序結(jié)構(gòu)清晰、明了,程序代碼緊湊。本文整個程序的主要函數(shù)有:棱線連接、棱線和圓弧面的匹配、A面識別、求交線、求交點、符合性判斷、輸出報告設(shè)置等等。部分代碼如下所示:
void PAT_BE209::CreateCheckReport()
{
//新建報告;
CString template_excel;
template_excel=CString(moduledir)+"Template\
PAT_BE209_Sharp_Feature_Line_Check_Report.xlsx";
int ExistOrNot=::GetFileAttributes(template_excel);
if(ExistOrNot==-1)
{
uc1601("template lost!",1);
return;
}
else
{
CoInitialize(NULL);
//創(chuàng)建Excel服務(wù)
CApplication app;
if(!app.CreateDispatch(_T("Excel.Application")))
{
uc1601("Unable to create Excel app!",1);
return;
}
//app.put_Visible(TRUE);
app.put_Visible(FALSE);
app.put_UserControl(TRUE);
//打開模板;
CWorkbook book;CWorkbooks books;CWorksheet sheet;CWorksheets sheets;
CRange range;CRange rColums;CRange rUsed;CRangeCell;CRanges ranges;
CExcelFont font;CBorders borders;CBorder border;CRangecols;
CRange column;CRange row;Cnterior interior;
COleVariant covOptional((long)
DISP_E_PARAMNOTFOUND,VT_ERROR);
books.AttachDispatch(app.get_Workbooks());
LPDISPATCH lpDisp=books.Open(template_excel,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
book.AttachDispatch(lpDisp);
}
本文通過Visual Studio2013搭建了NX的二次開發(fā)環(huán)境,并使用C++語言結(jié)合多個API函數(shù)開發(fā)出小圓角識別的UG界面。輸入零件的棱線關(guān)鍵參數(shù)和判斷準則,就可以自動取點測量并自動輸出報告,不僅提高了識別的準確性,而且每個零件的識別時間從原來的45min縮短到了5min,大大提高了工作效率,為企業(yè)后續(xù)借助已有的標準和軟件資源,拓展應用范圍做出重要的鋪墊。