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