论文部分内容阅读
【摘 要】本文介绍了以SolidWorks为开发平台的基础上,利用Visual C++对SolidWorks进行二次开发的方法,并实例验证了齿轮零件参数化建模的过程。实例表明通过SolidWorks进行二次开发,实现齿轮零件三维模型的参数化建模,提高了设计的效率。
【关键词】齿轮设计;SolidWorks;二次开发;Visual C++;参数化建模
1 引言
SolidWorks是基于Windows 平台的CAD/CAM/CAE/PDM桌面集成系统,以参数化和特征建模的技术,为设计人员提供了良好的设计环境。在SolidWorks环境中,模型的尺寸、相互关系和几何轮廓可以随时修改,零部件之间和零部件与图纸之间的更新完全同步,能自动进行动态约束检查,具有强劲的复杂曲面造型功能,现已成为主流三维设计软件之一。
SolidWorks为用户提供的API二次开发接口,由以数百个的功能函数构成,这些API函数使得程序员可以通过程序直接访问SolidWorks。所有的函数都是有关对象的方法或属性,通过对这些对象属性的设置和方法的调用,用户可以在自己开发的程序中对SolidWorks进行各种操作控制,从而完成零件草图的绘制和三维模型的建立。
本文是基于Windows基础的COM (Compenent Object Model)技术。基于COM技术的Visual C++编程语言开发的DLL(Dynamic Link Library)文件,可以直接嵌入到SolidWorks内部,当成功加载后,应用程序的菜单就直接出现在SolidWorks主菜单上,与SolidWorks自带的插件一样,而且还可以单独测试,进行操作时极大地提高了设计效率,所以是首选的开发方法。
2 Visual C++对SolidWorks进行二次开发的方法
2.1 DLL的创建
基于COM技术的Visual C++编程语言所开发的DLL文件,可以通过三种方式创建:一种是使用SWizard.swx工程向导,第二种是使用ATLObjectWizard向导,第三种是使用用户自定义向导。第二种向导创建DLL文件,相对来说简单实用,开发时间短。在Visual C++中用该向导创建DLL工程,加入自己应用程序的代码,编译链接后生成*.dll文件,也就是插件。
2.2 DLL的加载
将动态链接库文件*.dll加载到SolidWorks中,有两种常用的方法:一种是先运行SolidWorks软件,然后点击SolidWorks菜单栏中的[文件]/[打开]菜单命令,在弹出的过滤器中选择Add-Ins(*.dll),最后选择所需的DLL文件加载,确定即可;另一种是先将DLL在注册表中注册成为SolidWorks系统的插件,然后运行SolidWorks,点击[工具]/[插件]菜单命令,在弹出的插件对话框中选择要加载的插件即可。此操作对于一个动态库文件只需做一次,以后启动SolidWorks软件无需再进行加载操作。
3 齿轮建模过程
3.1 渐开线直齿圆柱齿轮的基本参数设计
主要有模数M、齿数Z、压力角α、齿宽Thick、凸台直径A、凸台厚度B、轴孔直径C、键槽尺寸D1*D2。
3.2 齿轮参数化设计基本思路
如图1所示。
3.3 齿轮参数化建模
本文建模采用了Visual C++ 6.0编程语言对Solid-Works 2012进行二次开发、参数化建模的应用,此环境还需要安装SolidWorks API SDK。
(1)启动Vsiua1 C++,单击[文件]/[新建]->[工程]选项卡->[ATL COMAppWizard],输入工程的位置和名称:gear,单击[确定]。
(2)在[Server Type]->[Dynamic Link Library(DLL)]选项和[Support MFC]选项,单击[完成],系统会给出新建工程信息,核对无误后单击[确定]。
(3)在Visua1 C++的[Class View]标签中,用鼠标右键单击顶部的类图标(gear classes),在下拉列表中选择[NewATL Object]。在弹出的对话框中的[Category]列表中,选择[Solidworks]->[SwAddIn]图标,单击[下一步],在[ATL ObjectWizard]->[Names]标签中,在[Short Name]中输入使用的ATL对象类名:gearobj。其他标签选用默认的设置,点击[确定]按钮。
(4)在[Class View]标签中,右击Igearobj接口,选择[Add Method],在弹出的[添加方法至界面]对话框的文本框中输入函数名:gearmethod,单击[确定]按钮。
(5)在[Resources View]->双击[String Table],双击表中的空白行,在表中添加三个String资源,分别是:ITEM、METHOD和HINT,如图1所示。然后对gearobj.cpp文件的AddMenus()函数进行编辑,在零件菜单下添加代码,如图3所示。
图2 添加“String”资源
Fig.2 Adding the resource of String
图3 添加AddMenus()的代码
Fig.3 Adding the code in AddMenus()
(6)在[Resources View]标签中,用右键的快捷菜单[Insert Dialog]增加一个对话框,用与输入齿轮的各项参数,对话框如图4所示。
图4 齿轮参数输入对话框 Fig.4 The input dialog of Gear Parameters
(7)双击对话框,建立对话框类GearParameter,并建立Edit对应的变量m_M、m_Thick、m_A、m_B、m_C、m_D1、m_D2,均是Double值,m_Z为Int值,初值在GearParameter.cpp中设定,如图5所示。同时在gearobj.cpp文件中添加包含对话框头文件的语句#include "GearParameter.h"和#include "resource.h",建立相应的响应函数。
图5 建立Edit对应的变量
Fig.5 Building relevant Variables of Edit
图6 消息映射对话框
Fig.6 The dialog of Message mapping
(8)成员函数和变量建好后,可以编辑代码:
打开GearParameter.cpp编写如下:
1)BEGIN_MESSAGE_MAP(GearParameter, CDialog)
2) //{{AFX_MSG_MAP(GearParameter)消息映射
3)ON_BN_CLICKED(IDIDOK,OnOK)
4)ON_BN_CLICKED(IDIDOK,OnCancel)
5)//}}AFX_MSG_MAP
6)END_MESSAGE_MAP()
(9)在gearobj.cpp文件中对Cgearobj::gearmethod()函数进行编辑,添加的部分代码如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState())
HRESULT retval;
//得到当前活动文档
CComPtrpModel;
m_iSldWorks->get_IActiveDoc2(&pModel);//创建ModelDoc2接口指针
retval=pModel->InsertSketch();//插入一个草图
......
//相关参数计算
d=m*z;//分度圆直径:
db=d*cos(alpha);//基圆直径:
df=d-2*m;//齿根圆直径
da=d+2*m;//齿顶圆直径:
//渐开线的参数方程:
rb=db/2;
alphak=t*45;
r=rb/cos(alphak);
theta=tan(thetak)-thetak;
x=r*cos(theta)+r*sin(theta)*theta*pi/180;
y=r*sin(theta)-r*cos(theta)*theta*pi/180;
......
//利用特征函数,生成旋转实体
CComPtrpFtManager;
pModel->get_FeatureManager(&pFtManager);//获取FeatureManager的接口指针
CComPtrpFeature;
pFtManager->FeatureExtusion2(True,False,False,0,0,A,0,False,False,False,False,0,0,False,False,False,False,True,True,True,0,0,False);//调用旋转特征函数生成拉伸特征,即得到齿轮实体
(10)打开gear.cpp文件,在头文件的语句中,写上#include "GearParameter.h"和#include "resource.h"后,通过菜单栏上的[编译]/[全部重建],对所编制的齿轮设计建模程序进行编译。
4 加载与运行
编译通过后,运行SolidWorks软件,打开新建零件,再单击菜单栏[文件]/[打开]菜单命令,在弹出的过滤器中选择Add-Ins (*.dll),最后选择所需的DLL文件,加载插件“Gear”及子菜单“齿轮设计”,如图7所示。
单击“齿轮设计”子菜单,会弹出如图4的“齿轮参数输入对话框”,在对话框中输入相应的参数,就会在SolidWorks中自动生成一个齿轮实体,如图8所示。改变对话框中的数据大小,就会得到不同的齿轮实体,这就是参数化变量驱动的结果。
图7 加载插件
Fig.7 Loading the Plugin
图8 齿轮设计建模结果
Fig.8 the modeling result of designing a gear
5 结论
本文分析研究了基于SolidWorks平台,利用Visual C++进行二次开发,实现机械零件参数化建模的过程。在实际应用中,通过以上介绍的方法,解决了重复零件的设计问题,此插件可以定制用户经常使用的零件模板,极大地改善了结构相似的零部件修改和设计的手段,提高了产品的设计效率,缩短了新产品的设计周期,具有较强的应用价值。
参考文献:
[1]吴晓燕.基于SolidWorks二次开发的机械零件参数化建模研究[J].科技信息,2010(08).
[2]姚敏敏等.基于SolidWorks二次开发的精冲模设计系统[J].锻压装备与制造技术,2009(01).
[3]李慧平.基于SolidWorks二次开发的专用夹具CAFD系统研究[D].郑州大学.2010.
[4]江洪等.SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.
【关键词】齿轮设计;SolidWorks;二次开发;Visual C++;参数化建模
1 引言
SolidWorks是基于Windows 平台的CAD/CAM/CAE/PDM桌面集成系统,以参数化和特征建模的技术,为设计人员提供了良好的设计环境。在SolidWorks环境中,模型的尺寸、相互关系和几何轮廓可以随时修改,零部件之间和零部件与图纸之间的更新完全同步,能自动进行动态约束检查,具有强劲的复杂曲面造型功能,现已成为主流三维设计软件之一。
SolidWorks为用户提供的API二次开发接口,由以数百个的功能函数构成,这些API函数使得程序员可以通过程序直接访问SolidWorks。所有的函数都是有关对象的方法或属性,通过对这些对象属性的设置和方法的调用,用户可以在自己开发的程序中对SolidWorks进行各种操作控制,从而完成零件草图的绘制和三维模型的建立。
本文是基于Windows基础的COM (Compenent Object Model)技术。基于COM技术的Visual C++编程语言开发的DLL(Dynamic Link Library)文件,可以直接嵌入到SolidWorks内部,当成功加载后,应用程序的菜单就直接出现在SolidWorks主菜单上,与SolidWorks自带的插件一样,而且还可以单独测试,进行操作时极大地提高了设计效率,所以是首选的开发方法。
2 Visual C++对SolidWorks进行二次开发的方法
2.1 DLL的创建
基于COM技术的Visual C++编程语言所开发的DLL文件,可以通过三种方式创建:一种是使用SWizard.swx工程向导,第二种是使用ATLObjectWizard向导,第三种是使用用户自定义向导。第二种向导创建DLL文件,相对来说简单实用,开发时间短。在Visual C++中用该向导创建DLL工程,加入自己应用程序的代码,编译链接后生成*.dll文件,也就是插件。
2.2 DLL的加载
将动态链接库文件*.dll加载到SolidWorks中,有两种常用的方法:一种是先运行SolidWorks软件,然后点击SolidWorks菜单栏中的[文件]/[打开]菜单命令,在弹出的过滤器中选择Add-Ins(*.dll),最后选择所需的DLL文件加载,确定即可;另一种是先将DLL在注册表中注册成为SolidWorks系统的插件,然后运行SolidWorks,点击[工具]/[插件]菜单命令,在弹出的插件对话框中选择要加载的插件即可。此操作对于一个动态库文件只需做一次,以后启动SolidWorks软件无需再进行加载操作。
3 齿轮建模过程
3.1 渐开线直齿圆柱齿轮的基本参数设计
主要有模数M、齿数Z、压力角α、齿宽Thick、凸台直径A、凸台厚度B、轴孔直径C、键槽尺寸D1*D2。
3.2 齿轮参数化设计基本思路
如图1所示。
3.3 齿轮参数化建模
本文建模采用了Visual C++ 6.0编程语言对Solid-Works 2012进行二次开发、参数化建模的应用,此环境还需要安装SolidWorks API SDK。
(1)启动Vsiua1 C++,单击[文件]/[新建]->[工程]选项卡->[ATL COMAppWizard],输入工程的位置和名称:gear,单击[确定]。
(2)在[Server Type]->[Dynamic Link Library(DLL)]选项和[Support MFC]选项,单击[完成],系统会给出新建工程信息,核对无误后单击[确定]。
(3)在Visua1 C++的[Class View]标签中,用鼠标右键单击顶部的类图标(gear classes),在下拉列表中选择[NewATL Object]。在弹出的对话框中的[Category]列表中,选择[Solidworks]->[SwAddIn]图标,单击[下一步],在[ATL ObjectWizard]->[Names]标签中,在[Short Name]中输入使用的ATL对象类名:gearobj。其他标签选用默认的设置,点击[确定]按钮。
(4)在[Class View]标签中,右击Igearobj接口,选择[Add Method],在弹出的[添加方法至界面]对话框的文本框中输入函数名:gearmethod,单击[确定]按钮。
(5)在[Resources View]->双击[String Table],双击表中的空白行,在表中添加三个String资源,分别是:ITEM、METHOD和HINT,如图1所示。然后对gearobj.cpp文件的AddMenus()函数进行编辑,在零件菜单下添加代码,如图3所示。
图2 添加“String”资源
Fig.2 Adding the resource of String
图3 添加AddMenus()的代码
Fig.3 Adding the code in AddMenus()
(6)在[Resources View]标签中,用右键的快捷菜单[Insert Dialog]增加一个对话框,用与输入齿轮的各项参数,对话框如图4所示。
图4 齿轮参数输入对话框 Fig.4 The input dialog of Gear Parameters
(7)双击对话框,建立对话框类GearParameter,并建立Edit对应的变量m_M、m_Thick、m_A、m_B、m_C、m_D1、m_D2,均是Double值,m_Z为Int值,初值在GearParameter.cpp中设定,如图5所示。同时在gearobj.cpp文件中添加包含对话框头文件的语句#include "GearParameter.h"和#include "resource.h",建立相应的响应函数。
图5 建立Edit对应的变量
Fig.5 Building relevant Variables of Edit
图6 消息映射对话框
Fig.6 The dialog of Message mapping
(8)成员函数和变量建好后,可以编辑代码:
打开GearParameter.cpp编写如下:
1)BEGIN_MESSAGE_MAP(GearParameter, CDialog)
2) //{{AFX_MSG_MAP(GearParameter)消息映射
3)ON_BN_CLICKED(IDIDOK,OnOK)
4)ON_BN_CLICKED(IDIDOK,OnCancel)
5)//}}AFX_MSG_MAP
6)END_MESSAGE_MAP()
(9)在gearobj.cpp文件中对Cgearobj::gearmethod()函数进行编辑,添加的部分代码如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState())
HRESULT retval;
//得到当前活动文档
CComPtr
m_iSldWorks->get_IActiveDoc2(&pModel);//创建ModelDoc2接口指针
retval=pModel->InsertSketch();//插入一个草图
......
//相关参数计算
d=m*z;//分度圆直径:
db=d*cos(alpha);//基圆直径:
df=d-2*m;//齿根圆直径
da=d+2*m;//齿顶圆直径:
//渐开线的参数方程:
rb=db/2;
alphak=t*45;
r=rb/cos(alphak);
theta=tan(thetak)-thetak;
x=r*cos(theta)+r*sin(theta)*theta*pi/180;
y=r*sin(theta)-r*cos(theta)*theta*pi/180;
......
//利用特征函数,生成旋转实体
CComPtr
pModel->get_FeatureManager(&pFtManager);//获取FeatureManager的接口指针
CComPtr
pFtManager->FeatureExtusion2(True,False,False,0,0,A,0,False,False,False,False,0,0,False,False,False,False,True,True,True,0,0,False);//调用旋转特征函数生成拉伸特征,即得到齿轮实体
(10)打开gear.cpp文件,在头文件的语句中,写上#include "GearParameter.h"和#include "resource.h"后,通过菜单栏上的[编译]/[全部重建],对所编制的齿轮设计建模程序进行编译。
4 加载与运行
编译通过后,运行SolidWorks软件,打开新建零件,再单击菜单栏[文件]/[打开]菜单命令,在弹出的过滤器中选择Add-Ins (*.dll),最后选择所需的DLL文件,加载插件“Gear”及子菜单“齿轮设计”,如图7所示。
单击“齿轮设计”子菜单,会弹出如图4的“齿轮参数输入对话框”,在对话框中输入相应的参数,就会在SolidWorks中自动生成一个齿轮实体,如图8所示。改变对话框中的数据大小,就会得到不同的齿轮实体,这就是参数化变量驱动的结果。
图7 加载插件
Fig.7 Loading the Plugin
图8 齿轮设计建模结果
Fig.8 the modeling result of designing a gear
5 结论
本文分析研究了基于SolidWorks平台,利用Visual C++进行二次开发,实现机械零件参数化建模的过程。在实际应用中,通过以上介绍的方法,解决了重复零件的设计问题,此插件可以定制用户经常使用的零件模板,极大地改善了结构相似的零部件修改和设计的手段,提高了产品的设计效率,缩短了新产品的设计周期,具有较强的应用价值。
参考文献:
[1]吴晓燕.基于SolidWorks二次开发的机械零件参数化建模研究[J].科技信息,2010(08).
[2]姚敏敏等.基于SolidWorks二次开发的精冲模设计系统[J].锻压装备与制造技术,2009(01).
[3]李慧平.基于SolidWorks二次开发的专用夹具CAFD系统研究[D].郑州大学.2010.
[4]江洪等.SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.