solidworks二次开发入门教程连载2:利用宏录制实现二次开发

1 VBA及其与宏录制的关系
1.1 VBA简介
    Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。因此,学用VBA 有助于使工作自动化,提高工作效率。另外,由于VBA 可以直接应用宿主软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
    VBA是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。可以认为VBA是非常流行的应用程序开发语言Visual Basic 的子集,实际上VBA是寄生于VB应用程序的版本。VBA 作为一种新一代的标准宏语言,具有跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计人员仅需学习一种统一的标准宏语言,就可以转换到特定的应用软件上去,程序设计人员在编程和调试代码时所看到的是相同的用户界面,而且VBA 与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。有了VBA 以后,多种应用程序共用一种宏语言,节省了程序人员的学习时间,提高了不同应用软件间的相互开发和调用能力。VBA 不但继承了VB 的开发机制,而且VBA 还具有与VB 相似的语言结构,它们的集成开发环境IDE(Intergrated Development Environment)也几乎相同。但是,经过优化,VBA 专门用于Office 的各应用程序。缺点在于VB 可运行直接来自操作系统桌面上的应用程序,而VBA 的项目(Project)仅由使用VBA 的宿主应用程序来调用。
1.2 宏与宏录制
    计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,使用"宏"这个词的使用暗示着将小命令或动作转化为一系列指令。 宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力。
    VBA一般是与宏录制过程密切相关的。通过在SolidWorks中进行宏录制,不仅可以记录下建模时所用到的命令代码,也可以记录其它相关过程的底层操作源代码,同时也可以直观快捷地编译、修改与完善所录制的宏命令,从而可较大地提高系统的自动化水平与工作人员的工作效率。同时,SolidWorks提供了强大与完善的API帮助文件,可以很好地为编程工作服务,随时进行答疑解惑。
2 利用宏录制实现圆台交互式绘制程序的详细开发过程
本文以一个简单的圆台实例为例,详细讲解这一开发过程。
(1)首先是进入SolidWorks环境,新建一个零件如图1所示。
图1 SolidWorks主界面示意图
(2)点击宏文件工具条中 宏录制按钮进行录制,接下来进行零件的绘制。绘制完毕后单击 停止按钮进行宏文件的保存。
(3)打开录制宏的源代码,如下所示:
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateCircle 0, 0, 0, -0.0275447640118, 0.008279351032448, 0
Part.ShowNamedView2 "*上下二等角轴测", 8
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.06, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False
Part.SelectionManager.EnableContourSelection = 0
End Sub
(4)宏录制的程序代码比较混乱,存在过多的冗余代码,占用内存空间并影响浏览与调试过程的正常进行,需要进行修改与整理。

    修改与整理的一般原则是:删除掉程序中未使用到得变量声明;清除选择代码可以去除;选择轮廓代码可以去除;选择圆等操作代码可以去除;程序中出项的随机参数应进行修改等等。此处特别注意的一点就是,在某些操作环境下,可能录制的宏不能直接运行,此时的一种解决办法就是将上述语句中的"Set swApp = Application.SldWorks;Set Part = swApp.ActiveDoc;Set SelMgr = Part.SelectionManager"三句代码替换为以下较为通用的语句:"Set swApp = Application.SldWorks;Set Part = swApp.NewPart;Set Part = swApp.ActiveDoc"。
    考虑到要实现圆台参数化交互式调用的功能,右键点击工程资源管理器中"宏1"目录下"SolidWorks 对象"子对象,在弹出菜单中依次选中"插入-用户菜单",接下来在新建立的窗体上依次添加两个lable控件、两个Textbox控件及两个CommandButton控件,设置好控件属性,界面如图2所示。
图2 用户菜单主界面
修改后的代码如下所示[1]:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Private Sub cmdCreate_Click()
Set swApp = Application.SldWorks
Set Part = swApp.NewPart
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID("前视", "PLANE", 0, 0, 0, False, 0, Nothing)
Part.InsertSketch2 True
Part.CreateCircle 0, 0, 0, 0, Val(DiaText.Text) / 1000, 0
Part.ShowNamedView2 "*上下二等角轴测", 8
Part.FeatureManager.FeatureExtrusion True, False, False, 0, 0, Val(HeiText.Text) / 1000, 0.01, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1
End Sub
Private Sub Cmdexit_Click()
End
End Sub
(5)运行程序后,点击"启动SolidWorks绘图"按钮后的结果如图3所示。可以方便地对圆台进行交互式修改与完善。最后可点击"退出SolidWorks环境"按钮退出程序。
图3 交互式绘制圆台程序运行后效果图
3 小结
    使用VBA开发的程序具有以下优点:使得重复的任务自动化;定制和扩展客户应用程序功能;将客户应用程序及数据集成到其他应用程序中;最大的优点在于可以便捷高效地实现工作任务,通过本例也证实了这一点,但其缺点在于使用VBA开发的程序不能脱离他的宿主程序,可移植性不好,必须在"父"环境中才可以得以实现。

 

返回Solidworks技术文章专题列表>>>