sw二次开发文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VBA(Visual Basic for Application)实际就是集成在应用程序内部的开发语言,可以看作是VB的简化版本。使用VBA 编写的程序即称为“宏”。注意,VBA编写的宏是不能脱离应用程序而独立运行的,例如SW的宏必须在SW环境下运行。在SW中打开VBA的方法:使用菜单【工具/宏操作/新建...】或者【工具/宏操作/编辑】

第一课简单的VB知识

VB是我们使用的开发工具,多了解VB知识有助于我们更好的进行SW的二次开发。如有可能,请尽可能抽出时间认真学习VB。VB是面向对象的开发工具。所以“对象”是我们所需要操作的核心。对象代表应用程序中的元素,例如草图直线、拉伸特征。如果我们需要在SW中画一条直线,实际就是添加一个草图直线对象。如果需要修改拉伸特征的定义实际就是编辑拉伸特征对象。

每个对象都有自己的“属性”和“方法”。

“属性”描述了对象的特性,例如Layer(图层)对象有这样几个属性:Name(名称),Color(颜色),Widty(线宽)。显然,只要我们将这几个属性一一表述清楚就可以准确的描述出这个图层对象的特性。

“方法”就是对象所能进行的操作。例如PartDoc(零件文档)对象有这个方法:SaveToFile2。只要我们获得了PartDoc 对象,就可以使用这个方法将当前选择的曲面或实体保存为文件。

提示:对于简单的VB知识,可以查看VBA的帮助。(打开VBA的编程界面,然后使用菜单【帮助/VB 帮助】,或者直接按 F1 键)

第二课 SW的对象模型

我们可以SW的API帮助查询SW相关的对象、属性和方法。

打开SW,使用菜单【帮助/SW API和插件帮助主题】,在弹出的帮助窗口中选择【索引】标签,并输入关键字“object”,然后双击想要查看的主题(object diagram, SolidWorks API)。如需要进一步查询某个对象的具体信息,可以点击图片中对应的对象明。

例如,我们单击“SldWorks”,(如果你很熟悉对象名,可以直接在索引中输入对象名,这样查询对象的属性和方法更便捷) 。

第三课开始简单的编程

如何使用SW提供的这些对象进行我们的二次开发,我们来看看下面这个简单的例子。

我们可以看到SW众多的对象中,SolidWorks对象(SW应用程序对象)处于最顶层,所以获得SldWorks对象是首先要做的Set swApp = Application.SldWorks

上面这条语句的作用是将swApp变量设置成为SW应用程序对象,获得应用程序对象之后,我们就可以使用他的方法来完成我没需要的功能。例如,现在我们需要知道当前SW所使用的语言。

Lang = swApp.GetCurrentLanguage()

使用swApp对象的GetCurrentlanguage方法,并将返回值赋予变量Lang。完整的程序是这样:

ASP/Visual Basic代码

1. Sub main()

2. Set swApp = Application.SldWorks

3. Lang = swApp.GetCurrentLanguage()

4. MsgBox Lang '弹出消息框,显示当前SW使用的语言

5. End Sub

具体的操作方法是这样:

•打开SW;

•使用菜单【工具/宏操作/新建...】;

•输入文件名,并保存;

•显示VBA的工作界面;

•删除窗口中自动生成的程序代码,然后将上面的程序复制到窗口中(中括号内的部分,不包括中括号;

•使用工具栏上的保存按钮,保存结果;

•使用菜单【运行/运行子过程】,或者单击工具栏上的运行按钮(蓝色箭头);

•显示运行结果。

第四课关于变量的声明

一般在变量使用前,都要首先声明变量,下面来看看声明对象变量的方法:

Dim swApp As Objict

swApp As SldWorks.SldWorks

上面两段语句的作用都是声明了对象变量“swApp”。前一段语句将变量声明为一般的对象类型,后一段语句将变量声明为指定的对象类型(此例中声明为Solidworks应用程序对象)。

声明指定的对象类型提供自动的类型检查,更快的代码,并增加可读性。建议尽量使用这种声明的方法。如果有的对象只有在程序执行时才能确定起变量的类型,在编程时不能确定其确切的类型,那么就可以将其声明为一般的对象类型。

下面列举几个SW种常用对象的声明:

Dim swApp As SldWorks.SldWorks 'SW应用程序对象

Dim swModel As SldWorks.ModelDoc2 '文档对象

Dim swPart As SldWorks.PartDoc '零件文档对象

Dim swAssembly As SldWorks.AssemblyDoc '装配体文档对象

Dim swDrawing As SldWorks.DrawingDoc '工程图文档对象

Dim swFeature As SldWorks.Feature '特征对象

Dim swSelectMgr As SldWorks.SelectionMgr '选择管理器对象

第五课在开发环境中添加类型库的引用

先看看添加引用的方法:通过菜单【工具/引用...】,在对话框中选择下面两项 (根据SW的不同,名称可能略有不同)。SldWorks 2006 Type Library

SolidWorks 2006 Constant Type Library

前一项定义了SW中的所有对象。如果在你的程序中需要操作SW的对象,就不要忘记选中它。在默认的环境中已经选择了这项。(如果你需要在程序中操作Excel对象,例如读取表格数据,那么不要忘了选中Execl对象库的应用)。后一项定义了二次开发中会用到的SW中所有的常量,默认环境中没有选择,需要自己添加引用。让我们举个例子看看它用什么作用。

下面是一个典型的创建新文档的语句

set newDoc = SldWorks.NewDocument ( ***, swDwgPaperA3size, ***, *** )

set newDoc = SldWorks.NewDocument ( ***, 8, ***, *** )

两句语句作用是相同的,但是前一句的可读性更好,我们可以很直观的看到创建了一个A3大小的文档。如果没有添加对SW常量的引用,那么,前一种写法将导致程序运行出错。

第六课赋值和引用 (Let & Set)

对于变量的赋值,我们使用Let语句,如:Let a = 10

我们也可以省略Let,如上句也可写成:a = 10

对于对象的引用,我们使用Set语句,如:Set obj1 = ***;注意,Set不能省略。赋值和引用是有区别的,如:

a = 10

b = a

上例中出现了两个变量,这两个变量是独立的,虽然此时他们的值都是10,但是,如果修改其中一个变量的值并不会影响另一个变量。

Set obj1 = ***"q [m R ` ? A2B

Set obj2 = obj1

上例中也出现了两个变量,但他们引用了同一个对象,无论如何修改对象,都会同时反映到两个变量。其实,引用只是建立了一个访问对象的路径,即使上例中两个变量都被释放,对象依然存在,只是暂时不能被访问而已。

第七课录制宏——快速写代码的方法

所谓录制宏,就是记录人的操作过程,并将其转换成程序代码。

注意,并不是所有的操作都能被转换成代码的,而且,自动录制的程序对环境的要求比较严谨,导致录制的程序兼容性很差。所以,在真正的开发中,录制宏只能担当辅助的角色。但是录制宏易学易用,值得初学者学习。以下是录制的过程,以及得到的程序。

第八课修改特征定义

手动修改特征定义是我们经常作的事,当然,也可以使用程序自动完成。(修改特征定义的操作是不能用录制宏功能记录的),让我们利用上边录制的程序来练练如何修改特征定义。

1. 获得特征对象(Feature Object)的引用

我们可以很容易的找到程序中添加拉伸特征的语句,但是他没有建立引用。自己手动改一下;

原来:Part.FeatureManager.FeatureExtrusion True, False, False, 0, ...

改为:Set featObject = Part.FeatureManager.FeatureExtrusion (True, False, False, 0, ...)

2. 获得特征定义对象(Feature Definition Object)的引用

注意,特征对象中保存的数据主要是特征的名称,特征的显示状态等信息,而特征定义对象中保存的信息才是我们需要的。可以用 "GetDefinition" 方法获得特征定义对象的引用

Set featObjDef = featObject.GetDefinition()

3. 使用对象的属性和方法以获得需要的数据,例如获取拉伸特征第一方向的拉伸深度

a = featObjDef.GetDepth(True)

4. 修改特征定义,设置拉伸深度为原来的两倍

featObjDef.SetDepth True, a * 2

5. 更新特征定义

featObject.ModifyDefinition featObjDef, Part, Nothing

编辑原文件,按以上步骤修改,并且在文档头部添加适当的变量声明,然后看看运行结果。

特别注意,无论你的模型使用的是什么单位制,在二次开发时,一律使用米(m)为长度单位,弧度(rad)为角度单位。

可以尝试一下,修改特征定义中的其他项目。

相关文档
最新文档