在对solidworks原有功能进行改善的过程中,有效地利用solidworks提供给我们的应用编程接口(API)来编写提高我们工作效率的程序是其中手段之一。本文在于总结作者进行此类开发的经验,给大家提供一些经验性建议。
目录
第1章 概述... 2
1.1 内容简介... 2
1.2 名词解释... 2
1.3 预备知识... 3
第2章 录制、编辑、运行宏... 3
2.1 录制、编辑、运行宏基本步骤:... 3
2.2 一些基本的建议:... 3
第3章 代码格式及帮助信息... 5
3.1 代码格式:... 5
3.2 获得帮助:... 6
第4章 常用对象模型... 7
4.1 综述:... 7
4.2 SldWorks.SldWorks : 8
4.3 SldWorks.ModelDoc2:... 8
4.4 SldWorks.PartDoc、SldWorks.AssemblyDoc、SldWorks.DrawingDoc:... 9
4.5 SldWorks.feature、SldWorks.Sketch :... 9
第5章 零件 PartDoc. 9
5.1 综述:... 9
5.2 选择对象的话题:... 10
5.3 访问并修改特征: 12
5.4 草图的话题:... 17
第6章 装配体... 18
6.1 综述:... 18
6.2 组件的话题:插入零部件到装配体... 19
6.3 配合的话题:在装配体中添加配合... 22
6.4 由于说到参考,顺便讨论一下配合参考:... 26
第7章 工程图... 28
7.1 综述:... 28
7.2 注释的话题:... 29
7.3 生成图纸的话题:并讨论如何解决实际问题... 30
第8章 总结:... 40
第1章 概述
1.1 内容简介
Solidworks在提供了强大的三维建模功能的同时,也为使用者提供了开放的应用程序编程接口(API),通过调用这些API,我们可以将solidworks中一些重复单调或者规则明确的操作使用程序语言描述,通过简单的人机交互,让计算机自己来完成此类工作。掌握了此类本领,可以在以后的工作中,开阔自己的视野,更加深入的了解软件本身工作的原理,并且,改善自己的工作,提高工作效率和质量。
本文旨在总结作者工作中获得的经验,专注于solidworks软件本身特点,文章中示例的代码基本上使用了vb语言描述,选择vb语言是因为其语法简单易懂,并且和应用程序间有很明朗的接口不需要再学习其它技术(如果使用c++,可能需要读者拥有COM知识)。
Solidworks提供了极其丰富的API,并且有很完善的帮助系统。我们可以使用 Microsoft VBA编写SolidWorks Macros或者使用其他编程环境编写Standalone and Add-in Applications。(使用visual studio到.NET都可以)在SW的API帮助中我们可以很明了的查看API调用语法及相关的示例代码。本文不可能对每一个API进行细致的解释,在后面章节主要指导大家如何使用软件提供的帮助来在需要时得到有用信息的手段。
本文所有API和代码都以solidworks2005 sp0.0 版本为准。
1.2 名词解释
API :应用编程接口Application Programming Interface
对象:即计算机抽象出来的一种事物,在面向对象的程序设计中它表示由数据和与该数据关联的操作组成的类的具体实现。
属性:对象所具有的属性,识别及说明对象的特性。
方法:对象可以使用的对数据的操作。
1.3 预备知识
首先我们的读者应该有简单的VB经验。当然如果没有也可以临时抱佛脚(VB语句是直观易懂的),边看代码边学习。很好的掌握SW中宏的录制功能多阅读API帮助中的示例代码,是自学的最佳途径(虽然SW的宏录制功能相比EXCEl来说代码不是很清晰)。
其次solidworks软件应该非常熟练,读者应该有使用solidworks实际建模的经验,,这是能够写出良好代码的基础。否则看到一些对象名称也不能了解它对应了软件的那个功能。
如果英文不够好,请准备及时词典,如金山词霸等。Solidworks提供的API帮助是纯英文的,solidworks汉化的还不错,不明白为什么不顺便把API帮助也翻过来。
准备好,我们可以开始了.
第2章 录制、编辑、运行宏
2.1 录制、编辑、运行宏基本步骤:
开始solidworks编程的最快方式就是录制宏。宏可以记录用户的操作将其记录为一系列solidworksAPI的调用。在solidworks“工具”菜单“宏”中有运行、录制、新建、编辑等选项。
我们选择“录制”来开始记录用户操作,选择“停止”来结束宏的录制。结束后会提示保存宏文件,其后缀名为.swp。(估计是solidworks program的意思吧)。录制到停止间对solidworks进行的操作都将记录到宏文件中。但是直接录制的宏程序的可用性很差,我们需要对它进行一些合理的优化,清理多余的语句,所以在录制完成宏之后需要编辑它。
编辑宏的时候,选择“工具”菜单“宏”中的“编辑”,此时提示你选择要编辑的宏文件(swp文件)。选择后进入编辑界面(其实就是VBA的编辑器,叫集成环境也行)。
需要说明的是,如果之前你在excel、word等软件中录制过宏程序,那么可能solidworks录制宏中的垃圾数据要更多些。
2.2 一些基本的建议:
Solidworks在帮助中也有一个大体的介绍,在编辑一个新录制的宏时可以需要删除下面的多余代码(Delete extra lines of code):
1、The following variables are declared automatically in a SolidWorks macro. Delete any variables not used in the macro. SolidWorks对象的声明是自动产生的,可以将没用到的删除
2、Delete all lines of code that change the view. 删除切换视图的代码
arden says:像这样的 Part.ActiveView().RotateAboutCenter 0.0662574, 0.0346621 无情的删掉吧
3、Delete all ModelDocExtension::SelectByID2 calls appearing immediately before ModelDoc2::ClearSelection2 calls. However, do not delete ModelDocExtension::SelectByID2 calls appearing immediately after ModelDoc2::ClearSelection2 calls. Delete all ModelDoc2::ClearSelection2 calls appearing immediately before ModelDocExtension::SelectByID2.
删除所有紧挨ModelDoc2::ClearSelection2之前的ModelDocExtension::SelectByID2调用,不要删除紧挨ModelDoc2::ClearSelection2调用后的ModelDocExtension::SelectByID2。删除所有紧挨ModelDocExtension::SelectByID2之前的ModelDoc2::ClearSelection2。
下图为VBA的集成编辑环境:
编辑完成后,按照程序的要求来运行宏,在VBA编辑器中点“运行”开始执行程序,需要注意,有些宏程序的运行有前提条件,比如需要事先选择好一个特征等。第一次运行不一定成功,这时候就要对宏代码进行调整,反复一个编辑代码、测试运行的循环,最后得到比较满意的结果。
加载宏到solidworks有很多种方法我们只介绍最简单的三种:快捷键、菜单、工具栏按钮。可以参考文档《SW技术文档-2005041402-加载宏到solidworks的三种方法.doc》
第3章 代码格式及帮助信息
3.1 代码格式:
这章中,我们给出一段完成简单功能的代码,并讨论如何从帮助中获得有用信息。
首先,打开soliworks,选择“工具”、“宏”、“新建”,给新的宏文件起名字为“openprt.swp”。清空vba编辑器中的内容,拷贝或者输入下面的代码,保存。
'---------------------------------
' Preconditions: None
' Postconditions: Specified document is opened.
'---------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim fileerror As Long
Dim filewarning As Long
Sub main()
Set swApp = Application.SldWorks
swApp.Visible = True
swApp.OpenDoc6 "d:\samples\hotrod.sldprt", swDocPART, swOpenDocOptions_Silent, "", fileerror, filewarning
End Sub
上面的代码来自solidworksAPI帮助,它打开d:\samples\目录下的零件文件hotrod.sldprt。我们来分别解释一下上面代码的内容:
'---------------------------------
' Preconditions: None
' Postconditions: Specified document is opened.
'---------------------------------
注释:注释块说明了程序运行的上下文:前提条件(Preconditions)为:无 NONE ;运行结果为:打开指定的文件。API帮助中的示例都有这样的格式,需要大家在使用时注意其上下文约束条件。
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim fileerror As Long
Dim filewarning As Long
声明变量和对象:swapp为一个solidworks应用程序对象。其它两个为long型整数,用来保存错误和警告id。
Sub main() 这是主过程,以main为名称。
Set swApp = Application.SldWorks 刚才的DIM语句只是声明了对象swapp,现在使用SET定义对象
swApp.Visible = True 设置应用程序可见
swApp.OpenDoc6 "d:\samples\hotrod.sldprt", swDocPART, swOpenDocOptions_Silent, "", fileerror, filewarning
打开文件d:\samples\hotrod.sldprt 。
End Sub
3.2 获得帮助:
当我们想从这个示例代码中了解打开一个文件的细节时,我们需要OpenDoc6函数的参考,可以在索引或者搜索中查找OpenDoc6,得到如下信息(汉字为我的注释):
Description:描述此API完成