随着计算机技术的发展,尤其是三维CAD技术的广泛应用,设计者在产品设计时,可以直接在计算机上构造三维实体,进行虚拟装配,利用软件内置的干涉检验等功能可以极大地确保设计合理与高效,缩短产品的设计周期,为产品的更新换代提供较大的便利。设计者使用方便快捷、功能强大的三维CAD软件,与熟悉的Windows界面交互,可大大提高工作效率,也是企业进步的一个内在推动力。
作为三维建模软件中的佼佼者,SolidWorks软件是一款基于Windows平台开发的著名的全参数化三维实体造型软件,其设计过程全相关性,可以在设计过程的任何阶段修改设计,同时牵动相关部分的改变。SolidWorks软件具有强大的零件设计、钣金设计、管理设计、绘制二维工程图、支持异地协同工作等功能,它可以实现由三维实体造型向二维工程图的转化,能够使零件设计、装配设计和工程图保持时刻的全相关和同步。同时SolidWorks具有良好的开放性和兼容性。它不仅可以向下兼容二维AutoGAD,使得以前采用AutoCAD软件进行的设计得以继续使用和转化,同时还可以与许多其它专业软件(如有限元分析软件Ansys、数据加工软件Camworks、数据管理系统SmarTeams、三维实体设计软件UG、Pro/E等)无缝集成为功能十分强大的CAD/GAE/CAM/PDM系统,完全能胜任大型工程与产品的设计、分析、制造和数据管理。然而在工程实践中,其专业针对性不强。因此,人们通常在此平台上运用各种二次开发工具,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,提高操作人员的工作效率与产品的质量与市场竞争力,更好地满足企业设计要求,更好地发挥CAD的效能。通过对CAD软件的二次开发,可使CAD软件实现专业化、本地化。
SolidWorks通过COM(Component Object Model,组件对象模型)技术为用户提供了强大的二次开发接口(SolidWorks API),凡支持COM编程的开发工具,如Visual Basic, Delphi等均可用于SolidWorks的二次开发。SolidWorks中常用的API对象如图1所示。SldWorks对象为对SolidWorks工作环境进行访问处理提供了接口。通过此对象可以对SolidWorks工作环境添加菜单、删除菜单、添加工具条、打开文件、新建文件、退出SolidWorks系统。SolidWorks的API对象涵盖了全部的SolidWorks的数据模型,通过对这些对象属性的设置和方法的调用,就可以在用户自己开发的DLL中实现与SolidWorks相同的功能。进行二次开发时,调用SolidWorks中的API函数,可以完成零件的造型和修改,零件各特征的建立、修改、删除和压缩等各项控制,零件特征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各种几何和拓扑信息,零件的装配信息,零件工程图纸中的各项信息等。
图1 SolidWorks API对象层次图
SolidWorks开发系统图如图2所示。其基本工作流程为:基于OLE技术的SolidWorks API将SolidWorks的各种功能封装在SolidWorks对象之中供编程调用,开发者使用二次开发编程语言通过调用SolidWorks的对象体系结构,操纵对象的属性和调用对象的方法便可以建立自主的应用程序,实现二次开发。
图2 SolidWorks开发系统框图
SolidWorks二次开发通常有两种形式:一是独立应用程序(standalone application),用户程序作为一个独立的应用程序(*.exe),通过 API接口调用SolidWorks提供的服务,完成对SolidWorks的控制和操作;二是插件形式(AddIn application),用户程序作为一个插件(*.dll)集成到SolidWorks中去。插件形式下,用户程序跟SolidWorks程序运行在同一进程空间,运行效率高,而且用户可以在SolidWorks中添加自己的菜单、工具栏、属性页等,使用户程序跟SolidWorks程序浑然容为一体。由于插件程序跟SolidWorks运行在同一进程空间,插件程序的异常会导致SolidWorks程序的不稳定,因此在做开发时也要更加小心。相对应的独立应用程序跟SolidWorks程序运行在不同的进程空间,客户程序的异常不会影响SolidWorks。
对于插件形式的二次开发,笔者已在e-works中国制造业信息化门户网上就相关问题在"用VB进行SolidWorks二次开发的编程技巧与实现方法"一文中有所介绍,感兴趣的可以参阅。另外在《SolidWorks API二次开发》一书中也有详细介绍,可供参阅。本文不再赘述。
针对网上很多朋友提出的二次开发入门难的问题,笔者在初涉SolidWorks二次开发领域的时候也深有同感,查阅了很多相关书籍与论文等资料,可能因为篇幅等其他原因,不得要领,尤其对于一些看似简单的问题一直得不到彻底解决,最后是在身边及网上一些朋友的热心帮助下,最终得以解决。在次对他们表示谢意,同时也要感谢e-works中国制造业信息化门户网,从他上面吸取了很多"养料",受益匪浅。闲话少说,正是因为自己经历过这样的迷茫与彷徨,为避免新人们再次陷入这种煞费周折的境地,笔者以自身编程实现经历为鉴,侧重于二次开发中较难掌握的独立应用程序的开发,以一个简单实例的交互式编程实现为例,使用VBA语言、Visual Basic语言及Delphi语言进行程序的实现,详细介绍了具体开发过程中的重难点问题及注意事项,以期能够为刚开始从事于SolidWorks二次开发的朋友提供帮助,避免一些不必要的麻烦,少走弯路。文中所使用的软件版本依次为SolidWorks 2007企业版,Visual Basic 6.0企业版及Delphi企业版软件。
|