李青祝 马玉娟
(①盐城工学院优集学院,江苏盐城 224051;②中国外运集团盐城公司,江苏盐城 224000)
产品的三维模型是包含产品全部设计信息的数据集合,是产品设计、工程分析、产品数字化制造等的信息载体。产品三维模型数据文件中会存在很多缺陷和设计不规范,存在的缺陷比如在几何信息中存在太尖的夹角、太窄的面、自相交的曲线曲面等;存在的设计不规范,比如特征的不合理使用、图层的错乱放置、命名的不规范等。三维模型质量的好坏直接影响产品的质量,为了控制产品的质量,在产品设计阶段中对三维模型进行必要的质量和标准化检查显得尤为重要。要求三维模型的设计必须符合企业要求的规范和标准,从产品全生命周期的源头上控制产品的质量。当前各主流的三维CAD软件如CATIA、Pro/E等系统都为三维模型数据检查提供了有关的功能模块和开放接口。Siemens公司的UG NX软件在HT3D的Check-mate模块中提供了CAD模型的标准化检查,同时开放了自定义的功能便于企业根据适合行业或企业规范的自定义的检查规则。虽然这些主流的三维设计软件提供了这些功能模块,但是企业如何归纳定义验证知识和加以规范,并用来检查三维模型数据,目前来说在国内企业中应用很少,应用的层次太低。
本文在研究UG NX Check-mate模块的基础上,结合NX中知识工程语言——知识熔接(Knowledge Fusion通常简称为KF)和NX Open二次开发技术,提出了一套企业自定义验证知识库的方法,并把这些方法用于三维数据模型的检查。使用该技术可以方便企业建设适合企业自身需求的模型验证的KF函数库和三维数据模型的验证知识库,具有很高的应用价值。
NX Open是一系列NX开发工具的总称,是UG NX软件为用户或第三方开发人员提供的最主要的开发工具,目前NX Open开发技术日益完善和成熟,在支持传统的User Function基础上,增加了NX Open for C++、NX Open for.NET 以及 NX Open for Java等开发工具,用户可以根据自身的需要选择相应的工具。NX Open能够最大限度扩展NX的功能,更好地为企业个性化需求提供服务。
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来满足特定的需求,扩充企业的模型数据检查的知识库。
NX软件提供了模型验证开发的接口,能够极大地方便企业自定义三维数据模型验证知识库。在dfa文件中使用KF函数把企业模型验证的各种规则通过代码的形式表示出来。企业创建验证知识库规则有2种方法可以使用,一种是直接使用NX系统自带的KF函数来创建,另外一种是用户可以使用NX Open开发自定义KF函数来创建验证知识库。
NX系统提供了大量的KF函数,用户可以直接使用这些函数定义适合企业自身特定需求的验证规则库。定义验证规则的范围极其广泛,用户可以灵活使用。比如在标准件库的建模中一般需要进行属性验证、表达式验证、特征验证、图层验证、坐标系验证、颜色验证以及参考集验证等。使用自带的KF函数能够快速地定义验证知识库。对一种产品或者一个项目来说,可以把每一个验证规范自定义为一个方法,放在验证知识文件dfa中。比如定义reuse_exp_checker方法表示表达式规则的验证,reuse_feat_checker方法表示特征规则的验证等等。
在每个方法中,定义模型的验证规则。比如表达式的规则验证:
以上例子表达式验证规则的KF代码,用于检查模型中的表达式是否系统自定义表达式、表达式名是否含有空格以及含有小写字母等验证规则。代码中使用了很多系统提供的KF函数,比如Ug_mqc_askExps用户查询当前part中所有的表达式,ug_rexp_match检查表达式正则匹配,ug_mqc_log给用户报告验证结果。
上面例子中使用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 Internal 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类库的引用,这些类库在%ugii_root_dir%managed路径下,包括NXOpen.dll、NXOpen.UF.dll、NXOpen.Utilities.dll 和 NXOpenUI.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)实例演示。
启动NX,创建一个部件,在部件中只有一个block特征,特征名为Object。上面例子使用用户自定义包装的KF函数和自定义的模型验证的规则,在默认状态下报出所有的命名特征对象,用户也可以使用客户化定制输入名称,报出该名字的特征对象。创建好部件后就可以使用该验证,首先打开Check-mate对话框,然后选择"Examples.NXOpen"分类项,再选择checker的名字为"Reports Named Objects(NX Open for C#.NET)",最后单击 Execute Check -Mate(图1);执行的结果如图2,找到一个命名的对象,选择该对象,在NX图形界区,Block对象会高亮显示。
介绍了NX系统中模型验证技术的开发应用,提出了一套切实可行的用户自定义模型自动化验证的方法,用户可以建立适合企业自身需求的模型验证知识库,可以极大地提高产品模型自动化验证水平,提高产品质量的可靠性,具有很大的应用价值。另外,本文中提出的一套使用NX Open技术开发KF函数的方法,该方法可以自定义建立适合企业自身需求的KF函数库。该方法新颖、可行,可以极大地扩展NX中模型验证的功能,在项目开发中已经得到了试用,具有很好的应用前景。
[1]花锋,周临震,刘德仿.NX模型验证机制 Check-mate综述[J].机械制造与自动化,2008,37(5):119 -122.
[2]李健,莫蓉,常志勇.CAD模型质量及标准的快速检查关键技术研究[J].航空计算技术,2010,40(3).
[3]花锋,王平.基于KF的特征识别技术的研究[J].机械设计与制造,2007(4).
[4]闵飞炎,杨明,王子才.仿真模型的智能化验证方法[J].大连海事大学学报,2010(1).
[5]NX Open for .NET reference guide[Z].Siemens Product Lifecycle Management Software lnc.,2010.
[6]Product validation checker- mate in NX7.5 help library[Z].Siemens Product Lifecycle Management Software lnc.,2010.