本文以SolidWorks 2008为开发平台,介绍了利用面向对象的开发工具Visual C++对SolidWorks进行二次开发的方法,并通过实例验证了机械零件参数化建模的过程,实例表明该方法具有一定的可行性。
0 前言
SolidWorks是基于Windows平台的CAD/CAM/CAE/PDM桌面集成系统,以参数化和特征建模的技术,为设计人员提供了良好的设计环境。在SolidWorks系统中,模型的尺寸、相互关系和几何轮廓可以随时修改,零部件之间和零部件与图纸之间的更新完全同步,能自动进行动态约束检查,具有强劲的复杂曲面造型功能,现已成为微机平台上主流三维设计软件之一。
尽管SolidWorks的功能已非常强大,但由于仍然采用的是手工交互形式建模,不能完全满足专业机械CAD系统的需要。基于此因,如果能通过对SolidWorks进行二次开发,针对特定机械结构实现参数化建模,那么对于三维建模在我国企业中的推广将是非常有利的。为了方便用户进行二次开发,SolidWorks软件提供了开发工具API(Application Program Interface,应用程序接口),用户可以使用支持API的高级语言如Visual C++、Visual Basie、Delphi等对Solid Wor ks进行二次开发,创建出用户定制的、特有的SolidWorks功能模块。
1 SolidWorks的二次开发技术和参数化建模
1.1 SolidWorks的二次开发
SolidWorks为用户提供的API二次开发接口,由数以百计的功能函数构成,这些API函数使得程序员可以通过程序直接访问SolidWorks。所有的函数都是有关对象的方法或属性,通过对这些对象属性的设置和方法的调用,用户可以在自己开发的程序中对SolidWorks进行各种操作控制,从而完成零件草图的绘制和三维模型的建立。
SolidWorks的API接口分为两种:一种是基于OLE(Object Linking and Embedding,对象的嵌入与链接)Automation的IDispath技术;另一种是基于Windows基础的COM(Compenent Object Model,组件对象模型)技术。基于OLE Automation的IDispath技术是一种快速开发手段,通常作为Visual Basic、Delphi编程语言的接口。而由基于COM技术的Visual C++编程语言开发的DLL(Dynamic Link Library,动态链接库)文件,可以直接嵌入到SolidWorks内部,当成功加载后,应用程序的菜单就直接出现在SolidWorks主菜单上,与SolidWorks自带的插件一样,而且还可以单独测试,进行操作时极大地提高了设计效率,所以是首选的开发方法。
1.2 零部件的参数化建模
三维建模时应对零件进行分析,选择合理的建模方法。参数化设计是指通过改动图形的某一部分或某几部分的尺寸,自动完成对图形中相关部分的修改,即当赋予不同的参数值时,就可自动生成满足设计要求的零部件模型,从而实现同类机械产品快速修改与设计。对于参数化模型而言,主要有两个内容:几何关系和拓扑关系。几何关系是指具有几何意义的点、线、面,有确定的位置和大小;拓扑关系反映了形体的特性和关系,如几何元素之间的邻接关系。对于企业中标准化、通用化和系列化的产品,设计时所采用的数学模型及产品结构都可以将数据作为参数变量,从而实现在SolidWorks环境下零部件的三维参数化建模。这种参数化设计技术具有强大的变量驱动和模型再生功能,可以有效地提高设计人员的工作效率。
2 用Visual C++6.0对SolidWorks进行二次开发的方法
2.1 DLL的创建
基于COM技术的Visual C++编程语言所开发的DLL文件,可以通过三种方式创建:一种是使用SWizard.swx工程向导,第二种是使用ATL Object Wizard向导,第三种是使用用户自定义向导。第二种向导创建DLL文件,相对来说简单实用,开发时间短。在Visual C++中用该向导创建DLL工程,加入自己应用程序的代码,编译链接后生成*.dll文件,也就是插件。
2.2 DLL的加载
将动态链接库文件*.dll加载到SolidWorks中,有两种常用的方法:
一种是先运行SolidWorks软件,然后点击SolidWorks菜单栏中的【文件】,【打开】菜单命令,在弹出的过滤器中选择Add-Ins(*.dll),最后选择所需的DLL文件加载,确定即可;
另一种是先将DLL在注册表中注册成为SolidWorks系统的插件,然后运行SolidWorks,点击【工具】,【插件】菜单命令,在弹出的插件对话框中选择要加载的插件即可。此操作对于一个动态库文件只需做一次,以后启动SolidWorks软件无需再进行加载操作。
3 对SolidWorks进行二次开发的实例
以一个柱塞实体为例,介绍采用Visual C++6.0编程语言对SolidWorks 2008进行二次开发、参数化建模的应用。
(1) 启动 Vsiual C++,单击【文件】/【新建】,选择【工程】选项卡,选择【ATL COM AppWizard】,输人工程的位置和名称,如PUMP,单击【确定】。
(2) 在【Server Type】中选择【Dynamic Link Library (DLL)】选项和【Support MFC】选项,单击【完成】,系统会给出“新建工程信息”,核对无误后单击【确定】。
(3) 在 Visual C++的【Class View】标签中,用鼠标右键单击顶部的类图标( PUMP classes),在下拉列表中选择【New ATL Object】。在弹出的对话框中的【Category】列表中,选择【Solidworks】;在【Object】窗口中,选择【SwAddln】图标,单击【下一步】,在【ATL Object Wizard】属性对话框的【Names】标签中,输入想在【Short Name】中使用的ATL对象类名,如ppump。其他标签选用默认的设置,点击【确定】按钮。
(4) 在【Class View】标签中,右击Ippump接口,选择【Add Method】,在弹出的【添加方法至界面】对话框的【N方法名】文本框中输入函数名,单击【确定】按钮。
(5) 在【Resources View】标签中,双击【String Table】,双击表中的空白行,在表中添加三个String资源,分别是:ITEM、METHOD和HINT,如图1所示。然后对ppump.cpp文件的AddMenus()函数进行编辑,在零件菜单下添加代码。
图1 添加“String”资源
(6) 在【Resources View】标签中,用右键的快捷菜单【Insert Dialog】增加一个对话框,用来输入柱塞体的各项参数,界面如图2所示。
图2 柱塞体参数化建模对话框
(7) 双击对话框,建立对话框类PistonParameter,并建立七个与Edit对应的变量m_SR、m_DR、m_IR、m_OR、m_SL、m_IL、m_SBL,均是双精度值,初值在“PistonParameter.cpp”中设定。同时在ppump.cpp文件中添加包含对话框头文件的语句#include“PistonParameter.h”,建立相应的响应函数。
(8) 在ppump.cpp文件中对Cppump::CreatePiston函数进行编辑,添加的部分代码如下:
最后选择菜单栏上的【编译】/【全部重建】,对所编制的柱塞体参数化建模程序进行编译。编译通过后,运行SolidWorks 2008软件,在主菜单上将显示出新加载的插件“PUMP”及子菜单“柱塞体”。单击“柱塞体”子菜单,会弹出如图2所示的“柱塞体参数化建模对话框”,在对话框中输入相应的数据,就会在屏幕上自动生成一个柱塞实体,如图3所示。改变对话框中的数据大小,就会得到不同的柱塞实体,这就是参数化变量驱动的结果。
图3 柱塞体参数化建模结果
4 结论
本文研究了对三维绘图软件SolidWorks进行二次开发,实现机械零件参数化建模的过程。设计实例表明,采用Visual C++语言建立的动态链接库文件可以很好地实现与SolidWorks的无缝集成,能满足用户二次开发CAD系统的需要。在实际应用中,通过以上介绍的方法,可以定制用户经常使用的零件模板,极大地改善了结构相似的零部件修改和设计的手段,提高了产品的设计效率,缩短了新产品的设计周期,具有较强的应用价值。
发表时间:2014/10/15 作者: 吴晓燕 来源: 互联网
关键字: SolidWorks Visual C++ 参数化建模
青岛友创软件,助力工业企业数字化升级
达索官方认证SolidWorks代理
青岛友创软件科技有限公司(山东省装备制造业协会技术开发服务中心)
官方网站:www.yotron.net
服务热线:0532-58780826、13969671232(微信同号)
咨询邮箱:support@yotron.net
办公地址:山东省青岛市市北区龙城路31号卓越世纪中心4号楼1201-1221