基于SolidWorks的三次开发方法研究

CAD 软件在国内生产制造企业中的应用越来越广泛,大量二次开发的需求随之产生,根据企业产品特点开发出一套专业设计软件成为众多企业设计部门的迫切要求。 PRO/ E,AutoCAD,SolidWorks 和SolidEdge 等著名CAD 设计软件都提供了良好的二次开发平台,基于这些软件的二次开发产品满足了各种企业和行业的设计需求,然而这样的软件产品却往往会遇到以下几个方面的问题:

(1)专业性强

企业往往无法在现有CAD 软件中找到适合自己行业的零件库,在此情况下便产生了二次开发的需求,因此二次开发产生的零部库一般都是针对某个设计行业。这样的零部件库日后很难从软件市场上得到升级和补充,例如空气分离设备行业,全国只有近百家专业生产厂商,现在CAD 厂商通常不会为这样的专业领域企业设计完善的零部件库。

(2)保密性高

企业的设计软件充分体现了企业的技术特点和技术优势,这样的二次开发软件具有很强的保密性。为了防止技术资料泄漏并保持同行业内的竞争优势,企业往往非常慎重地选择软件开发伙伴,这样就为日后维护带来很大的困难。以空气分离设备行业为例,该行业准入门槛低,拥有核心技术的人员可以很容易地组建新的生产企业,因此资料的保密是关系到企业生存的大事。如何在保密的情况下,长期维护和升级软件成了企业面临的新问题。

(3)设计变动频繁

企业产品要更新换代,进而带动零部件库的更新和程序设计流程的变化。从企业需求角度而言,创新设计是企业赖以生存的基石,设计变动将频繁发生;而从软件的角度来说,涉及变动严重威胁了软件的寿命,任何改动都可能导致既有软件功能完全丧失。如果对每次设计变动都要联系软件设计企业,必然造成无谓的二次投资,而对于软件企业更改原有软件带来的开销往往是惊人的。

如何解决这些问题成了企业发展创新道路上的新困难,由此产生了企业三次开发的需求———企业在有限的软件开发能力之下,不必支付大量的维护升级成本就能自主进行三次开发,让软件适应企业日益增长的设计需求。

将以SolidWorks 为例,结合实际工程项目经验,探讨在二次开发过程中充分考虑用户三次开发需求而进行的若干改进和尝试,从而保证用户在软件交付使用后仍然能够自行升级和维护该软件。

1 SoIidWorks三次开发的四种方法

SolidWorks 的二次开发通常是利用SolidWorks 公司提供的功能齐全的API 函数库,使用Visual C ++ 或者Visual Basic 语言设计完成的。这样的工作对于软件开发企业来说比较简单,而一旦二次开发软件交付用户使用,理解和修改代码的工作对于用户来说将变得十分困难。下面的讨论就是基于用户只具有基本的计算机操作能力,没有软件开发能力的前提之下,如何绕开代码修改,仍能够对二次开发软件进行补充和升级的四种方法,以满足企业创新和发展的需要。

这四种方法分别是:

(1)使用配置的方法建立零部件库;

(2)使用和解除约束方程;

(3)使用压缩的方法处理不同拓扑结构问题;

(4)使用Access 数据库便于用户修改。

1.1 使用配置的方法建立零部件库

二次开发中建立零部件库有两种方法:

(1)编程实现

SolidWorks 提供了完整的API 函数,调用接口函数可以实现各种绘图功能。以实现一个圆柱系列化为例,其步骤如下:

①使用ModelDoc 对象中的CreateCircle2 函数即可按照制定的圆心和圆周上一点绘制圆形。使用PartDoc 对象中的FeatureExtrusion3函数进行拉伸,得到一个圆柱。

②在数据库(如SQLServer)中建立一组不同规格的圆的直径表。

③使用ODBC 或者JDBC 建立程序和数据库的连接,调用不同的直径值在SolidWorks 中生成不同尺寸的圆柱形。

这样就完成了对一组圆柱零件库的程序驱动。

(2)使用配置实现

配置(Configurations)是SolidWorks 中实现零部件库的一个重要方法,它可以在单一的文件中对零件或装配体生成多个设计变化。配置提供了简便的方法来开发与管理一组有着不同尺寸、零部件或其他参数的模型,它是通过插入系列零件设计表实现的,SolidWorks 内嵌Excell 表以支持此功能。

如图1 所示,对于“管子”零件有两个参数是系列化的,即管子外径和管子壁厚。对于每一个公称通径,如当前配置DN57,都有一组管子外径57mm(管子外径@ 草图1)和管子壁厚3. 50mm(管子壁厚@ 拉伸-薄壁1)与之对应。如此形成一组DN10-DN400 的配置就形成了管子的零件库。

与方法一相比,这样生成的零件库可以巧妙地绕开程序,用不同的配置代替了程序对绘图参数的控制,用Excell 表代替了数据库存储。在软件交付使用后,工厂设计人员可以很方便地通过简单的修改Excell 表来增加和减少库中零件数量,有效地保证了零件库的可维护性。

除此之外,一个更突出的优点是:增加或者减少配置参数的操作简便。如在图1 表格中增加一列“ 管子长度”,即对应每个配置都增加一个相应的管子长度数据,这样的操作在方法一中必须通过修改程序代码来实现,而在方法二中则直接对Excell 表进行简单的鼠标和键盘操作即可完成。

1.2 使用和解除约束方程

零部件在绘制过程中经常会有一些数学上的约束关系,仍然以图1 管道为例。该段管路中有两个弯头,按照设计要求,弯头的半径应该是管道直径的1. 5 倍,如图2 所示,管道当前配置为DN50,对应的管道直径为57mm,相应弯头半径为85. 5mm。

实现这个长度关系有两种方法:

(1)编程实现

可以按照如下步骤设定弯头半径和管道直径的关系:

①使用ModelDoc2 对象的子对象Annotation 中的GetDimension函数获得管道直径参数。

②使用ModelDoc2 对象中的SetParamValue 方法设定弯头直径值为管道直径的1. 5 倍。

这样就设定了弯头直径和管道直径的关系。

(2)使用方程式实现

方程式是SolidWorks 提供的一种重要的尺寸约束关系,在零部件尺寸实现参数驱动后,可以使用尺寸名称作为变量添加方程式。当在装配体中使用方程式时,可以在零件之间、零件和子零部件之间,以配合尺寸来生成方程式。

使用方程式可以轻松地实现这个数学关系,同时又使用户日后可以很方便地进行修改。在图2 中,两个弯头可以由下面两个方程式进行控制:

“D2@ 草图2”=“管子外径@ 草图1”× 1. 5

“D2@ 草图4”=“管子外径@ 草图1”× 1. 5

可以看出,与第一种方法相比,用方程式控制可以不必关心程序代码,直接在SolidWorks 中实现数学关系的添加和修改。例如有些管路根据经验要求弯头直径是管道直径的2 倍,因为这样一个微小的变动而修改整个程序对于用户来说将非常困难,使用方程式则只需在SolidWorks 选择“ 编辑方程式”,将系数1. 5 改成2 即可。

另外值得一提的是,使用方程式和配置一起配合使用,可以极大地简化零部件的复杂程度。如图2 所示,整个管道是由拉伸-薄壁1、拉伸-薄壁2、拉伸-薄壁3、旋转-薄壁1、旋转-薄壁2 五部分组成,其中拉伸-薄壁1 的壁厚是配置中定义的,其余四部分没有建立配置,其壁厚可以由如下方程式来控制:

“D5@ 拉伸-薄壁3”=“管子壁厚@ 拉伸-薄壁1”

“D3@ 旋转-薄壁2”=“管子壁厚@ 拉伸-薄壁1”

“D5@ 拉伸-薄壁2”=“管子壁厚@ 拉伸-薄壁1”

“D3@ 旋转-薄壁1”=“管子壁厚@ 拉伸-薄壁1”

这样既减少了资源开销,又方便用户自行进行变更和控制。

1.3 使用压缩的方法处理不同拓扑结构问题

拓扑问题一直是CAD 软件中的重要问题,用户在设计过程中也常常遇到这样的需求。

如图3 所示,在空气分离设备中氮氧分离设备( 左)上部要安装气缸(右),常用的气缸有QT100 和QT200 两个型号,根据设备尺寸的不同进行选择。

通常氮氧分离设备直径小于1 500mm 时使用QT100,当直径大于1 500mm 时采用QT200,可以用如下两种方法解决这个问题:

(1)编辑实现

可用如下步骤编程实现:①使用SolidWorks 对象的Open-Doc6 方法加载氮氧分离设备文件。②根据氮氧分离设备直径判断需要选择的气缸类型,并加载相应文件。③使用Model-Doc2 对象里的AssemblyDoc 子对象中的Mate2 方法将两个部分装配在一起。

(2)压缩实现

压缩是暂时将零部件从装配体中移除(而不是删除)。它不装入内存,不再是装配体中有功能的部分。

这里选用SolidWorks 的压缩功能而没有使用轻化或者隐藏,主要是考虑在对零部件进行压缩之后,该零部件包含的配合关系也被压缩,这样在同样的位置装配两个类似的零部件,只要其中之一处于压缩状态,则另一个完全不受影响。而轻化或者隐藏是部分零部件模型数据装入内存,其余的模型数据根据需要装入,这样会导致当一个零部件处于当前状态时,被轻化或者隐藏的零部件仍然有部分信息处于当前状态,造成信息混乱和编辑困难。

在绘制如图3 所示三维图形时,将两种气缸都装配在氮氧分离设备顶端并都处于压缩状态,设计过程中,用户根据需要选择一种气缸之后,程序解除该气缸的压缩状态。如果设计变动,需要选用另外一种气缸,那么用户可以很方便地删除当前气缸,将另一种气缸从压缩状态中释放出来即可。以此类推,当设计者开发出更多新型号的气缸后,只需要在氮氧分离装置顶部装配新的气缸并处于压缩状态,待程序生成整套设备后,根据需要选择每种气缸的压缩状态。

另外,实际设计过程中,根据经验往往需要对气缸的选择标准进行调整。例如对于不同纯度的要求,往往可以灵活选用,在氮氧分离设备直径大于1 500mm 时仍然选择QT100。

这样的情况给程序设计带来困难,用户无法修改程序代码调整这个尺度,而采用压缩的方法可以有效地解决这个问题。

1.4 使用Access 数据库便于用户修改

作为具有GUI 的设计软件,总是不可避免地要用到数据库。例如在工业制氧机产品设计界面上,主管路设计中的“ 公称通径型号”,AC 和CG 选型中的“AC 型号”、“AC 冷干机型号”和“CG 型号”等需要下拉菜单的控件都需要数据库的支持,这里为了最大限度地降低用户日后修改的难度,避免采用SQL Server 等中型以上的数据库,而是选用Access 数据库。程序通过DAO 调用Access 数据库中的相关表格,当用户需要添加新的下拉菜单内容时,只需要打开程序的Access 文件,在相关的表中进行添加即可。

例如在Access 中对每个下拉菜单都有相关的表支持,对于图4 中AC 和CG 选型下拉菜单,Access 中有表格“ACCG”相对应,存储着从AC1. 2 至AC97 等17 行数据。当用户需要添加新的AC 类型时,只需要在Access 中添加新的一行数据,即可反映在设计界面的下拉菜单中,方便了用户对AC 设备库进行升级和补充。

综合以上四种方法,一个总的原则就是:让程序最小限度地参与到设计中来,为用户提供最大的方便以及自由设计和修改的空间。

2 结论

本文详细介绍了在SolidWorks 二次开发完成后,如何留给用户一个三次开发空间的若干种方法。这是个很有意义的研究领域,使二次开发软件保持长久的生命力,同时最大限度地节省用户的开发和维护成本。而如何更大程度地给用户开放自由发挥的空间,还有待于进一步的研究。

 

 

 

 

返回Solidworks技术文章专题列表>>>