Solidworks的二次开发及参数化设计
2010-09-27李帅
李帅
(枣庄学院 物理与电子工程系,山东 枣庄 277160)
Solidworks的二次开发及参数化设计
李帅
(枣庄学院 物理与电子工程系,山东 枣庄 277160)
讨论了以 Solidworks为平台,对 CAD软件进行二次开发的必要性.介绍了利用VisualBasic高级程序语言对其进行二次开发的一般方法,该方法避开了开发中的难点,减少了工作量,对设计人员具有一定的参考价值和现实意义.
Solidworks;VisualBasic;二次开发;参数化设计*
0 引言
Solidworks是一套基于W indows平台的参数化特征建模软件,以其强大的功能、简洁的界面和不断创新的技术而逐渐成为主流的三维设计软件.Solidworks通过对象链接与嵌入(即OLE技术)为用户提供了大量的 Solidworks API函数,因此,凡是支持 OLE编程的开发工具均可用于 Solidworks的二次开发,创建出符合用户特殊需求的功能模块.Solidworks还可与MARC、ANSYS等有限元分析软件进行连接,实现仿真分析[1].
但是 Solidworks也不可能完全满足企业的所有要求,例如没有适用于我国国标的标准件库等等.因此,为了适应企业的特殊需求,使 Solidworks在我国企业中发挥作用,并使常用或重复的任务简单化,就必须对其进行专业化和本地化的二次开发.
1 Solidworks二次开发工具的选取
Solidworks的二次开发工具很多,例如:Delphi、C语言、Visual C++、VisualBasic等,开发者可结合自身的条件和特点选择一种合适的开发工具.当然,也可同时选用两三种工具,但这对开发者的要求极高[3].
VB是目前可运行在W indows平台下的主流开发工具之一,其对OLE的支持有两种方式——使用OLE控件和在运行时创建OLE对象.为了更好地控制对象,多采用程序运行时再创建OLE对象的方法.同时,由于Visual Basic具有简单易用性和真正的“所见即所得”特性,使用VisualBasic来开发软件,开发周期短,代码效率高[3].目前用VisualBasic 6.0开发 Solidworks主要有两种方法:
(1)宏录制.先用人机交互形式建立模型,设置合理的变量,再通过 VB程序驱动变量来更新模型.Solidworks提供了宏录制功能,可记录用户的界面菜单操作所用到的Solidworks对象、方法,然后使用宏重新执行这些操作.宏所包含的调用与使用用户界面执行操作时对API的调用类似,通过记录宏和交互式的执行命令,可在所需的代码上获得命令和语法上的一致性.这种方法编程较容易,通用性好.
(2)直接编程.调用 Solidworks API函数编写程序代码,完全实现模型的编辑以及三维模型的参数化设计.这种方法要求使用者非常熟悉 Solidworks API函数,对于初学者有一定的难度,但可以建立具有复杂形体的零件造型.故本文采用第一种方法进行开发.
2 利用VB进行 Solidworks二次开发的过程
在球头立铣刀的刃磨仿真研究中,为了优化刃磨参数﹑分析误差,需要建立不同尺寸的铣刀毛坯,若对其进行参数化设计则可避免重复性劳动,缩短研发周期.下面以实例来说明二次开发的过程:
(1)实体创建的宏录制
结合工程人员的设计意图,分析实体结构,确定特征建立的先后顺序.为了避免生成过多的冗余程序代码,应尽量减少驱动参数,尽可能简化特征建立的步骤.打开宏录制,在 Solidworks中创建实体并用变量标注参数尺寸,草图如图1所示.
图1 铣刀毛坯草图Fig1 The sketch ofmill blank
(2)人机交互式界面的设计
应遵循界面友好﹑操作方便的原则,有出错警告及提示帮助信息.窗体上有两个Tex tBox控件用于控制铣刀半径和刀柄长度,设置时将两个文本框的变量与草图中的 a,b变量关联起来.两个 CommandButton控件分别用于执行实体的生成和退出,设置时将两个命令按扭的 Caption属性分别设置为“确定”、“返回椭圆系统”,设计好的用户界面见图2.
图2 铣刀毛坯界面Fig2 The interface ofmill blank
(3) 程序代码的编写及调试
由于前面用宏录制得到了实体建立的基础代码,开发人员根据宏文件中的对象和方法在自己开发的应用程序中合理组织,稍做修改,对具体参数用变量来关联,这样通过对变量的控制就可实现球头立铣刀毛坯的参数化设计.在二次开发过程中,宏录制文件中的许多对象、方法可以直接在 Visual Basic应用程序中应用,大大简化了开发过程.具体程序代码及注释如下:
Private Sub Command1_Click() ’单击主要对象按钮1
D im s wApp As Object ’定义程序对象句柄
D im Part As Object ’定义零件对象句柄
D im boolstatus As Boolean ’boolstatus声明为布尔值
D im a As Variant ’定义a为数值型变量
D im b As Variant ’定义b为数值型变量
a=Text1.Text/1000 ’给刀具半径赋值,单位为毫米
b=Text2.Text/1000 ’给刀柄长度赋值,单位为毫米
Set s wApp=CreateObject("Sld Works.Application") ’创建一个应用程序
Set Part=s wApp.Newpart() ’新建一个零件文档
Set Part=s wApp.ActiveDoc ’激活打开的文件
boolstatus=Part.Extension.Selec tBy ID("Front Plane","PLANE",0,0,0,False,0,
Nothing) ’选择前视基准面作为草图平面
Part.InsertSketch2 True ’插入草图’Part.ClearSelection2 True ’清除选择.此句程序可省略,以下同
Part.CreateLine2 0,0,0,0,a,0 ’生成直线OA’Part.ClearSelection2 True
Part.CreateLine2 0,a,0,b,a,0’生成直线AB
’Part.ClearSelection2 True
Part.CreateTangen tArc2 b,a,0,b+a,0,0,1 ’生成圆弧BC’Part.ClearSelection2 True
Part.CreateLine2 b+a,0,0,0,0,0 ’生成直线CO’Part.ClearSelection2 True
Part.CreateLine2(-a,0,0,b+2* a,0,0).ConstructionGeometry=True’生成旋转
中心线 l
boolstatus=Part.Extension.Selec tBy ID("Line4","SKETCHSEG MENT",0,0,0,True,
0,Nothing)
Part.ShowNamedView2"*Tr imetric",8 ’以等轴测视图显示
’Part.ClearSelection2 True
boolstatus=Part.Extension.Selec tBy ID("Line4","SKETCHSEG MENT",0,0,0,False,
4,Nothing) ’选择默认旋转中心线
boolstatus=Part.Extension.Selec tBy ID("Sketch4","SKETCH",0,0,0,True,0,Noth
ing) ’选择默认草图轮廓
Part.Feature Manager.FeatureRevolve 6.28318530718,False,0,0,0,1,1,1’旋转生成
零件
Part.Selection Manager.EnableContourSelection=0 ’表示轮廓选择,可以省略
Part.ViewZoomtofit2 ’把视图调整到最佳位置
End Sub
Private Sub Command2_Click() ’单击主要对象按钮2
Load UserFor m3 ’返回椭圆系统窗体
UserFor m3.Hide’隐藏该窗体
End
End Sub
(4) 运行程序
程序代码编写好以后,生成 exe可执行文件,做为插件添加到 Solidworks的界面中.设计者只要输入半径和刀柄参数,即可自动生成实体模型.这样就完成了球头立铣刀毛坯的参数化设计.执行上述程序的结果见图3,前刀面刃磨仿真结果如图4所示.
图3 球头立铣刀毛坯Fig3 The blank of ball-nose end mill
图4 球头立铣刀前刀面刃磨仿真Fig4 Simulation of rake face grinding on ball-nose end mill
3 结束语
Solidworks提供了丰富的二次开发接口,用户可以结合自身的实际情况和开发目的采用适当的开发方法[6].本文以铣刀毛坯的创建为例,简要介绍了利用 VB对 Solidworks进行二次开发的一般方法及步骤,此方法避开了开发过程中的难点,减少了工作量,达到了开发目的.建立的二次开发系统,运行可靠,简单方便,具有一定的实际意义.同时,对CAD/CAM软件的应用和推广具有重要的推动作用.
[1]李华,罗会信.Solidworks的二次开发与应用[J].机械工程与自动化,2005,8(4):41-43.
[2]王青,邬义志,夏冠华.三维 CAD/CAM系统二次开发技术[J].机械制造与自动化,2001,(4):183~185.
[3]江洪,李仲兴,邢启恩.SoildWorks2003二次开发基础与实例教程[M].北京:电子工业出版社,2003.
[4]清源计算机工作室编著.VisualBasic6.0开发宝典[M].北京:机械工业出版社,1999.
[5]张莉.基于 Solidworks平台的二次开发技术[J].计算机时代,2003,(lO):31-33.
[6]江洪,魏峥等.Solidworks二次开发实例解析[M].北京:机械工业出版社,2004.
[责任编辑:陈庆朋]
TP39
A
1004-7077(2010)02-0079-04
2009-11-26
李帅(1982-),男,山东枣庄人,助教,工学硕士,主要从事特种刀具和现代切削加工理论方面的研究.