您的位置:网站首页 > Solidworks

集成的SolidWorks标准件通用件库开发

时间:2010-11-13 09:20:10 来源:

  一、开发背景

  随着企业信息化应用程度的不断提高,各信息化系统之间的集成度越来越紧密,SolidWorks在企业的应用也毫无例外地受到信息化系统集成的影响,不再是单纯地仅满足企业研发人员的设计需要即可,它还需要满足企业数据管理系统的需要,满足工艺系统编制工艺的需要,满足生产系统编制生产计划的需要,否则将在企业内产生新的“信息孤岛”, 因此随着企业信息化应用的深入,必须考虑SolidWorks与其他信息化系统集成的问题,同时随着协同设计技术的发展,设计人员之间经常需要交流设计方案及协作设计。因此需要有统一的标准件通用件数据源进行调用。

  目前,市场上基于SolidWorks开发的各种标准件库都是根 据国家标准进行设计和属性定义的,属于单机运行的系统。一 方面没有考虑与企业各信息化系统之间的集成,也没有考虑到为企业所有设计人员统一设计数据源的问题。虽然提供有自定 义标准件属性的功能,但企业修改工作量巨大且可能造成标准 件库系统不稳定。因此给企业设计人员及其他后续工作人员增加了大量的重复属性定义工作,严重影响到企业的产品研制周 期及SolidWorks在企业的深化应用。

  南阳防爆集团自应用信息化系统以来,现有PDM、ERP、CAPP、CAM、二维CAD和三维C A D(SolidWorks)等,所有的产 品资料及技术资料统一在P D M系统中进行集中管理。ERP系统已完全指导着企业的生产经营。因此三维CAD系统若要在企业中深入应用,必须考虑与PDM、ERP、CAPP系统的集成,必须在产品设计人员中统一标准件通用件数据源,同时南阳防爆集团有自己的编码规则和编码标准,以此来标识每一个零部件。因此原来所有基于SolidWorks开发的标准件库已不再适合企业的应用,企业必须开发出自己的标准件通用件库。经过详细的分析论证,我们决定开发网络版集成的标准件通用件库,开发语言采用Visual Basic,数据库采用SQL Server2000,所有标准件、 通用件编码及属性采用国标与企业标准结合的标示方法。

  二、SolidWorks与各信息化模块集成系统框架

  企业开发的标准件通用件库最终作为插件集成在SolidWorks界面,并且能实现与P D M系统的交互:即从P D M系统中读取通用 件编码属性信息到SolidWorks中生成三维模型,同时把SolidWorks 中生成的标准件、通用件模型、零件和图档属性信息提交入PDM系统中进行集中统一管理,如图1所示。最终实现在SolidWorks装配体设计环境中随时方便地调用P D M系统中已有的标准件通用件 零件模型及属性信息,并装配到当前装配体中。

  三、SolidWorks二次开发的关键技术

  SolidWorks通过对象链接嵌入技术(OLE)为用户提供了强大的二次开发接口,凡支持OLE编程的开发工具,如Visual一管理,如图4所示, 这大大减轻了设计人员零件属性填写的工作量。

  1.读取PDM系统中的零件信息

  通过PDM系统接口函数及SolidWorks API函数,从PDM系统中读取通用件信息后填写到当前通用件三维模型属性中。以下是从 PDM系统中读取零件属性信息的部分代码(其中,PDM_OutPut为 PDM系统输出控件,PDMOutPut.ocx、AddCustomInfo3是SolidWorks API函数)。

  ‘连接PDM数据库

  Public Function ConnPDM() As Boolean ConnPDM = False FrmLoad.PDM_OutPut.UserName = PDMUser FrmLoad.PDM_OutPut.Password = PDMPass

  FrmLoad.PDM_OutPut.MidServerName = PDMServer

  ……

  End Function

  ……

  填写零件属性信息到三维模型中:

  R e t v a l=P a r t.A d d C u s t o m I n f o3(“”,“零部件代码”, swCustomInfoText, partcode)

  R e t v a l = P a r t . A d d C u s t o m I n f o 3 ( “ ” , “ 名 称 ” , swCustomInfoText, name)

  R e t v a l = P a r t . A d d C u s t o m I n f o 3 ( “ ” , “ 材 料 ” , swCustomInfoText, material)

  2.在SolidWorks中提交零件信息到PDM系统

  通用件在S o l i d W o r k s中建完模型及自动填写完零件与图档 属性信息后,提交入P D M系统进行集中管理;标准件模型可以 使用其他标准件库三维模型,然后以企业的编码规则进行批量 修改属性信息后,提交入P D M进行集中管理。以下是部分提交 入PDM系统零件信息的代码。

  Public Function Parttopdm(superid As String,subid A s S tring,subname A s S tring,subcode A s S tring,_ submaterial As String,number As Single,memo As String) As Long

  ……

  A d o C m d p d m.C o m m a n d T e x t = “I N S E R T I N T O Parttopart (superid,superver,subid,subver,number,Remark, serial)” & “VALUES (‘” & superid & “’,’” & ver &

  “’,’” & subid & “’,’0’,” & number & “,’ERP” &memo & “’,’2’)”

  Set adorepdm = AdoCmdpdm.Execute

  Set adorepdm = Nothing

  ……

  End Function0

  C++、Visual Basic和Delphi等均可用于SolidWorks的二次开 发,创建出用户定制的、专用的SolidWorks功能模块。我们主 要是利用Visual Basic语言进行开发。

  1.SolidWorks的API接口

  SolidWorksAPI中包含了数百个可以在VisualBasic、 VBA(Excel 、Access等)、C、C++或SolidWorks宏文件调用的函数。SolidWorks API接口采用面向对象的方法,所有的函数都是有关对象的方法或属性。用户通过对这些对象属性的设置和方法的调用,就可以在自己开发的程序中对SolidWorks进行各种操作控制,如完成零件草图的绘制和修改,零件特征的建立和修改,零件的特征信息、装配信息及工程图样信息的自动填写和提取等。

  2.SolidWorks DLL插件的开发

  SolidWorks中的插件是DLL文件,通过该文件,编程人员可以实现在SolidWorks中自定义功能菜单及命令按钮并集成在设计界面,实现在SolidWorks设计环境中调用自己编写的各种应用程序。在编写DLL程序的过程中,必须定义DLL文件与SolidWorks 连接的接口。主要的接口函数是:SwAddin.ConnectToSW和 SwAddin.DisconnectFromSW,部分程序代码如下。

  Private Function SwAddin_ConnectToSW(ByVal ThisSW As Object, ByVal Cookie As Long) As Boolean

  Dim bRet As Boolean

  Set swApp = ThisSW ‘连接SOLIDWORKS

  iCookie = Cookie

  bRet = swApp.SetAddinCallbackInfo(App.hInstance, Me, iCookie)

  ‘增加主菜单

  bRet = swApp.AddMenu(sw-DocASSEMBLY, “机械标 准件库(&Y)”, -1)

  ‘增加子菜单项目

  bRet = swApp.AddMenuItem2(swDocPART, iCookie,

  “零件库配置(&P)@机械标准件库(&Y)”, 3, “DocPART_ Item_PZ”, “DocPART_Item_CPupdate”, “机械标准件库- 零件库配置”)

  bRet=swApp.AddMenuItem2(s-wDocASSEMBLY,iCookie, “标准件库帮助(&P)@机械标准件库(&Y)”, 3, _“D o c P A R T_I t e m_B Z”, “D o c P A R T_I t e m_C P u p d a t e”,“机械标准件库-标准件库帮助”)

  ……

  ‘增加工具栏

  iToolbarID = swA pp.A ddToolbar3(iCookie, “机械 标准件库”, 102, 101, -1, s w D o c T e m p l a t e T y p e P A R T

  +swDocTemplateTypeASSEMBLY+swDocTemplateTypeDRAWING)

  ‘增加命令按钮

  b R e t = s w A p p . A d d T o o l b a r C o m m a n d 2 ( i C o o k i e ,

  i T o o l b a r I D , 0 , “ T o o l b a r F u n c t i o n 1 ” ,

  “ToolbarFuncUpdate1”, “零件库配置”, “”)

  ……

  SwAddin_ConnectToSW = True

  End Function

  ‘卸载插件的代码

  Private Function SwAddin_DisconnectFromSW() As

  Boolean

  Dim bRet As Boolean

  bRet = swApp.RemoveToolbar2(iCookie, iToolbarID)

  bRet = swApp.RemoveMenu(swDocASSEMBLY, “机械

  标准件库(&Y)”, -1)

  ……

  Set swApp = Nothing SwAddin_DisconnectFromSW = True End Function

  插件程序编写完后,编译成D L L文件,注册后,该插件程 序就会在S o l i d W o r k s“插件”对话框中出现。定制的功能菜单 及命令按钮就会在SolidWorks菜单栏及工具栏上出现。

  四、SolidWorks与PDM系统的集成

  三维数据的管理是三维CAD应用过程中必须考虑的问题,而且不能脱离于现有的P D M系统,经过分析论证,我们把三维 数据统一集成到PDM系统中进行管理。南阳防爆集团使用的数 据管理系统为清软英泰的PDM系统。通过清软英泰提供的接口函数开发插件可以实现在SolidWorks中直接登录入PDM系统,并提交已完成的三维模型及图文档进入PDM系统管理,如图2和图3所示。

  同时,企业以前在P D M系统中积累了大量的通用件信息, 如果在三维C A D模型生成后重新再输入一遍,将增加设计大量 的重复性劳动,并可能出现人工错误。我们开发的标准件通用 件库可以实现从P D M系统中调用已有的二维图文档属性自动填 写到SolidWorks生成的三维模型中,然后再提交入PDM系统中统一管理,如图4所示,这大大减轻了设计人员零件属性填写的工作量。

  1.读取PDM系统中的零件信息

  通过PDM系统接口函数及SolidWorks API函数,从PDM系统中 读取通用件信息后填写到当前通用件三维模型属性中。以下是从 PDM系统中读取零件属性信息的部分代码(其中,PDM_OutPut为 PDM系统输出控件,PDMOutPut.ocx、AddCustomInfo3是SolidWorks API函数)。

  ‘连接PDM数据库

  Public Function ConnPDM() As Boolean ConnPDM = False FrmLoad.PDM_OutPut.UserName = PDMUser FrmLoad.PDM_OutPut.Password = PDMPassFrmLoad.PDM_OutPut.MidServerName = PDMServer

  ……

  End Function

  ……

  填写零件属性信息到三维模型中:

  R e t v a l=P a r t.A d d C u s t o m I n f o3(“”,“零部件代码”, swCustomInfoText, partcode)

  R e t v a l = P a r t . A d d C u s t o m I n f o 3 ( “ ” , “ 名称 ” , swCustomInfoText, name)

  R e t v a l = P a r t . A d d C u s t o m I n f o 3 ( “ ” , “ 材料 ” , swCustomInfoText, material)

  2.在SolidWorks中提交零件信息到PDM系统

  通用件在S o l i d W o r k s中建完模型及自动填写完零件与图档 属性信息后,提交入P D M系统进行集中管理;标准件模型可以 使用其他标准件库三维模型,然后以企业的编码规则进行批量 修改属性信息后,提交入P D M进行集中管理。以下是部分提交 入PDM系统零件信息的代码。

  Public Function Parttopdm(superid As String,subid A s S tring,subname A s S tring,subcode A s S tring,_ submaterial As String,number As Single,memo As String) As Long

  ……

  A d o C m d p d m.C o m m a n d T e x t = “I N S E R T I N T O Parttopart (superid,superver,subid,subver,number,Remark, serial)” & “VALUES (‘” & superid & “’,’” & ver &

  “’,’” & subid & “’,’0’,” & number & “,’ERP” &

  memo & “’,’2’)”

  Set adorepdm = AdoCmdpdm.Execute

  Set adorepdm = Nothing

  ……

  End Function0

  五、在SolidWorks装配环境中调用

  标准件通用件库建立后,主要实现在SolidWorks装配体环境中调用,根据前面的介绍,我们可以把所有程序代码生成 DLL插件后集成在SolidWorks界面,从而实现标准件通用件库随着SolidWorks程序起动后主动加载在装配体界面,如图5所示。

  这样,在装配体设计环境下,可以随时从标准件通用件库中调 用已有的标准件通用件三维模型。

  六、标准件通用件库的维护

  标准件、通用件在企业的应用是一个长期的过程,随着企业的发展,会生成新的通用件,标准件也会不断地调整,因此程序必须具有开放性,方便工程师实现标准件通用件的添加功能(如图6所示),可以方便地添加新的标准件通用件到PDM 系统及标准件通用件库中,使不同企业的用户通过修改标准件通用件的配置数据及属性信息而形成自己企业的标准件通用件 库。同时,当装配体向P D M数据库中提交数据时,因PDM数据库中已有标准件通用件的数据,装配体中所有的标准件通用件不会再提交进入PDM数据库中,这减少了集成程序运行的时 间及PDM数据库中的数据冗余。

  七、结论

  本文提出了基于各信息化系统集成的标准件通用件库的开发方法,基于该方法可以实现SolidWorks与其他信息化系统 的高度集成。程序开发人员可以根据企业信息化应用系统的 特点,结合企业的编码规则及编码标准开发出企业自己的标准件通用件三维模型库,从而提高设计效率,加强三维数据 管理,缩短产品研发生产周期。