CAD/CAM软件
按行业筛选
请选择行业
----------------------
-全部行业
------------------
-机床与金属加工设备
-刀具/量具/夹具/磨具
-模具设计与制造
-塑料机械/橡胶机械
-通用机械/化工机械
-工程机械/建材机械
-交通运输/海工装备
-农业机械
-食品机械/烟草机械
-包装机械
-印刷机械/广告设备
-纺织机械
-木工/造纸/环保/医疗设备
-物流设备
-智能楼宇/安防设备
-炉窑/热处理设备
-五金工具
------------------
-工业自动化
-佳工激光网
-仪器/仪表/衡器
-电力设备
-电子/通讯/办公文具
-家电/照明/健康设备
------------------
-基础件/通用件
-标准件
-工业原材料
-电子元器件及材料
-包装材料
------------------
-CAD/CAM/PDM/PLM
-ERP/制造业信息化
-管理咨询/认证
-服务/培训/工业设计
按产品筛选
----------------------
-本行业全部文章
--------------------
-CAD/CAM软件
-CAE/模拟仿真
-PDM/PLM/C
-EDA/专用CAD
-三维打印机
-三坐标测量机
-三维扫描仪
-CAD硬件/先进制
查看本类全部文章
NX文件内部产品数据管理
作者:
1 前言
众所周知,在企业里用户利用PDM 系统对产品的数据进行管理。从数据管理的概念和理论角度考虑,这种数据管理系统的开发和实现都是非常容易的事情。但是用户在对企业的产品数据进行管理的时候还是会遇到一些问题,虽然我们有CAD 系统,CAE 系统,CAM 系统,PDM系统等,产品数据管理的效率仍然有待提高。问题出在什么地方?事实上,无论从哪个单一系统的角度考虑,每套系统都非常优秀,问题出在系统与系统的衔接上。
随着科技的发展,产品信息变得越来越丰富,而且产品数据之间的关系也变得更加复杂,从简单的层状结构转变为网状结构,数据之间的相互作用从单一方向的数据传递演变为多向数据互相作用。不同系统(CAX,PDM.等)的开发源自于这个网状结构中不同的数据子集管理的需要,但是随着不同系统的广泛使用,原有系统所支持的数据集需要扩容来适应不同的需要,这便造就了目前国内外市场上名目繁多,而在功能上部分重叠,大部分重叠甚至全部重叠的各式各样的产品辅助设计和制造以及数据管理系统软件。
鉴于这种情况,在企业里不得不采用不同的软件系统处理不同的数据集,从理论上讲人们希望将这些数据集的管理纳入统一的框架-PDM系统进行管理,但是实际上很难做到。目前的状况是,PDM系统管理了很大一部分不同系统外围的数据,例如数据文件的管理和定义,但是有些系统文件内深层的数据并不见得能够开放到外层,或是即便开放到了外层,PDM系统也无法对它所针对的内部数据进行控制。例如我们都知道,一个产品可以分为不同的部件,这些部件组合起来形成为装配文件,用户可以对每个部件文件和装配文件定义不同的数据,如果PDM系统能够和CAX系统有很好的通讯机制的话,用户希望可以直接由PDM系统去驱动CAX系统中相应的数据进行更新或者反向更新。然而事实上是,PDM系统能够定义一些产品数据,但是接受不接受这些产品数据是由下游系统CAX决定的,CAX系统也没有义务必须按照PDM系统所需要的格式对自身的数据进行控制,CAX能开放多少数据给PDM系统接受控制也无法确定,不同企业有不同的要求。通常CAX系统仅给出一些自身通用的数据到外层接受PDM系统的控制,这在实际应用中显得远远不够。
如果我们能够设计一种媒介,使得用户能够根据自身的需要定制将CAX系统中的什么数据交出去又可以读进来,如下图,用户数据可以通过定制的MEDIA通道和PDM系统进行交互,数据传递的瓶颈就可以得到解决。
图 1不同系统间的数据传递
为了实现这个目的,本文作者在UG NX (CAD系统)上借助二次开发工具和Windows编程开发了一个小的程序,主要完成以下一些功能:
a.能够读入以XML文件格式纪录的产品信息
b.为用户提供一个交互式的选择产品信息并将相应信息存入CAD文件的工具
c.为用户提供一个交互式的读取CAD文件中物体信息的工具
d.能够将读出的CAD文件中物体的信息输出成为XML文件供其它程序使用
本文的章节主要有以下几部分组成:第二章将首先介绍这个小程序的功能定义和实现方式,第三章将介绍一个具体的应用实例,第四章介绍有关UG NX的二次开发环境和本次实践所采用的开发方法,最后是本文的总结和程序的应用前景。
2 功能定义和实现
2.1 功能分析
首先,通过对需求的分析,我们将功能模块进行细化可以得到如下的表格:
2.2 XML文件格式
XML文件具有一系列的特点,例如数据文件以文本方式记录可直接进行修改,数据的组织以树状列表形式表现,数据的定义,存储和显示可分开进行管理等。这些特性使得XML文件非常适合作为轻量数据的管理媒介,并且已经广为被工业界所认可,用于不同系统之间的数据传递。
过去的CAX软件系统往往自己有自己的二进制格式文件,每家厂商的所采用的数据结构和对数据的处理方式都不一样,造成了很多数据壁垒,即便用专业工具对数据文件进行格式转换,数据丢失仍然是必然,这里所说的数据丢失不仅仅指几何方面的信息,用户自己订制的信息因为不在通用数据标准(IGES, STEP等)的管理范畴,往往是完全丢失。
随着XML技术的普及,现在的CAX软件商也逐渐考虑将XML文件格式引入CAX软件数据的描述中,例如UGS 公司的PLM XML,IBM Dassault Systemes的3DXML等。UGS公司的PLMXML的格式标准已经开放,但是由于不同用户的不同需求,无论哪一套标准都不敢保证一定能覆盖用户的所有需求,另外数据格式越是标准,XML文件就越缺乏灵活性,而且从企业的角度考虑,某些情况下企业可能希望内部采用复杂而全面的数据记录标准,便于对自己的产品进行全面的管理,对外则有选择性地选取不同的通用标准,普遍性和特殊性永远是共存的。
所以本文作者在这里仅仅提出一种自由定义的非常简单的XML文件格式,主要目的是为了展示通过XML文件对系统内部用户数据进行管理,导出和引入的方法。数据格式和处理方法仅供参考。
在本文所采用的XML文件中仅有三种数据单元:COLLECTION, CATEGORY和ELEMENT。COLLECTION 代表一组数据单元的集合,不具备特定含义。 CATEGORY代表一组具有意义的数据单元的集合。ELEMENT 是最基本的数据单元,用于记录数据项。
COLLECTION和CATEGORY仅有一个属性NAME用于记录COLLECTION 和CATEGORY的名称。ELEMENT数据单元可以由多个属性, 属性的多少和内容根据这个数据单元所代表的意义而定,例如如果这个单元代表某种材料,那么它的属性中就可能包括DENSITY, VICKERS_HARDNESS, ULTIMATE_TENSILE_STRENGTH等,但是每个ELEMENT数据单元必须具有一个NAME属性用于标识这个数据单元,另外一个属性OPTION 用于表示这个ELEMENT数据单元和它同级的数据单元之间的关系,如果有OPTION这个属性的就表示这个数据单元和它同级的数据单元之间是可以多选的关系,如果没有这个属性标签就表示这个数据单元和它同级的数据单元之间是只可唯一选择关系。如果是多选的关系,OPTION属性的值要保证在它的父亲单元下是唯一的,否则就会在数据处理过程中被具有相同OPTION属性值的数据单元所替代。
XML文件的一个基本框架可以如下图表示:
图 2XML文件的基本框架
2.3 用户界面
2.3.1 程序入口
图 3程序入口菜单
2.3.2 程序主窗口
图 4程序主窗口界面
当用户通过菜单进入主程序之后,程序的主窗口会从UG NX的主窗口左侧飞入,然后依附在UG NX 主窗口的左侧。主窗口的界面设计模拟UG NX 的 Resource Bar 窗口的形式,按照功能需要分为两个Tab页面,上边的Tab页面用于添加属性,下边的Tab页面用于读取属性。程序为每一个页面在右侧提供了一个树状列表用于显示分类可选属性列表和物体属性列表。程序的退出是通过主窗口右上方的退出按钮实现的。程序的所有功能操作均以右键菜单的形式实现。右键菜单在每个Tab页面是不一样的,当用户在添加属性页面上操作的时候,功能菜单包括读取XML文件(Load Data)和附加属性(Attach),当用户在读取属性页面上操作的时候,功能菜单包括读取物体属性(Retrieve)和存储XML文件(Save Data)。
2.4 操作流程
用户的基本操作流程可以分为两支,上边的流程用于为物体添加属性,下边的流程用于读取物体属性并输出:
当用户为物体添加属性的时候,用户首先激活添加属性Tab页面,然后点右键选取Load Data操作,这时候程序会弹出Windows标准文件选取对话框供用户选择文件,文件的格式被指定为“*.xml”文件。当用户选好了文件,并OK退出文件选取对话框之后,程序会自动的将XML文件中的属性列表添加到程序界面上的树状列表中,接下来用户可以展开树状列表,选取想添加的属性,当所有属性选择完毕之后用户再次点右键选取Attach操作,这时程序会暂时隐藏主程序窗口,并弹出UG NX标准的Class Selection对话框,让用户选取物体,当用户将物体选取完毕,按OK键退出Class Selection对话框之后,主程序界面恢复,同时所有属性已经自动添加到物体上了。
图 5用户操作基本流程分支
在从物体读取属性的时候,用户首先激活读取属性Tab页面,然后点右键选取Retrieve操作,这时程序会暂时隐藏主程序窗口,并弹出UG NX标准的Class Selection对话框,让用户选取物体,当用户将物体选取完毕,按OK键退出Class Selection对话框之后,主程序界面恢复,同时程序会自动的将物体中的属性列表添加到程序界面上的树状列表中供用户查阅,再次点右键选取Save Data操作,这时候程序会弹出Windows标准文件存储对话框供用户指定存储文件,文件的格式被指定为“*.xml”文件。当用户指定好了文件,并OK退出文件存储对话框之后,XML文件便自动的存档了。
3 应用实例
为了验证程序的设计,本文作者做了个简单的应用实例。这个实例的构想来自于HVAC的流道分析模拟。我们知道在进行流体分析的时候首先要定义流道,流道壁的材质,物理参数,功能参数等,这些均可以看作是CAD物体中某个元素的属性。但是由于在CAD文件中几何元素非常之多,如果一个一个为每个几何元素添加这样或那样的属性,将非常费时间。所以本文作者首先将可能遇到的属性进行分类,并将每个类中可能的元素罗列出来,并把这一切按照第二章中所设计的XML的文件格式记录下来。然后将这个XML文件读入程序,分几次分别选择不同的属性集和对应的物体,将所有的参数全部以属性的方式加到流道的不同表面上。然后激活读取属性页面,选择用户关心的几个流道的表面,读取相应的属性到列表并存挡。
如下图所示,在这个流道中三个面所用的材料,功能,物理特性以及加工方法均不一样。我们将所涉及的材料,物理特性,功能和加工方法属性进行分类整理记录在XML文件内。
图 6实例XML文件
在读取XML或者物体属性信息的时候,树状列表呈现如下形式:
图 7读入XML文件之后列表(左)和读取物体属性之后列表(右)
当将所选属性加到了所选物体上之后,我们用UG NX所提供的属性查看工具检查物体的属性列表:
图 8查看加好的物体属性列表
在这个应用实例中似乎并没有看到什么有关PDM系统的内容。事实上,如果我们的XML文件能够自动的由PDM系统产生,通过这个工具就可以将PDM系统中的数据信息加到CAD文件中的几何物体上。与此类似,我们输出的物体属性信息可以再次读入PDM系统进行管理,或者作为媒介供其它程序系统(CAE,CAM等)使用,这些系统中用户开发的模块可以按照此XML文件的格式解析物体的属性,然后进行相应的处理。
4 开发环境和方法
考虑到终端用户所能够接触到的开发环境和开发工具,本文作者完全采用UG NX的用户开发环境进行程序的设计和实施。程序的开发采用UG NX的基本开发包Open API (C语言版)和C语言。 在程序界面的设计上,本文作者在这里采用在UG NX的开发框架中利用Windows 平台基本编程(Windows Platform SDK)进行程序界面的设计,这样大大扩展了用户可以设计的界面形式(如果用户操作系统不是Windows环境,改用相应的Platform SDK进行开发,道理是一样的)。在本例中,作者在界面设计上着重展示了以下几点供后继的开发者作为参考:如何设计Windows 对话框,如何弹出Windows 设计的对话框,如何捕捉Windows 消息,如何使主程序窗口飞入UG NX 主窗口,如何在UG NX 下定位用户窗口,如何读取和存储XML文件,如何与UG NX 交接控制权等。
4.1 UG NX用户开发的基本知识
有关UG NX 用户利用C语言进行开发的基本方法在UG NX 的用户手册中已经有很详细地描述,在这里本文作者不再详述。仅需指明以下一点:
UG NX 用户程序的入口函数在本例中采用:void ufusr( char *parm, int *returnCode, int rlen ),因为这个程序将建立自己的Windows Callback机制, 函数extern int ufusr_ask_unload( void ) 的返回值一定要设为:UF_UNLOAD_UG_TERMINATE。
4.2 Window 对话框开发
利用Windows Platform SDK进行Windows对话框的开发,非常容易。我们只需要定义Resource文件(*.rc)和相应的头文件(一般为resource.h)并把这两个文件加入我们的工程进行编译就可以利用其中的资源了。Microsoft Visual Studio产品提供了一个资源编辑器,用它可以快速的定制对话框,图片,图标,菜单等资源。有关这部分的内容用户可以查看Windows Platform SDK的开发手册 和MSDN的相关章节。
将Windows对话框弹出来利用函数:
HWND CreateDialog( HINSTANCE hInstance, LPCTSTR lpTemplate,HWND WndParent, DLGPROC lpDialogFunc);
在生成Windows对话框的时候我们利用注册了一个Windows的Callback函数,就是最后一项DLGPROC lpDialogFunc。这个函数要按照特定的格式编写,有关Windows的消息处理都是在这个函数内完成的。
让窗口从一侧飞出来属于Windows的特效,实施这个特效利用函数:
BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags);
将我们所设计的Windows对话框定位在UG NX的主窗口中,我们首先需要获得UG NX 的主窗口和当前的工作线程(Instance),这是通过以下两个函数实现的:
HWND GetForegroundWindow();
HWND GetWindow(HWND hWnd, UINT uCmd);
获得有关窗口的形位信息和对窗口从新定形定位是通过以下两个函数来实现的:
BOOL GetWindowRect(HWND hWnd, LPRECT lpRect);
BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
4.3 XML文件的操作
对XML文件的操作用户可以利用MSXML所提供的SDK来进行开发。有关这部分的内容用户可以参考MSXML SDK的用户手册和MSDN的相关章节。
包含MSXML SDK所需要的头文件和库文件通过如下语句实现:
#import "msxml.dll" named_guids
创建XML数据集的实例通过下面函数实现:
WINOLEAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv);
打开XML文件和存储XML文件通过如下两条语句实现:
VARIANT_BOOL MSXML::IXMLDOMDocument::load (const _variant_t & xmlSource);
HRESULT MSXML::IXMLDOMDocument::save (const _variant_t & destination);
4.4 Windows对话框和UG NX 的通讯
因为我们的Windows代码是直接嵌入UG NX的开发框架的,所以可以直接调用UG NX 的Open API 函数对UG 内部的数据和物体进行操作,这里仅需要指出的是控制权的交接。这发生在当我们在Windows对话框中调用UG NX的函数弹出UG NX的对话框时,我们需要先将Windows对话框锁住并隐藏,然后UG NX 的对话框才会显现,当UG NX对话框的任务完成了之后,成需要将Windows主对话框解锁并重新显现,这是通过以下一系列函数实现的:
// Hide current user dialog and lock UG session
ShowWindow(hMainDlg, SW_HIDE);
UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);
……
UF_UI_select_with_class_dialog("Select Objects", "User Selection", UF_UI_SEL_SCOPE_NO_CHANGE, InitSelectionProc, NULL, &iRetVal, &iCount, &Objects);
……
// Unlock UG session and show user dialog
UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);
ShowWindow(hMainDlg, SW_SHOW);
5 结论
本文作者在UG NX平台上借助UG NX Open API开发了一个小工具,使得用户可以将在外部系统产生的XML格式的数据信息读入到UG NX系统内,并为系统内的物体加上相应的属性,同时用户还可以将UG NX系统内物体的属性以XML文件的格式输出到外部,供其它系统使用和管理。本文作者的出发点是希望能够提供给各个系统终端用户一种方法,使得他们能够自由的在各个系统间传递用户所需要的专有数据,从而结合现有的PDM系统组成完整的数据传递和管理体系。(end)
文章内容仅供参考
(投稿 )
(如果您是本文作者,请点击此处 )
(7/11/2006)
对 CAD/CAM软件 有何见解?请到 CAD/CAM软件论坛 畅所欲言吧!