基于Web的Inventor-3D资源零件库系统开发

2014-12-19 01:45武园园孙文磊韩青金
制造业自动化 2014年7期
关键词:二次开发应用程序驱动

武园园,孙文磊,何 丽,韩青金

WU Yuan-yuan,SUN Wen-lei,HE Li,HAN Qing-jin

(新疆大学 机械工程学院,乌鲁木齐 830047)

0 引言

随着市场竞争的日趋激烈与制造业信息化程度的加深,企业间对获取与共享信息的效率愈来愈高。据美国先进制造研究公司(AMR)的一项研究结果表明,产品中外购零件的比重正在逐渐上升,已经从五年前的40%上升至80%甚至更多[1,2]。因此,建立零件库系统是必要的。目前国内外研究机构或企业已经开发出了很多零件库系统原型并已经投入商业运营模式,其中比较典型的有[3]:国外:3D ContentCentral系统、TraceParts系统、Web2CAD系统、InPart系统;国内的有:3DSource云应用中心、中国机械网等零件库系统。这些系统,大多数都采用了B/S构架,同时支持多种主流三维CAD建模软件,如Pro/E、Catia、SolidWorks等;系统采用不同的方式构建数据库,有“参数+模板”、大量数据形式存储等方式;用户可以使用网络浏览器访问系统,也可以在线预览零件模型。总之,这些系统可以为用户提供快速引用零件资源的平台。但是,就每个单独的系统而言,都或多或少的存在着缺点。比如:3DSource云应用中心系统,使用户无法快速定位到自己所需的零件模型资源,下载的3D模型没有设计参数,不利于用户的后续设计工作;中国机械网零件库图库目前只能提供对UG和SolidWorks两种三维软件的接口[4]。

因此,本文通过研究Inventor的二次开发技术和数据库接口访问技术,建立了一个Web三维零件库系统。系统中,综合应用ASP.NET、ADO.NET、Web3D等技术,采用“参数+模板”的模式,开发出了基于Inventor的Web三维零件库系统。

1 系统结构

1.1 系统开发工具的选用

作者开发该系统时采用的开发工具概括如下:

三维CAD软件:Autodesk Inventor Professional 2012;

编程调试软件:Visual Studio.NET 2008(以.NET FrameWork 3.5为基础、IIS 6.0为服务器,选用C#作为服务端语言、JavaScript作为前台脚本语言);

数据库软件采用Microsoft SQL Server 2005。

1.2 零件库系统总体结构

Web三维零件库系统采用了B/S结构,也就是所谓的三层体系结构,即表现层、业务层和数据层。系统的总体框架如图1所示。

表现层是对用户接口的展示,是与用户进行交互(数据交互)的窗口。用户可以通过这一层在浏览器上浏览信息,同时,用户可以通过鼠标或键盘,提交各种请求,实现用户想要的功能。业务层和数据层都是由服务器端应用程序组成。业务层是系统的中间层,也是过程层。数据层是整个系统的内容和支撑,该层将根据业务层的需要调用相应的数据,它以数据表的形式存储了零件库中的所有零件参数信息和零件描述信息,并存储了零件模板文件(* .ipt)数据和零件的浏览文件(* .wrl)数据以及标准格式文件(* .stp)数据。

图1 系统总体框架图

2 系统的实现

2.1 系统的设计思路

本零件库系统利用Inventor软件的参数化建模方法,按照模型模板+参数系列的形式构建模型数据库,当用户想要使用零件模型时,系统通过在线调用Inventor二次开发接口,即时实现参数化驱动获取用户所需的模型。

2.2 系统开发的关键技术

2.2.1 基于.NET平台下的Inventor二次开发技术

为了让用户能够更好地实现二次开发技术,Inventor软件提供了强大的API二次开发接口。Inventor API 是一种以面向对象的方式提供应用程序对象功能的应用程序接口。它提供了Inventor的各种对象的内在功能,并且各个对象间是一种相互继承的关系,该继承关系的关键在于根对象Application,通过获取对Application对象的访问权,调用与其相关的其他对象[5]。针对Inventor API,用户可以用支持自动化(OLE Automation)技术的各种高级语言来控制Inventor的各种对象与其相关属性和方法,进而开发出自己需要的应用程序。

在Inventor Professional 2012版本中,Inventor API for.NET提供了多个DLL文件,但是,对于Web零件库系统的开发功能的实现,只需要在.NET平台下引用Autodesk.Inventor.Interop.dll文件,通过声明根对象Application以及库文件的其他对象,就可以以面向对象的方式利用C#语言的语法调用各种功能函数,来完成Inventor的绝大部分操作,如生成VRML文件,对零件的参数化驱动等。

在本系统中,通过引用COM组件对象,也就是Inventor的二次开发接口类库Autodesk Inventor Object Library,获取对Application的访问权,利用C#语言以面向对象的方式编写应用程序来完成对Inventor三维零件图形的各种操作,如打开/关闭三维零件模型文件、导出VRML文件、零件参数化驱动、下载/上传等。具体过程详见Inventor二次开发步骤流程图(如图2所示)。

图2 Inventor二次开发过程

2.2.2 基于ADO.NET的数据库访问接口

ADO.NET是一组用于和数据源进行交互的面向对象类库,提供了对关系型、XML和应用程序数据的访问[6]。在.NET框架中,ADO.NET类库位于System.Data命名空间下。所以,在Visual Studio开发平台中,必须先引用System.Data.dll文件,才能使用ADO.NET中的数据库访问对象。

在本系统中,以SQL Server 2005为开发工具,利用ADO.NET的数据访问接口技术,实现了数据库的查询、添加、修改及删除等功能;并减轻服务器负担,提高了系统的运行效率,为用户提供更好的Web应用程序。

2.3 系统功能模块的实现

2.3.1 三维CAD模型的可视化

在本系统中,结合了最新的Web3D技术,实现了在Web页面中显示Inventor的三维模型,同时用户可以对模型进行移动、旋转、缩放等操作。

目前比较流行的Web 3D 技术主要有:VRML,JAVA3D,SHOCKWAVE3D,X3D等。综合比较几种Web3D技术,VRML的数据文件所描述的数据包括三维网格数据,场景信息,灯光材质及交互信息,能够较为真实的还原模型的外形信息,能够在三维场景中与用户进行交互,其描述3D场景的能力较为出众[7]。所以,本系统采用了VRML(Virtual Reality Modeling Language,虚拟现实建模语言)插件。

在本系统的开发过程中,通过对Inventor的二次开发把三维模型文件格式(*.ipt)格式转化为模型浏览文件格式(*.wrl)。在应用程序中,安装VRML浏览器插件(如BS Contact VRML),然后可通过HTML语言中的标签把插件嵌入网页中,并指定其控件识别码(ID),便可以在网页中动态的显示三维模型的浏览文件[8]。

2.3.2 在线参数化驱动

所谓在线参数化驱动,就是用户可以在系统界面中填写或者修改已有的模型设计参数,进而实现快速的变形设计。这样,不仅可以减少数据库的信息存储量,而且能够满足用户的特殊要求。

系统中零件在线参数化驱动的过程,如图3所示。用户登录系统,进入首页后,可以直接从树形菜单中选择零件名,浏览器把用户的选择提交给服务器,服务器从数据库中读取相应的零件的所有信息(包括三维可视化模型、二维尺寸标注图、产品实物图、驱动参数表达式等),并把信息返回给客户端。用户根据自己的需求在系统的要求范围内修改模型文件的原始参数,并将修改后的参数提交给服务器,服务器利用Inventor二次开发接口函数启动Inventor应用程序,调用库中的三维零件模型模板文件和用户提交的修改后的参数值,更新原始模型模板文件,完成零件的在线参数化驱动;然后,在服务端保存更新后的零件模型文件(*.ipt),导出零件的VRML文件(*.wrl);最后,服务器将更新后的新零件模型的浏览文件(*.wrl)更新到客户端供用户浏览,而存于服务端的模型文件则供用户下载。

图3 在线参数化驱动流程图

2.3.3 零件资源的动态扩充

三维零件资源是整个系统的内容,是系统正常运行的支撑和保证。对三维零件资源的动态扩充,即三维零件资源入库(文件上传)。该操作包括文件上传、Inventor的二次开发接口程序的调用以及数据库的访问等操作,过程比较复杂。系统对三维零件资源的扩充分为两种模式:单一零件资源入库和批量零件资源入库。两种模式下,基本原理是相似的,具体的实现过程略有不同。由于单一零件资源入库的过程比较简单,下面以管理员批量零件资源文件上传为例,说明整个过程。

系统中采用ZIP压缩包的格式实现批量文件的上传,故在ASP.NET应用程序中需添加ICSharp-Code组件来完成文件的压缩和解压。管理员登陆后台管理系统后,选择需要上传的文件,以ZIP格式进行压缩,把压缩后的文件上传给服务器;服务器接收到文件后,遍历目录文件中的所有节点,确定当前入库的资源是否已经存在,若不存在,开始上传;服务端利用ICSharp-Code组件对上传的文件进行解压,通过服务端应用程序读取逐一被解压的文件夹或文件,对所有的零件资源进行统一的零件级编号,保存能到零件库中[9]。然后,通过Inventor二次开发接口启动Inventor应用程序,提取相关的数据,导出WRL格式文件,并保存到VRML文件库中。最后,通过ADO.NET数据库访问接口连接服务端数据库,将零件的所有数据信息存储到数据库中,完成零件资源的入库。

3 零件库系统实例

系统根据不同类别划分了多个子库,包括滚动轴承零件库、标准齿轮零件库、连接件与紧固件零件库、组合夹具零件库等。Web 三维零件库系统首页如图4所示。

图4 系统的首页

用户在该系统注册登录后,点击各子零件库标签就可以进入相应的图库系统。如图 5所示为常用滚动轴承图库,该系统包含了大量的有关常用滚动轴承的三维零件图形。

图5 常用滚动轴承图库

进入子零件库后,用户可以根据需要对现有零件模板进行在线参数化驱动,如图6所示,零件在线参数化驱动页面。

图6 零件在线参数化驱动

4 结论

1)本文以Inventor的二次开发技术为核心,通过网络编程,把ASP.NET、ADO.NET、可视化技术以及数据库访问技术综合与一体,实现了基于Web的Inventor-3D资源零件库系统的研究与开发。

2)基于该系统,在不需要安装Inventor软件的情况下,用户可以进行三维零件模型的在线浏览、在线参数化驱动、下载等操作。

3)用户可以在系统中快速搜寻自己所需的零件并下载包含设计参数的3D模型,以进行相关零件产品的二次开发和再设计,实现资源信息的共享。

[1]秦广泰.基于Web的参数化跨平台零件库系统研究[D].西安:西安工业大学机械工程学院,2012.

[2]Dan Liu,Qing-Sheng Xie,Xin-Jian Gu.Research on the Integration Method to Web-Based Parts Library[J].Proceedings of the Fourth International Conference on [1]Machine Learning and cybernetics.2005.Vol.4:2296-2301.

[3]钟佩思,栾倩,刘梅,王景林,辛纪光.面向网络化资源共享的零件库系统研究与实现[J].机械设计与制造,2010,2(2):249-251.

[4]孙浩.基于Web服务的零件库的研究与实现[D].济南:山东大学,2008.

[5]黄汨.参数化图形驱动及Web零件库的研究与开发[D].上海:上海交通大学,2009.

[6]令狐克志,王转,程国全.Inventor API在货架参数化三维造型中的应用[J].机械工程与自动化,2005,(1):26-29.

[7]王宏伟,孙文磊,何丽.AJAX技术在Web零件库系统中的应用研究[J].制造业自动化,2011,33(12):107-110.

[8]何丽,孙文磊,王宏伟.异构CAD平台网络零件库系统的研究与实现[J].机械设计与制造,2012,(2):266-268.

[9]何丽,孙文磊,王宏伟.基于UG的Web三维零件库系统开发[J].机床与液压,2012,40(11):91-94.

猜你喜欢
二次开发应用程序驱动
基于模糊PI控制的驱动防滑仿真系统分析
屈宏斌:未来五年,双轮驱动,砥砺前行
轨旁ATC系统门控柜接收/驱动板改造
删除Win10中自带的应用程序
在808DA上使用WIFI进行驱动数据同步
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
谷歌禁止加密货币应用程序
西门子Easy Screen对倒棱机床界面二次开发
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用