您的位置:网站首页 > Solidworks

SolidWorks公差与符号标注的二次开发

时间:2011-04-08 14:02:24 来源:未知

当前计算机辅助设计在机械制造领域得到越来越广泛的应用。SolidWorks 是基于 PARASOLID几何造型核心,采用 VC++编程和面向对象的数据库来开发的。SolidWorks 具有基于特征的参数化实体造型、NURBS 复杂曲面造型、实体与曲面融合、基于约束的装配造型等一系列先进的三维设计功能及工具。尽管 SolidWorks 具有很多的优点,但是 SolidWorks 在公差标注和粗糙度符号标注方面仍存在较多的不足之处,在公差标注方面,SolidWorks 本身的上下偏差标注,需要工程技术人员自己查相关手册输入上下偏差,因此,在使用 SolidWorks 的同时,笔者考虑了用连接相关数据库的方法,用户只需输入有关"偏差代号"及"公差等级"就可实现标注。这样就使标注工作简化。同时,笔者采用相似的方法实现了粗糙度的标注,所设计的窗体比 SolidWorks 所带的窗体简洁,但其实现的功能与之相同。且许多输入是用选取下拉菜单内容的方法,简化了用户输入。

  1 设计思想和开发原则

  本软件的研制开发方法采用完全面向对象的设计思想和开发方法,软件开发过程中,要设计许多用户界面,在设计中就要遵循一些原则,一个友好的用户界面应满足以下几个方面的要求:

  (1)减少记忆量

  本系统用户界面设计中主要采用以下方法:采用提示选择,而不是输入命令串,这种方法为不了解系统的终端用户带来了极大的方便,(在此处,笔者考虑采用了下拉式组合框(ComboBox),用户可直接选择"偏差代号"、"公差等级");另外本设计中,有多个消息框,提示用户出错的地方,并准确纠正输入。

  (2)灵活的提示信息

  应用软件运行时,应能给出简单易懂的提示信息,使用户的工作能顺利地进行。在用户对提示信息做出回答后,若回答有效,则引导用户进行下一步工作;否则,应能指出错误原因及改正方法。

  (3)良好的出错处理

  一个好的系统在操作错误发生后可以复原到错误操作前的状态,不会因此"死机"。一些更高级的系统具有"容错"能力。为便于了解已操作的命令或重复运行已执行的操作,系统可以记录用户送入的操作命令,以便执行重复命令。二次开发过程也有其开发原则和要求:平台稳定性,可移植性和兼容性,可伸缩性,系统融合性和相对独立性,执行高效性,技术先进性,还有平台易用性。本系统的开发过程就是遵循这样的原则进行的。

  2 关键技术

  2.1 SolidWorks 的二次开发准备

  对 SolidWorks 进行的二次开发,主要是利用SolidWorks 为用户提供了强大的 API 应用编程接口。其中包含的功能函数,可被 VB,或 SolidWorks的宏文件调用,这些函数提供程序员直接访问SolidWorks 功能的能力。用户可在 VB 中创建动态链接库工程,加入相关代码,编译生成*.dll 文件,然后再加载此文件,用户自己开发的动态链接库中可实现与 SolidWorks 相同的功能。从而可以扩展 SolidWorks 的功能。

  首先,启动 VB 建立"ActiveX DLL"文件,只有采用这种格式才会编译生成*.dll 文件。其次,必须在 VB中引入 SolidWorks 的对象库。具体做法是:必须选择【工程】/【引用】菜单项,在可用的引用列表框中选择"Sldworks 2001plus Type Library"条目,按 "确定"就可以了。

  下面就可以进行二次开发,添加菜单及用户界面,扩展其功能。

  2.2 SolidWorks 的宏操作及应用

  宏在 SolidWorks 的二次开发中起着重要的衔接作用,在本设计中使用同样也用到了宏。比如在本设计中,使用方法为:在用 SolidWorks 本身的标注操作之前,就打开宏"录制",将整个标注过程录制下来,录制完成并保存后,就可对其进行编辑;由于录制的是具体的标注过程,里面的数据都为具体数值,可以将其中的关键语句拷到VB 工程中,修改具体数值为变量;然后通过程序对变量进行赋值,这样运行 VB 工程时就可通过输入具体数值,进行每次的标注操作,实现所需的功能。

  2.3 SolidWorks 中添加菜单的关键技术

  在此软件系统开发中,用到了许多软件知识,这其中包括:Visual Basic、Access、VB的数据库开发知识、SolidWorks 的 API 应用编程接口等技术。通过这些关键技术,就可对 SolidWorks 添加菜单。

  下面结合程序,介绍其实现方法。程序如下:

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

  Dim Ret As Boolean

  Set iSldWorks = ThisSWiCookie = Cookie

  Ret = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me,iCookie)

  增加菜单部分

  Ret = iSldWorks.AddMenuItem2(swDocDRAWING, iCookie,&_"公差标注...@附加项(&A)", -1, "DocDRAWING_dimension",&_"DocDRAWING_ItemUpdate","DocDRAWING_Item hintstring")

  Ret = iSldWorks.AddMenuItem2(swDocDRAWING, iCookie,&_"粗糙度...@附加项(&A)", -1, "DocDRAWING_symbol", &_"DocDRAWING_ItemUpdate", "DocDRAWING_Item hintstring")#p#分页标题#e#

  SwAddin_ConnectToSW = True

  End Function

  ……

  函数中前面是定义部分变量,下面就为添加菜单的关键部分,语句中许多函数在 SolidWorks的对象库和本软件的公用模块中已经定义。在开发过程中,可能遇到许多有关 API 函数的问题,这就需要仔细阅读 SolidWorks 所带的 API 帮助函数,帮助文件为英文,这就提高了我国用户进行开发的难度。

  "公差标注...@附加项(&A)","粗糙度...@附加项(&A)",这两句就是表示所添加菜单的名称;"DocDRAWING_dimension" 和"DocDRAWING_symbol",两函数表示所添加菜单所实现的功能。这些函数可在后面定义,来补充功能。下面就是其中的一个函数:

  Public Sub DocDRAWING_dimension() 调用公差查询及标注窗体

  frmseek.Show调用公差查询窗体

  End Sub

  最后,将所编写的程序生成*.dll 文件,在SolidWorks 下打开此文件,该软件就会在"插件"对话框中出现,选择该插件就会在菜单栏上出现。通过添加菜单的方法,可使 VB开发的应用程序,直接挂在 SolidWorks 下,执行时不需要离开SolidWorks 平台,所开发的软件与 SolidWorks 形成了统一的界面。

  2.4 在 SolidWorks 中添加的用户界面及实例演示

  所有的开发结果只有通过友好的二次开发界面,才能将各项功能清楚的展示给用户。本系统本着将开发功能融合于 SolidWorks,使风格与SolidWorks 以及 Windows 相似,所以在软件界面上尽量少出现没有必要的内容。

  如图 1 所示,添加的用户界面是由 VB 创建的,并通过前面介绍的添加菜单方法,与SolidWorks 融为了一体。

  

 

  图1 公差标注用户界面

  图 2 为两个标注功能实现的流程图,清楚的描述了标注系统的开发过程。流程图可以引导整个开发过程,便于大型程序的模块化设计,在软件设计中是必不可少的。使用时可根据流程图所示进行操作。下面将结合实例进行具体介绍。

  

 

  图2 公差标注与粗糙度标注流程图

  公差标注窗体如图 1 所示。下面介绍一下此功能的使用方法:需要给工程图中某尺寸添加公差标注时,首先选定该尺寸,然后按所添加的【附加项】按钮,选择【公差标注 …】就会出现图 1所示的窗体,输入刚才选择的尺寸值,然后选择偏差代号及公差等级,点击【确定】就会在窗体中输出上下偏差及公差尺寸,下面可选择【标注】进行自动标注,有丰富经验的设计人员也可根据尺寸公差自己标注。标注完成后,该标注界面会自动隐藏。

  粗糙度符号标注窗体如图 3 所示。使用方法为:打开所要标注的工程图,选择要标注的位置,然后按所添加的【附加项】按钮,选择【粗糙度 …】就会出现图 3 所示的窗体,输入所要标注的参数和符号,有些项目也可以不输入,根据具体情况进行选择。点击【确定】就会在工程图指定位置出现所要求的标注符号。

  

 

  图3 粗糙度标注用户界面

  3 结束语

  本文说明了利用 VB对 SolidWorks 进行二次开发的方法,利用此方法,可以进行其它较为复杂的开发工作,从而开发出适合用户特定需要的专业软件。另外利用 VB、VC 等面向对象的语言对 SolidWorks 的二次开发,方便地实现与其它设计软件的接口,用类似的方法对其它软件进行开发。同时,此种在应用层对软件进行的开发是当今软件开发的热点。

  虽然本系统解决了一定的问题,但有些功能并不十分完善。例如,在进行公差标注时,必须输入其尺寸值才能标注;而不能在选取后自动将尺寸值输入到查询系统,这方面的内容有待在以后的开发中去解决。(end)