NX的本地材料库技术研究
2020-03-22李如忠
李如忠
(中国工程物理研究院 电子工程研究所,四川 绵阳 621900)
0 引言
NX软件是一个集成CAD/CAE/CAM的系统软件,它为工程设计人员提供了非常强大的应用工具。随着NX软件的发展,使其在仿真分析方面的能力和传统的有限元分析软件不相上下。NX中CAD、CAE的模型具有强关联性,当对CAD几何模型进行了修改,CAE模型包括网格也可以随之更新。反之,在CAE中优化后的模型也可以直接反馈到CAD模型中,用户可以快速在设计与分析之间切换,真正做到设计分析一体化。
在NX软件中CAD和CAE使用同一个材料库,只要在CAD建模中给实体赋予了材料,材料属性参数可以直接传递到重量计算、仿真分析、制造等环节。NX系统自带的材料库的材料是按照国外的材料标准建立的,与国内标准的材料信息不相符。目前普遍的做法是:设计单位自己建立自定义格式的材料数据库,再通过NX二次开发的方法,把材料相关信息直接赋给NX模型文件属性,而赋给NX模型文件的属性只包含材料名称、牌号、规格等简单的文本信息,信息量小,且不能直接用于重量计算、仿真分析等后续环节。重量计算、仿真分析环节需要的材料信息只能先从模型文件属性中得到材料名称、牌号等信息后再从材料数据库中查询,然后手工输入到重量计算、仿真分析等,这样严重影响了工作效率,且不容易使各个环节使用同一个材料信息。
本文通过对NX材料库的组织形式进行分析,找到了一种建立满足国内标准和使用习惯的NX材料库的方法。
1 NX材料库的组织形式
在NX中材料库是以一系列XML文件的格式进行存储。XML是一种标准通用标记语言,但比标准通用标记语言简单,能实现标准通用标记语言的大部分功能。XML的简单使其易于在任何应用程序中读写数据,已经成为数据交换的唯一公共语言。
在NX的安装目录(...\UGII\materials)中存储了NX内置的本地材料库文件,其中主要文件有材料定义文件(physicalmaterialdefinitions.xml)、材料属性定义文件(physicalmaterialxxxxxxxdefinition.xml)、材料数据库文件(physicalmateriallibrary.xml)以及其他的定义文件。
1.1 材料定义文件
在NX中材料定义文件(physicalmaterialdefinitions.xml)主要是对材料库中所包含的材料属性进行定义,文档结构如图1所示。
(1)文档第一行说明XML文档的版本号和应用的语言编码。
(2)从第二行开始是注释文档,对当前的XML文档进行说明,注释文档包含在<!--与-->之间。
(3)注释文档下面是文档类型定义(DTD),通过materialsdefinitions.dtd文件进行定义文档的类型,它使用一系列合法的元素来定义文档的结构。
(4)文档类型定义后面定义了多个实体,一个实体占用一行,代表了材料的一个属性。如材料密度属性定义中:densityProperty是属性名,后面的XML文件名是属性数据格式的定义文件。
(5)定义属性实体后是定义材料库中各种材料所包含的属性,从<Materials versionNumber="1">开始分别定义各向同性材料、正交各向异性材料、各向异性材料、流体材料、超弹性材料等。该部分定义了各种材料在材料库中存储的材料属性和在定义材料时显示的界面。当利用NX新建材料时显示的类型就是在该部分定义的内容。
1.2 材料属性定义文件
在NX中材料属性定义文件就是在材料定义文件中实体对应的文件,下面以材料密度属性为例来说明属性定义文件的格式。材料密度属性文件(physicalmaterialdensitydefinition.xml)定义如下所示:
<Property name="Mass Density(RHO)" 属性名称
neutralName="MassDensity" 属性别名
valueType="scalarField" 值类型:标量值
Dimensions="&MeasureMassDensity;" 度量单位:密度单位
在materialconstants.dtd中定义为“4”,该值就是在NX菜单“分析->
单位管理”中在单位列表中的序号
scaleFactor="true"> 比例因子
<DefaultValue value="&valueZero;"/> 默认值:0
<LowerBound value="&valueZero;" 最小值:0
inclusive="true"/> 是否包括最小值
<UpperBound value="&maxFloat;" 最大值:最大浮点数
inclusive="true"/> 是否包括最大值
<FieldDefn nDomains="3"> 定义场选项数为3
<Domain type="&DomainConstant;"/> 场类型:场为常数
<Domain type="&DomainTemperature;" 场类型:温度场
nVariables="1"> 变量数为1
<Variable Measure="&MeasureTemperature;"/>变量单位:温度
</Domain>
<Domain type="&DomainFrequency;" 场类型:频率场
nVariables="1"> 变量数为1
<Variable Measure="&MeasureFrequency;"/> 变量单位:频率
</Domain>
</FieldDefn>
</Property>
材料密度属性文件中,前面带&符号的参数是在materialconstants.dtd文件中定义的,其他参数都是在materialproperty.dtd文件中定义的。
图1 材料定义文件文档结构
1.3 材料数据库文件
在NX中系统自带的材料数据库文件为physicalmateriallibrary.xml。材料数据库文件前半部分是材料的各属性数据,后半部分是材料属性的单位定义。
2 建立NX本地材料库的方法
建立符合企业要求的NX材料库需要根据企业实际情况修改材料定义文件、建立材料的属性定义文件和建立材料数据库文件。
2.1 修改材料定义文件
建立NX本地材料库必须在材料定义中增加必要的属性,比如增加材料的标准、供应状态等。添加材料的属性需要在physicalmaterialdefinitions.xml文件中增加实体,在材料包含的属性中添加新属性。如图2所示,在材料库中增加了材料标准属性。
图2 增加材料标准属性
2.2 建立材料属性的定义文件
根据材料定义文件中增加的实体文件名,新建一个XML文件,参考NX材料属性定义的语法定义属性文件。如图3所示为材料标准属性的定义文件,在一个XML文件中可以定义多个属性,但多个属性在材料定义文件中只能一起使用。
图3 材料标准属性定义文件
2.3 建立材料数据库文件
本地的材料数据库文件既可以修改NX自带的材料数据库文件,增加相应的材料,也可以建立用户定义的材料数据库文件,用户定义的材料数据库文件与NX系统自带的材料数据库文件格式完全一致。为了通用性,建议建立用户定义的材料数据库文件。
建立用户定义的材料数据库文件有以下两种方式:第一种是直接编辑用户定义的材料数据库文件(XML文件),这种方式对XML语法要求比较高,一般是通过高级语言(C#、Java等)编程处理XML文件;第二种是先在NX中新建本地材料,输入材料的各种属性,生成本地材料,再把本地材料导出为材料数据库文件。本地材料库中的材料属性如图4所示。
图4 本地材料库的材料属性
2.4 材料库中中文属性的处理
在NX的较低版本(NX8.5)中材料的属性和材料的名称等不能输入中文,可以用以下两种方法解决:
(1)修改XML的语言编码,这种方法只适用于中文Windows操作系统。具体操作是在需要使用中文的XML文件的第一行修改或增加如下内容:
<?xml version="1.0"encoding="gb2312"?>
(2)设置多国语言支持。在定义材料属性的XML文件中需要使用中文的地方用英文字符表示。通过NX的nldmgr.exe程序,把中英文对照翻译为NX软件语言文件。在NX中简体中文语言文件是ugii_simpl_chinese.lng,先用 nldmgr.exe程序把ugii_simpl_chinese.lng转换为txt文件,在txt文件中增加相应的中英文对照;然后再用nldmgr.exe程序把txt文件转换成lng文件,替换系统自带的简体中文语言文件。如果材料库用于其他语言,只需修改相对应的语言文件即可。
3 模型文件中的属性管理
在基于模型定义(MBD)的产品设计时,需要在模型文件中设置与材料相关的属性,比如材料名称、标准、规格等。
在模型文件中添加材料相关的属性可以用NX二次开发的方法实现。在NX二次开发程序中,首先读取模型中每个实体所赋予的材料,再根据材料参数设置模型文件的相关属性。
NX二次开发程序主要用到以下函数(C#语言):
PhysicalMaterial[]mats= WorkPart.MaterialManager.Physical Materials.GetUsedMaterials();//返回模型文件中用到的所有材料
PhysicalMaterial.GetUsage(out objects);//返回用到该材料的对象
matrial.GetPropTable().GetStringPropertyValue(属性名);//返回材料的属性数据
WorkPart.SetUserAttribute();//设置模型文件的属性
NX二次开发程序的运行方式有三种:
(1)手动运行。设置完实体的材料后,手动运行添加模型文件属性的程序。
(2)设置为保存文件时自动运行。把NX二次开发程序的入口设置为保存文件,每次保存文件时后台自动运行设置模型文件属性的程序。
(3)设置为指派材料命令之后运行(NX10.0版本以上)。把NX二次开发程序的运行命令添加到指派材料的菜单命令之后,当在NX中指派材料后会自动运行设置模型文件属性的程序。
另外,对于模型文件材料相关的属性可以在二次开发程序中对属性锁定,不允许用户手动更改,这样可以保证模型文件的材料相关属性与实体的材料属性相一致。
4 材料库的管理
对于一个企业,可以建立统一的材料库文件,材料库文件保存在企业内部网络服务器中,设计师在NX中指派材料时,选择企业的材料库文件。
在有的企业中,可能用到的材料种类特别多,材料库比较庞大,在NX中指派材料时无法查询搜索,可以通过NX二次开发实现查询搜索,NX二次开发程序先在材料库中搜索查询到需要的材料,再对实体指派材料。
5 结语
通过分析NX材料库的组织形式,建立了符合国内标准和使用习惯的NX本地企业材料库,解决了低版本NX材料库无法显示中文的问题。NX本地企业材料库可以用在CAD、CAE、CAM的各个环节,为各个环节提供统一的材料数据,提高了设计质量和设计效率。