產(chǎn)品的三維模型是包含產(chǎn)品全部設計信息的數(shù)據(jù)集合,是產(chǎn)品設計、工程分析、產(chǎn)品數(shù)字化制造等的信息載體。產(chǎn)品三維模型數(shù)據(jù)文件中會存在很多缺陷和設計不規(guī)范,存在的缺陷比如在幾何信息中存在太尖的夾角、太窄的面、自相交的曲線曲面等;存在的設計不規(guī)范,比如特征的不合理使用、圖層的錯亂放置、命名的不規(guī)范等。三維模型質(zhì)量的好壞直接影響產(chǎn)品的質(zhì)量,為了控制產(chǎn)品的質(zhì)量,在產(chǎn)品設計階段中對三維模型進行必要的質(zhì)量和標準化檢查顯得尤為重要。要求三維模型的設計必須符合企業(yè)要求的規(guī)范和標準,從產(chǎn)品全生命周期的源頭上控制產(chǎn)品的質(zhì)量。當前各主流的三維CAD軟件如CATIA、Pro/E等系統(tǒng)都為三維模型數(shù)據(jù)檢查提供了有關(guān)的功能模塊和開放接口。Siemens公司的NX軟件在HT3D的Check-mate模塊中提供了CAD模型的標準化檢查,同時開放了自定義的功能便于企業(yè)根據(jù)適合行業(yè)或企業(yè)規(guī)范的自定義的檢查規(guī)則。雖然這些主流的三維設計軟件提供了這些功能模塊,但是企業(yè)如何歸納定義驗證知識和加以規(guī)范,并用來檢查三維模型數(shù)據(jù),目前來說在國內(nèi)企業(yè)中應用很少,應用的層次太低。
本文在研究NX Check-mate模塊的基礎(chǔ)上,結(jié)合NX中知識工程語言——知識熔接(Knowledge Fusion通常簡稱為KF)和NX Open二次開發(fā)技術(shù),提出了一套企業(yè)自定義驗證知識庫的方法,并把這些方法用于三維數(shù)據(jù)模型的檢查。使用該技術(shù)可以方便企業(yè)建設適合企業(yè)自身需求的模型驗證的KF函數(shù)庫和三維數(shù)據(jù)模型的驗證知識庫,具有很高的應用價值。
1 NX Open
NX Open是一系列NX開發(fā)工具的總稱,是NX軟件為用戶或第三方開發(fā)人員提供的最主要的開發(fā)工具,目前NX Open開發(fā)技術(shù)日益完善和成熟,在支持傳統(tǒng)的User Function基礎(chǔ)上,增加了NX Open for C++、NX Open for.NET以及NX Open for Java等開發(fā)工具,用戶可以根據(jù)自身的需要選擇相應的工具。NX Open能夠最大限度擴展NX的功能,更好地為企業(yè)個性化需求提供服務。
2 驗證知識庫
KF語言是KBE技術(shù)在NX中的應用,是NX軟件內(nèi)嵌的面向?qū)ο蟮慕忉屝哉Z言,是為產(chǎn)品設計者提供獲得和操縱工程規(guī)則、設計意圖的強有力的工具。KF語言定義用戶的檢查規(guī)則是在dfa文件中實現(xiàn)的。通過一個或多個dfa文件中定義模型的驗證規(guī)則來擴展自身的驗證知識庫。dfa文件由文件頭部分、文檔說明部分、類頭部分、屬性區(qū)和功能區(qū)等5個部分組成。文件頭部分指出該dfa文件的NX最低版本要求;文檔說明部分是對dfa文件進行功能描述、參數(shù)描述以及檢查結(jié)果的描述等;類頭部分定義檢查規(guī)則的類名,相當于驗證知識庫名,僅僅顯示名稱和所屬的類別;屬性區(qū)部分定義文件中的屬性名稱;功能區(qū)部分即do_check體部分定義驗證的規(guī)則,這部分是模型驗證規(guī)則編寫的核心。
自定義驗證知識庫的建立過程就是分析企業(yè)模型驗證的需求,在dfa文件的do_check體中通過KF代碼編寫驗證規(guī)則來實現(xiàn)這些需求。自定義驗證規(guī)則的關(guān)鍵就是KF函數(shù)的使用,通過KF函數(shù)的查找、判斷等功能來檢查模型是否符合驗證規(guī)則,并把驗證的結(jié)果報告給用戶。比如用mqc_askEmptyLayers來查找沒有對象的空圖層等。目前,三維設計軟件NX的Check-mate功能日趨完善,在Check-mate中每一個顯示名,通常稱為一個checker,NX系統(tǒng)中已經(jīng)自帶了大量的checker,用戶可以直接用來對模型、工程圖、裝配等方面驗證檢查。對于特定行業(yè)特定的企業(yè)來說,需要大量的行業(yè)知識驗證和規(guī)范檢查,NX中現(xiàn)有的checker還遠遠不能滿足企業(yè)的實際需求,這就需要企業(yè)自定義開發(fā)checker來滿足特定的需求,擴充企業(yè)的模型數(shù)據(jù)檢查的知識庫。
3 自定義知識庫
NX軟件提供了模型驗證開發(fā)的接口,能夠極大地方便企業(yè)自定義三維數(shù)據(jù)模型驗證知識庫。在dfa文件中使用KF函數(shù)把企業(yè)模型驗證的各種規(guī)則通過代碼的形式表示出來。企業(yè)創(chuàng)建驗證知識庫規(guī)則有2種方法可以使用,一種是直接使用NX系統(tǒng)自帶的KF函數(shù)來創(chuàng)建,另外一種是用戶可以使用NX Open開發(fā)自定義KF函數(shù)來創(chuàng)建驗證知識庫。
3.1 使用系統(tǒng)KF函數(shù)自定義驗證知識庫
NX系統(tǒng)提供了大量的KF函數(shù),用戶可以直接使用這些函數(shù)定義適合企業(yè)自身特定需求的驗證規(guī)則庫。定義驗證規(guī)則的范圍極其廣泛,用戶可以靈活使用。比如在標準件庫的建模中一般需要進行屬性驗證、表達式驗證、特征驗證、圖層驗證、坐標系驗證、顏色驗證以及參考集驗證等。使用自帶的KF函數(shù)能夠快速地定義驗證知識庫。對一種產(chǎn)品或者一個項目來說,可以把每一個驗證規(guī)范自定義為一個方法,放在驗證知識文件dfa中。比如定義reuse_exp_checker方法表示表達式規(guī)則的驗證,reuse_feat_checker方法表示特征規(guī)則的驗證等等。
在每個方法中,定義模型的驗證規(guī)則。比如表達式的規(guī)則驗證:
以上例子表達式驗證規(guī)則的KF代碼,用于檢查模型中的表達式是否系統(tǒng)自定義表達式、表達式名是否含有空格以及含有小寫字母等驗證規(guī)則。代碼中使用了很多系統(tǒng)提供的KF函數(shù),比如Ug_mqc_askExps用戶查詢當前part中所有的表達式,ug_rexp_match檢查表達式正則匹配,ug_mqc_log給用戶報告驗證結(jié)果。
3.2 使用自定義KF函數(shù)定義驗證知識庫
上面例子中使用NX自帶的KF函數(shù)編寫驗證規(guī)則,在企業(yè)知識庫的定義中,系統(tǒng)現(xiàn)有的KF函數(shù)還遠遠不能滿足企業(yè)的實際需求。NX Open二次開發(fā)工具為企業(yè)自定義KF函數(shù)提供了接口,企業(yè)可以根據(jù)特定的驗證規(guī)則來開發(fā)自定義KF函數(shù),建設滿足企業(yè)需求KF函數(shù)庫。使用該技術(shù)不但能夠自動驗證產(chǎn)品設計中要遵循的通用行業(yè)規(guī)范、標準,更能夠滿足企業(yè)特定驗證規(guī)則的需求,可以說該技術(shù)極大地擴展了NX模型驗證技術(shù)的使用。下面以NX Open for.NET為例來闡述用戶自定義開發(fā)KF函數(shù)以及使用KF函數(shù)建立驗證知識庫的詳細步驟。
步驟一:項目文件夾的創(chuàng)建和環(huán)境變量的設置
(1)創(chuàng)建項目文件夾,比如D:\sampleNXOpen-Checker。
(2)在該文件夾下創(chuàng)建子文件夾dfa,該文件夾用戶存放用戶自定的KF函數(shù)的dfa文件以及用于定義模型驗證知識庫的dfa文件。
(3)設定環(huán)境變量UGCHECKMATE_USER_DIR="D: \sampleNXOpenChecker"。
通過步驟一的設定,NX系統(tǒng)能夠識別用戶自定義模型驗證知識庫的dfa文件以及用戶自定義的KF函數(shù)。在3.1中使用系統(tǒng)的KF函數(shù)自定義表達式的驗證規(guī)則,方法同步驟一,區(qū)別在于3.1中不存在用戶自定義KF函數(shù)的dfa文件。
步驟二:項目的創(chuàng)建
(1)打開Microsoft Visual Studio.Net,創(chuàng)建新的項目,選擇C#項目,選擇NX Open AppWizard,類型為類庫,輸入項目的名稱。
(2)在項目設置中,選擇‘An Intemal application that can be activated from an NX session(DLL)’和‘NXOpen.UI API’。
(3)選擇NX回話結(jié)束時候,顯式激活應用程序和卸載應用程序。
步驟三:項目實例
(1)從項目中移除class.cs,添加用戶編輯的C#文件namedObject.cs。
(2)添加NX Open for.NET類庫的引用,這些類庫在% ugu_root_dir% \managed路徑下,包括NXOpen.dll、NXOpen.UF.dll、NXOpen.Utilities.dll和NX OpenUI.dll。
(3)項目完成后,編譯該項目,生成ReportNamed-Object_cs.dll,并拷貝該dll文件到$UGCHECKMATE_USER_DIR路徑下。
在項目中源文件namedObject.cs中,根據(jù)KF函數(shù)需求,編寫C#代碼;類名稱為NamedObject,方法名稱為AskNamedObjects,有一個string類型的輸人參數(shù),該方法的功能是在NX Session中根據(jù)對象的名稱,找出所有對象。
步驟四:KF函數(shù)的包裝和使用
(1)在dfa文件夾下創(chuàng)建一個dfa文件,自定義KF函數(shù)。
dfa文件中定義KF函數(shù)格式如下:
自定義KF函數(shù)AskNamedObjects_cs的第一個參數(shù)表示用戶輸入?yún)?shù)名,第二個參數(shù)表示動態(tài)鏈接庫名,第三個參數(shù)表示動態(tài)鏈接庫中的類名,第四個參數(shù)表示類中方法名稱。定義好KF函數(shù)后,就可以像NX系統(tǒng)自帶的KF函數(shù)一樣使用。
(2)創(chuàng)建模型驗證規(guī)則知識庫文件。
在dfa文件夾下創(chuàng)建模型驗證知識庫dfa文件,使用自定義的KF函數(shù)AskNamedObjects_cs來查詢當前NX的工作部件中指定名稱的對象。
(3)實例演示。
圖1 選擇自定義Checker
圖2 Checker運行結(jié)果
啟動NX,創(chuàng)建一個部件,在部件中只有一個block特征,特征名為Object。上面例子使用用戶自定義包裝的KF函數(shù)和自定義的模型驗證的規(guī)則,在默認狀態(tài)下報出所有的命名特征對象,用戶也可以使用客戶化定制輸入名稱,報出該名字的特征對象。創(chuàng)建好部件后就可以使用該驗證,首先打開Check-mate對話框,然后選擇”Examples.NXOpen”分類項,再選擇checker的名字為”Reports Named Objects(NX Open for C#.NET)”,最后單擊Execute Check-Mate(圖1);執(zhí)行的結(jié)果如圖2,找到一個命名的對象,選擇該對象,在NX圖形界區(qū),Block對象會高亮顯示。
4 結(jié)語
介紹了NX系統(tǒng)中模型驗證技術(shù)的開發(fā)應用,提出了一套切實可行的用戶自定義模型自動化驗證的方法,用戶可以建立適合企業(yè)自身需求的模型驗證知識庫,可以極大地提高產(chǎn)品模型自動化驗證水平,提高產(chǎn)品質(zhì)量的可靠性,具有很大的應用價值。另外,本文中提出的一套使用NX Open技術(shù)開發(fā)KF函數(shù)的方法,該方法可以自定義建立適合企業(yè)自身需求的KF函數(shù)庫。該方法新穎、可行,可以極大地擴展NX中模型驗證的功能,在項目開發(fā)中已經(jīng)得到了試用,具有很好的應用前景。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領(lǐng)域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/