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