王運(yùn)平 曹立林 畢忠華 楊 琪
(中國(guó)航發(fā)西安動(dòng)力控制科技有限公司,陜西 西安 710077)
三維設(shè)計(jì)軟件Siemens NX已經(jīng)在機(jī)械行業(yè)得到了廣泛應(yīng)用,在設(shè)計(jì)產(chǎn)品時(shí),材料直接決定了產(chǎn)品的品質(zhì)[1]?;谌S模型的產(chǎn)品設(shè)計(jì)和標(biāo)注是機(jī)械行業(yè)發(fā)展的一個(gè)趨勢(shì),合理使用材料庫(kù)是保證產(chǎn)品質(zhì)量的一個(gè)重要因素。因此,材料庫(kù)是機(jī)械設(shè)計(jì)和模型加工過(guò)程中必不可少的部分,而在實(shí)際的生產(chǎn)過(guò)程中,設(shè)計(jì)和加工的材料庫(kù)的信息源往往不一致,導(dǎo)致后期仿真等環(huán)節(jié)會(huì)出現(xiàn)差錯(cuò),這樣既浪費(fèi)時(shí)間又增加了生產(chǎn)成本[2-3]。
建立基于NX的材料庫(kù)能夠有效解決產(chǎn)品實(shí)際設(shè)計(jì)和制造過(guò)程中遇到的問(wèn)題,例如產(chǎn)品設(shè)計(jì)和制造過(guò)程中的材料值不統(tǒng)一、材料值丟失以及產(chǎn)品屬性與材料不匹配等問(wèn)題,建立1套完整的符合國(guó)標(biāo)的材料庫(kù)能夠降低產(chǎn)品設(shè)計(jì)過(guò)程中發(fā)生錯(cuò)誤的概率,達(dá)到提高設(shè)計(jì)和生產(chǎn)效率、節(jié)約時(shí)間和成本的目的。
NX材料庫(kù)是以一系列XML文件的格式進(jìn)行存儲(chǔ)的。XML是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集,但是比標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言簡(jiǎn)單,能實(shí)現(xiàn)標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的大部分功能。因?yàn)閄ML較簡(jiǎn)單,所以其易于在任何應(yīng)用程序中讀寫(xiě)數(shù)據(jù),已經(jīng)成為數(shù)據(jù)交換的唯一公共語(yǔ)言。NX系統(tǒng)自帶的材料數(shù)據(jù)庫(kù)文件為physicalmateriallibrary.xml,材料數(shù)據(jù)庫(kù)文件前半部分是材料的各屬性數(shù)據(jù),后半部分是材料屬性的單位定義??梢远x的材料類型包括各向同性材料、正交各向異性材料、各向異性材料、黏彈性材料、超彈性和墊片材料、蠕變材料、非線性材料、損傷材料、熱材料、流體材料、多孔材料、黏彈性材料、固化熱固性材料以及彈性塑料材料等。
在使用NX系統(tǒng)進(jìn)行設(shè)計(jì)、仿真以及在實(shí)際的制造過(guò)程中,錯(cuò)誤使用材料、設(shè)計(jì)階段和仿真階段材料不一致會(huì)出現(xiàn)制造出來(lái)的產(chǎn)品不符合用戶需求的問(wèn)題,直接增加了產(chǎn)品的成本。其原因是在產(chǎn)品設(shè)計(jì)、仿真以及制造等環(huán)節(jié)缺少統(tǒng)一的材料使用標(biāo)準(zhǔn),因此用戶亟需1個(gè)方便、快捷、準(zhǔn)確且統(tǒng)一的材料庫(kù),可以供他們?cè)诋a(chǎn)品從設(shè)計(jì)到制造過(guò)程中的各個(gè)環(huán)節(jié)使用,從而盡可能地減少因材料問(wèn)題而導(dǎo)致產(chǎn)品存在缺陷。
設(shè)計(jì)的系統(tǒng)是基于實(shí)際設(shè)計(jì)和生產(chǎn)階段用戶的真實(shí)需求,系統(tǒng)把機(jī)械行業(yè)標(biāo)準(zhǔn)材料信息放到后臺(tái),并附加到三維模型上,為后期加工、分析和繪制工程圖做準(zhǔn)備。把行業(yè)標(biāo)準(zhǔn)材料信息放在NX后臺(tái),在設(shè)計(jì)產(chǎn)品時(shí)直接調(diào)用材料庫(kù)中已有的行業(yè)標(biāo)準(zhǔn)或企業(yè)內(nèi)部定制的信息,并可以直接標(biāo)注和附加在產(chǎn)品的三維模型的各個(gè)部件上,使設(shè)計(jì)時(shí)的材料分配更直觀、更清晰,在后期加工、分析和繪制圖紙的過(guò)程中,可以根據(jù)模型上已標(biāo)注的材料屬性值進(jìn)行加工和繪制。綜上所述,該系統(tǒng)可以滿足用戶的需求。
設(shè)計(jì)系統(tǒng)從功能上分為后臺(tái)的數(shù)據(jù)庫(kù)模塊和前臺(tái)的用戶交互模塊。數(shù)據(jù)庫(kù)模塊主要存儲(chǔ)機(jī)械行業(yè)的標(biāo)準(zhǔn)材料庫(kù)信息。前臺(tái)的交互模塊主要包括標(biāo)注模型、更新標(biāo)注等功能。
這里選擇Microsoft Excel作為后臺(tái)存放行業(yè)標(biāo)準(zhǔn)的材料庫(kù)信息,原因如下:1) 所有用戶都非常熟悉Microsoft Excel的使用方法,選擇它能大大縮短用戶的學(xué)習(xí)時(shí)間。2) Microsoft Excel能很方便地編輯、存儲(chǔ)信息。3) NX7.5本身與Microsoft Office軟件有很強(qiáng)的銜接性,通過(guò)NX7.5的開(kāi)發(fā)接口能很方便地對(duì)Excel中的數(shù)據(jù)進(jìn)行增加、刪除以及修改等操作,這樣能有效縮短開(kāi)發(fā)軟件所需的時(shí)間。
按照一定的規(guī)范把行業(yè)標(biāo)準(zhǔn)材料信息放在NX后臺(tái)的Excel數(shù)據(jù)庫(kù)中,考慮用戶的方便性及易用性,這里選擇Microsoft Excel作為存放機(jī)械行業(yè)的標(biāo)準(zhǔn)材料庫(kù)信息,通過(guò)NX/Open API接口調(diào)用后臺(tái)數(shù)據(jù)庫(kù)中的信息,在設(shè)計(jì)產(chǎn)品時(shí),直接調(diào)用材料庫(kù)中已有的行業(yè)標(biāo)準(zhǔn)或企業(yè)內(nèi)部定制的信息,并可以直接以部件屬性的形式標(biāo)注和附加在產(chǎn)品的三維模型的各個(gè)部件上,使設(shè)計(jì)時(shí)的材料分配更直觀、更清晰,避免在后期仿真加工等環(huán)節(jié)出現(xiàn)差錯(cuò)。在后期的加工、分析和繪制圖紙的過(guò)程中,可以根據(jù)模型上已標(biāo)注的材料屬性值進(jìn)行加工和繪制[4]。系統(tǒng)用例圖如圖1所示,該材料庫(kù)系統(tǒng)主要有4個(gè)用例,分別是篩選與查看材料、增加材料、編輯與修改材料以及材料附加到模型用例。
圖1 系統(tǒng)設(shè)計(jì)
系統(tǒng)時(shí)序如圖2所示,用戶通過(guò)材料庫(kù)界面產(chǎn)生一系列事件和消息,例如顯示界面、修改材料等消息,這些消息和事件會(huì)傳遞到NX中材料庫(kù)系統(tǒng)的處理程序,并由處理程序調(diào)用后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行處理,最后把處理結(jié)果傳遞到前臺(tái)的顯示界面。
圖2 時(shí)序圖
界面是軟件與用戶交互的最直接的一層,界面會(huì)影響用戶對(duì)軟件的第一印象。設(shè)計(jì)良好的界面能夠引導(dǎo)用戶自己完成相應(yīng)的操作,設(shè)計(jì)合理的界面能給用戶帶來(lái)輕松愉悅的感受,相反則會(huì)讓用戶產(chǎn)生反感的情緒,最終可能會(huì)放棄使用該軟件,在NX中設(shè)計(jì)了包括材料庫(kù)的菜單條,其形式與NX的菜單是一樣的,最大限度地保證了用戶的使用習(xí)慣,方便用戶快速使用。
界面主要是通過(guò)調(diào)用后臺(tái)的MaterialLib.rc文件來(lái)顯示界面。RC文件是資源文件,它是用來(lái)記錄用戶在程序中用到的各種資源,例如對(duì)話框、圖標(biāo)、光標(biāo)以及位圖等,RC文件經(jīng)過(guò)編譯會(huì)形成RES文件,RES文件會(huì)被鏈接進(jìn)最后的EXE文件中。
當(dāng)用戶單擊界面上的按鈕、下拉菜單等圖標(biāo)時(shí),通常會(huì)產(chǎn)生一個(gè)事件,程序會(huì)對(duì)不同的事件進(jìn)行不同的處理,例如用戶單擊界面的下拉菜單時(shí),材料庫(kù)系統(tǒng)就會(huì)調(diào)用OnSelchangeCombo1()函數(shù)中的代碼,該函數(shù)在組合框的編輯內(nèi)容發(fā)生改變時(shí)自動(dòng)進(jìn)行響應(yīng)。而在第一次響應(yīng)時(shí),組合框沒(méi)有選定內(nèi)容,也就是m_cb.GetCurSel()的值為-1,這樣m_cb.GetLBText肯定會(huì)出現(xiàn)異常。去后臺(tái)讀取材料庫(kù)中的數(shù)據(jù),并返回最新的材料數(shù)據(jù),然后顯示在主界面中的表中。combo BOX是下拉框選擇控件,用戶單擊界面中的材料目錄就會(huì)出現(xiàn)下拉并顯示材料庫(kù)的主體目錄(例如,用戶選擇了下拉菜單中的“有色金屬”選項(xiàng),程序就會(huì)去后臺(tái)調(diào)用數(shù)據(jù)庫(kù)中已存儲(chǔ)的材料庫(kù)信息,并通過(guò)界面上的表格顯示,供用戶參考和使用)。void CXxxDlg::OnEditchangeCombo1()函數(shù)是響應(yīng)組合框的編輯內(nèi)容發(fā)生改變時(shí)響應(yīng)的,而在第一次響應(yīng)時(shí),組合框沒(méi)有選定內(nèi)容,也就是m_cb.GetCurSel()的值為-1,這樣m_cb.GetLBText肯定就會(huì)出現(xiàn)異常。
分類的標(biāo)準(zhǔn)主要是根據(jù)材料的屬性和名稱,一級(jí)分類是有色金屬材料(非金屬材料和黑色金屬材料),二級(jí)分類是材料的名稱,三級(jí)分類是牌號(hào),一級(jí)、二級(jí)分類見(jiàn)表1,以下分類基本包括機(jī)械行業(yè)的所有分類。
表1 材料分類
每個(gè)牌號(hào)對(duì)應(yīng)1種材料,每種材料都有自己的屬性,包括名稱、標(biāo)準(zhǔn)號(hào)、規(guī)格號(hào)、適用范圍、鋼絲規(guī)格、示例說(shuō)明和標(biāo)注示例,示例見(jiàn)表2。
表2 材料屬性
該系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)是存儲(chǔ)在Microsoft Excel中的,但是當(dāng)用戶從界面上單擊需要獲得某一種材料的屬性時(shí),程序就會(huì)調(diào)用ReadFile函數(shù)中的代碼,以讀取后臺(tái)的Excel文件。用戶選擇界面上的某一個(gè)材料,程序根據(jù)用戶選擇,通過(guò)調(diào)用NX/Open API接口去后臺(tái)數(shù)據(jù)庫(kù)中得到相關(guān)材料值,并顯示在主界面上的相應(yīng)表格中。
BOOL CRegistSheet::ReadFile是指從文件指針指向的位置開(kāi)始將數(shù)據(jù)讀到一個(gè)文件中,且支持同步和異步操作,如果文件打開(kāi)方式?jīng)]有指明FILE_FLAG_OVERLAPPED,那么當(dāng)程序調(diào)用成功時(shí),它將實(shí)際讀出文件的字節(jié)數(shù)保存到lpNumberOfBytesRead指明的地址空間中。CExcelFile是進(jìn)行Excel文件(讀/寫(xiě))操作。寫(xiě)操作是寫(xiě)入Excel文件只能是 *.csv的后綴文件(與txt一樣,以二進(jìn)制文本形式存儲(chǔ),它是以逗號(hào)分隔符作為單元格內(nèi)容的劃分, .xls存儲(chǔ)比較復(fù)雜, .csv文件可以通過(guò).xls或者.xlsx文件另存為,選擇.csv文件格式),它們可以通過(guò)Notepad++等記事本軟件當(dāng)做txt文件打開(kāi)。讀取操作是讀取Excel文件的操作,使用了文件隨機(jī)定位函數(shù)fseek()進(jìn)行數(shù)據(jù)讀取。prev_cells.cells.Copy可以對(duì)Excel進(jìn)行單行復(fù)制、多行復(fù)制、單列復(fù)制以及多列復(fù)制的操作。使用Rows.Add添加新行,使用Rows.Remove刪除指定行列的數(shù)據(jù)。
用戶進(jìn)入NX后,如果需要查看相關(guān)材料的屬性值,就單擊材料庫(kù)菜單,在彈出的材料庫(kù)對(duì)話框中,用戶可以實(shí)現(xiàn)查看材料庫(kù)中的材料信息、把材料值直接標(biāo)注在模型上以及把材料等屬性值寫(xiě)入部件屬性等功能,材料庫(kù)系統(tǒng)通過(guò)使用NX/Open API 調(diào)用存儲(chǔ)在后臺(tái)的材料庫(kù)信息,并顯示在前臺(tái)界面或者三維模型上的屬性中。其系統(tǒng)邏輯結(jié)構(gòu)如圖3所示。
圖3 邏輯分析圖
材料庫(kù)系統(tǒng)從功能上主要分為4個(gè)模塊,分別是“查看材料值”“三維模型標(biāo)注材料值”“輸入修改材料值”和“篩選材料值”。各個(gè)模塊的功能描述見(jiàn)表3。
表3 模塊功能描述
用戶先啟動(dòng)NX,然后新建或打開(kāi)1個(gè)模型,單擊菜單欄上的材料庫(kù)按鈕,啟動(dòng)材料庫(kù)系統(tǒng),此時(shí)用戶就可以使用材料庫(kù)的功能,例如查看材料庫(kù)、編輯材料以及寫(xiě)入部件屬性等功能。如圖4所示。
圖4 流程圖
界面測(cè)試要求如下:用戶進(jìn)入NX,打開(kāi)1個(gè)模型,選擇菜單欄上的“OpenTools”,然后單擊“材料庫(kù)”,就會(huì)正常彈出1個(gè)材料庫(kù)對(duì)話框。輸出結(jié)果如圖5所示。
圖5 材料庫(kù)界面測(cè)試
測(cè)試要求如下:用戶單擊材料庫(kù)界面上的“目錄”“材料名稱”或“牌號(hào)”下拉選項(xiàng),選擇一個(gè)材料屬性,下面的表格會(huì)顯示相應(yīng)的材料庫(kù)數(shù)據(jù)。輸出結(jié)果如圖6所示。
圖6 材料庫(kù)篩選測(cè)試
測(cè)試要求如下:用戶選擇某一個(gè)材料屬性,把它附加到模型的屬性中,模型的屬性值會(huì)被附加上材料值。輸出結(jié)果如圖7所示。
圖7 標(biāo)注功能測(cè)試
該系統(tǒng)來(lái)源于設(shè)計(jì)生產(chǎn)中的用戶需求,基于NX的材料庫(kù)解決了用戶在設(shè)計(jì)、仿真和制造過(guò)程中出現(xiàn)的材料前后不一致甚至出現(xiàn)錯(cuò)誤的問(wèn)題。該系統(tǒng)主要提供了提供材料庫(kù)的篩選查看、編輯修改和模型標(biāo)注功能。通過(guò)用戶的實(shí)際反饋來(lái)看,該系統(tǒng)能夠解決他們實(shí)際中遇到的關(guān)于材料庫(kù)的問(wèn)題。