欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于SolidWorks二次开发的机械零件参数化建模研究(图文)

时间:2011-04-23  作者:秩名

论文导读:SolidWorks是基于Windows平台的CAD/CAM/CAE/PDM桌面集成系统,以参数化和特征建模的技术,为设计人员提供了良好的设计环境。SolidWorks为用户提供的API二次开发接口,由数以百计的功能函数构,这些API函数使得程序员可以通过程序直接访问SolidWorks。而由基于COM技术的VisualC++编程语言开发的DLL(DynamicLinkLibrary,动态链接库)文件,可以直接嵌入到SolidWorks内部,当成功加载后,应用程序的菜单就直接出现在SolidWorks主菜单上,与SolidWorks自带的插件一样,而且还可以单独测试,进行操作时极大地提高了设计效率,所以是首选的开发方法。以一个柱塞实体为例,介绍采用VisualC++6.0编程语言对SolidWorks2008进行二次开发、参数化建模的应用。
关键词:SolidWorks,VisualC++,参数化建模,二次开发
 

0 前言

SolidWorks是基于Windows平台的CAD/CAM/CAE/PDM桌面集成系统,以参数化和特征建模的技术,为设计人员提供了良好的设计环境。在SolidWorks系统中,模型的尺寸、相互关系和几何轮廓可以随时修改,零部件之间和零部件与图纸之间的更新完全同步,能自动进行动态约束检查,具有强劲的复杂曲面造型功能,现已成为微机平台上主流三维设计软件之一。

尽管SolidWorks的功能已非常强大,但由于仍然采用的是手工交互形式建模,不能完全满足专业机械CAD系统的需要。免费论文参考网。基于此因,如果能通过对SolidWorks进行二次开发,针对特定机械结构实现参数化建模,那么对于三维建模在我国企业中的推广将是非常有利的。为了方便用户进行二次开发,SolidWorks软件提供了开发工具API(Application Program Interface,应用程序接口),用户可以使用支持API的高级语言如Visual C++、VisualBasic、Delphi等对SolidWorks进行二次开发[1],创建出用户定制的、特有的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技术的VisualC++编程语言开发的DLL(Dynamic LinkLibrary,动态链接库)文件,可以直接嵌入到SolidWorks内部,当成功加载后,应用程序的菜单就直接出现在SolidWorks主菜单上,与SolidWorks自带的插件一样,而且还可以单独测试,进行操作时极大地提高了设计效率,所以是首选的开发方法。

1.2零部件的参数化建模

三维建模时应对零件进行分析,选择合理的建模方法。参数化设计是指通过改动图形的某一部分或某几部分的尺寸,自动完成对图形中相关部分的修改,即当赋予不同的参数值时,就可自动生成满足设计要求的零部件模型,从而实现同类机械产品快速修改与设计。对于参数化模型而言,主要有两个内容:几何关系和拓扑关系。几何关系是指具有几何意义的点、线、面,有确定的位置和大小;拓扑关系反映了形体的特性和关系,如几何元素之间的邻接关系[2]。免费论文参考网。对于企业中标准化、通用化和系列化的产品,设计时所采用的数学模型及产品结构都可以将数据作为参数变量,从而实现在SolidWorks环境下零部件的三维参数化建模。这种参数化设计技术具有强大的变量驱动和模型再生功能,可以有效地提高设计人员的工作效率。

2.用Visual C++ 6.0对SolidWorks进行二次开发的方法

2.1 DLL的创建

基于COM技术的VisualC++编程语言所开发的DLL文件,可以通过三种方式创建:一种是使用SWizard.swx工程向导,第二种是使用ATL Object Wizard向导,第三种是使用用户自定义向导。第二种向导创建DLL文件,相对来说简单实用,开发时间短。在Visual C++中用该向导创建DLL工程,加入自己应用程序的代码,编译链接后生成*.dll文件,也就是插件。

2.2DLL的加载

将动态链接库文件*.dll加载到SolidWorks中,有两种常用的方法:一种是先运行SolidWorks软件,然后点击SolidWorks菜单栏中的【文件】/【打开】菜单命令,在弹出的过滤器中选择Add-Ins(*.dll),最后选择所需的DLL文件加载,确定即可;另一种是先将DLL在注册表中注册成为SolidWorks系统的插件,然后运行SolidWorks,点击【工具】/【插件】菜单命令,在弹出的插件对话框中选择要加载的插件即可。此操作对于一个动态库文件只需做一次,以后启动SolidWorks软件无需再进行加载操作。

3. 对SolidWorks进行二次开发的实例

以一个柱塞实体为例,介绍采用Visual C++ 6.0编程语言对SolidWorks 2008进行二次开发、参数化建模的应用。

(1)启动Vsiua1 C++,单击【文件】/【新建】,选择【工程】选项卡,选择【ATL COM AppWizard】,输入工程的位置和名称,如PUMP,单击【确定】。

(2)在【Server Type】中选择【DynamicLink Library(DLL)】选项和【Support MFC】选项,单击【完成】,系统会给出“新建工程信息”,核对无误后单击【确定】。

(3)在Visua1 C++的【Class View】标签中,用鼠标右键单击顶部的类图标(PUMP classes),在下拉列表中选择【New ATL Object】。在弹出的对话框中的【Category】列表中,选择【Solidworks】;在【Object】窗口中,选择【SwAddIn】图标,单击【下一步】,在【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函数进行编辑,添加的部分代码如下:

AFX_MANAGE_STATE(AfxGetStaticModuleState())

HRESULT retval;

//得到当前活动文档

CComPtr<IModelDoc2>pModel;

m_iSldWorks->get_IActiveDoc2(&pModel);//创建ModelDoc2接口指针

retval=pModel->InsertSketch();插入一个草图

//定义对话框中涉及的七个参数变量

double SphereRadius;//定义球头半径

double SphereToBottoLength;//定义球头中心到柱塞底面的距离

double PistonOutRadius;//定义柱塞体外径

……

pModel->ICreateCenterLine(-0.01,0,0,-0.08,0,0);//创建柱塞体中心轴线

pModel->ICreateCenterLine(0,0.012,0,0,-0.012,0);//创建球头中心轴线

//定义绘制柱塞草图的一些关键点

doubleA[3],B[3],C[3],D[3],As[3],Bs[3],Cs[3];//定义关键点的类型

A[0]=SphereToBottomLength;//给A点赋值

A[1]=PistonInnerRadius;

A[2]=0;

……

//绘制柱塞体的草图

pModel->ICreateLine2(A[0],A[1],A[2],B[0],B[1],B[2],&pLine1);//绘制柱塞体底面线

pModel->ICreateLine2(B[0],B[1],B[2],C[0],C[1],C[2],&pLine2);//绘制柱塞体外径直体部分线

……

pModel->ICreateArc2(0,0,0,As[0],As[1],As[2],Bs[0],Bs[1],Bs[2],-1,&pCircle);//绘制球头圆弧

pSelMgr->put_EnableContourSelection(true);//选择草图轮廓

pModel->ShowNamedView2(L'*上下二等角轴侧', 8);

pModel->ViewZoomtofit2();//柱塞草图在屏幕上以上下二等轴侧显示

//利用特征函数,生成旋转实体

CComPtr<IFeatureManager>pFtManager;

pModel->get_FeatureManager(&pFtManager);//获取FeatureManager的接口指针

CComPtr<IFeature>pFeature;

pFtManager->FeatureRevolve(6.28318530718,false,0,swRevolveTypeOneDirection,0,false,false,true,&pFeature);//调用旋转特征函数生成旋转特征,即得到柱塞实体

最后选择菜单栏上的【编译】/【全部重建】,对所编制的柱塞体参数化建模程序进行编译。编译通过后,运行SolidWorks2008软件,在主菜单上将显示出新加载的插件“PUMP”及子菜单“柱塞体”,如图3所示。

图3 加载的插件

单击“柱塞体”子菜单,会弹出如图2所示的“柱塞体参数化建模对话框”,在对话框中输入相应的数据,就会在屏幕上自动生成一个柱塞实体,如图4所示。改变对话框中的数据大小,就会得到不同的柱塞实体,这就是参数化变量驱动的结果。

图4 柱塞体参数化建模结果

4.结论

本文研究了对三维绘图软件SolidWorks进行二次开发,实现机械零件参数化建模的过程。设计实例表明,采用Visual C++语言建立的动态链接库文件可以很好地实现与SolidWorks的无缝集成,能满足用户二次开发CAD系统的需要。免费论文参考网。在实际应用中,通过以上介绍的方法,可以定制用户经常使用的零件模板,极大地改善了结构相似的零部件修改和设计的手段,提高了产品的设计效率,缩短了新产品的设计周期,具有较强的应用价值。


参考文献
[1]陶元芳,安喜平,于万成,潘鲜.用VC++对SolidWorks进行二次开发 [J].太原科技大学学报.2006.4
[2]张长胜.采用VisualC++ 对参数化造型软件SolidWorks进行二次开发的方法[J]. 模具技术.2005.No.6
[3]王文波、涂海宁、熊君星.SolidWorks 2008二次开发基础与实例(VC++)[M].清华大学出版社.2009.8
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于Serv-U的FTP服务器的构建
下一篇论文:基于SQL Server 2005安全性机制的研究
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文