第8章二次开发.docx
- 文档编号:7695169
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:53
- 大小:989.90KB
第8章二次开发.docx
《第8章二次开发.docx》由会员分享,可在线阅读,更多相关《第8章二次开发.docx(53页珍藏版)》请在冰豆网上搜索。
第8章二次开发
目录
第八章SolidWorks二次开发2
8.1SolidWorks二次开发中的术语2
8.2SolidWorks二次开发的工具3
8.3SolidWorksAPI对象概述5
8.3.1SldWorks对象5
8.3.2Environment对象6
8.3.3Frame对象6
8.3.4AttributeDef对象6
8.3.5Modeler对象6
8.3.6SWPropertySheet对象7
8.3.7ModelDoc对象7
8.3.8其他的对象7
8.4程序指导8
8.4.1SolidWorksAPI变量8
8.4.2SolidWorksAPI常量9
8.4.3单位10
8.5SolidWorksAPI常用对象的属性和用法10
8.5.1创建SldWorks对象10
8.5.2文件操作11
8.5.3辅助命令13
8.5.4基本草图绘制命令15
8.5.5基本实体建模命令18
8.5.6基本装配命令22
8.6用VB对SolidWorks进行二次开发的总体思想及方法23
8.6.1SolidWorks宏工具23
8.6.2用VisualBasic开发SolidWorks的一般步骤25
8.6.3应用程序的执行方式28
8.7综合应用举例28
8.7.1钻套设计28
8.7.2新建命令按钮32
8.7.3建立衬套标准件库34
8.8小结40
第八章SolidWorks二次开发
随着我国CAD应用领域的不断扩大和应用水平的不断提高,用户需求与CAD系统的矛盾日益增加。
这是因为通用CAD软件注重功能的全面性,涵盖了制造业的方方面面,但是专业针对性差,不能很好地满足特定企业的设计要求。
所以在通用CAD软件的基础上,结合企业实际需要进行二次开发,已经成为CAD软件取得实效的关键环节。
SolidWorks二次开发就是以SolidWorks系统为基础平台,在SolidWorks提供的开发环境与编程接口基础之上,研制开发符合相关标准和适合企业实际需求的用户化、专业化、集成化软件,以进一步提高产品研发的效率。
在通用CAD基础上融入专业知识,构建专业CAD系统是当前深化CAD应用的潮流。
8.1SolidWorks二次开发中的术语
要顺利对SolidWorks进行二次开发,以下的基本术语是需要知道的。
1.COM技术
COM(ComponentObjectModel,组件对象模型)是微软公司创建的一种软件开发规范,按照这种标准开发出来的软件模块(COM组件)之间可以跨进程、跨机器、甚至跨网络相互调用对方的功能。
通过动态链接库(DLL),组件可以链接起来形成一个完整的系统。
构成系统的组件可以动态地更新或替换,方便灵活地完成系统的升级。
传统应用程序的组成部分是分立的文件、模块或类,这些组成部分经过编译并链接之后才形成应用程序。
要想推出应用程序的新版本,就需要将这些组成部分重新编译,既费时又费力。
有了组件的概念,就可以将改进后的新组件插入到应用程序中,并替换掉原有的旧组件,从而赋予应用程序新的活力。
目前,COM技术已经成为Windows全部技术的基础,并在Microsoft向Internet进军的道路上扮演着十分重要的角色。
2.ActiveX控件
ActiveX以COM为基础,其中包括了OLE技术以及应用于Internet的多种技术。
它使得不同的进程,甚至是网络上的进程之间相互通信,并朝着多媒体的方向发展。
ActiveX是一种面向对象的组件系统,其中包括了组件软件的各个方面,有复合文档、自定义控制、OLE自动化、交互应用程序脚本、数据传送及其他分布式软件的相互作用。
这些组件对象为用户提供了各种不同的功能,使得不同软件供应商提供的组件可以在二进制级进行相互连接和通信。
对象通过接口实现组件之间以及组件与系统之间的相互作用。
ActiveX是一种标准,利用这个标准可以使通过不同语言开发的软件构件在单机或网络环境中相互操作。
同时,ActiveX也是以组件对象模型为基础的开放技术的集合,它代表了应用程序与Internet的一种集成策略。
3.OLE技术
OLE(ObjectLinkingandEmbedding,对象链接与嵌入)使得应用程序之间能够通过数据嵌入或链接的方式来共享数据。
含有嵌入或链接文档数据的应用程序被称为容器程序,提供文档数据编辑的应用程序被称为服务器程序。
在任何一个OLE容器程序中,用户只要双击链接或嵌入的数据对象,就可以激活处理该数据类型的应用程序,OLE的作用就是可以很方便的使用专门处理文档数据的应用程序进行编辑。
自OLE2.0推出以后,OLE已经不再是对象的嵌入和链接的缩略词。
不妨认为ActiveX是OLE3.0,事实上ActiveX是OLE在网络上的扩展,它使用了OLE技术并且使它超过了本地机的范围,进入了一般的企业网和Internet。
4.宏
宏是一系列命令的集合,相当于DOS下的批处理。
用户可以录制使用SolidWorks用户界面执行的操作,然后使用SolidWorks宏重新执行这些操作。
宏所包含的调用,相当于使用用户界面执行操作时对API的调用。
在编写程序时,通常把通过宏操作获得的代码用做工程的基础。
当向程序添加功能时,先返回到SolidWorks用户界面,录制需要添加的宏,对其进行适当的编辑修改,然后复制添加到应用程序代码中。
这样,通过宏操作和交互式的执行任务,不仅可以提高编程效率,对SolidWorksAPI语法的学习也有很大的帮助。
8.2SolidWorks二次开发的工具
任何支持OLE和COM的编程语言都可以作为SolidWorks的开发工具。
SolidWorks二次开发分为两种:
一种是基于自动化技术的,可以开发EXE形式的程序;另一种开发形式是基于COM的,这种技术可以使用最多的SolidWorksAPI(应用程序编程接口)。
API可控制SolidWorks会话的方式,生成*.dll格式的文件,也就是SolidWorks的插件。
SolidWorks的二次开发工具较多,用户可以根据自身的条件及工具的特点,选择一种合适的开发工具。
下面对几个主要的二次开发工具做一概述。
1.Delphi
Delphi是Borland公司产品,是基于ObjectPascal的开发工具。
它是一个运行在Windows下的可视化编程环境,可以创建Windows应用程序。
它具有高性能的32位本地优化代码编译器,其应用程序可直接运行,能够最终生成可单独执行的DLL与EXE文件。
Delphi作为一种面向对象的可视化开发工具,具有诸多优点,但目前Delphi仅是计算机专业人士在用,非计算机专业的人用的很少。
2.VisualC++6.0
VisualC++6.0是Microsoft推出的应用非常广泛的可视化编程语言,提供了功能强大的集成开发环境,用以方便有效地管理、编写、编译、跟踪C++程序,大大减少了程序员的工作,提高了程序代码的效率。
VisualC++6.0开发环境十分友善,其高度的可视化开发方式和强大的向导工具(AppWizards)能够帮助用户轻松地开发出多种类型的应用程序。
大多数情况下,用户只需向自动生成的程序框架中填充定制代码即可,而且使用ClassWizard还能够大大简化这个过程。
VisualC++6.0中为用户提供了许多有用的工具,能够帮助用户寻找错误和提高程序效率。
3.VisualBasic6.0
VisualBasic6.0是Microsoft公司于1991年推出的Windows应用程序开发工具,短短的几年时间,就成为Windows流行的编程语言,从根本上改变了传统的程序设计模式,大大简化了Windows应用程序设计。
它的出现被计算机界看作是一个“令人震惊的奇迹”。
VisualBasic的诞生使编程技术向前迈进了一大步,开创了可视化编程的先河。
VisualBasic6.0是在原有BASIC语言的基础上进一步发展而来的,至今已包含了数百条语句、函数及关键词,其中很多和Windows GUI有直接关系。
专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。
和VisualC++这样的主流语言相比,VisualBasic具有不可替代的简单易用性和真正的“所见即所得”特性。
曾见过一个比喻,把VisualBasic比喻为砖,VisualC++比喻为泥,用泥当然可能盖出更漂亮的房子,但得先把泥制作成砖。
VisualBasic最大的特点就是简单,使用VB来开发软件,开发周期短,代码效率高。
4.VBA
在1993年,Microsoft公司首先推出了一种可以被多种应用程序共享的、针对应用程序内部可编程的、通用的可视化应用程序编程语言-VisualBasicforApplication(MicrosoftOffice软件的通用控制语言,简称VBA)。
VBA提供的并不单单只是程序,而是对MicrosoftOffice各种软件功能的一种综合控制。
VBA还具有应用程序生成器的特性,因为用户只要将想自动化的操作记录成宏,就可以直接产生宏程序代码,而不必再费事编写程序。
在SolidWorks二次开发中,VBA常用于录制宏,得到基本程序框架。
由于VisualBasic6.0易学易用,使用人员较多,本章将以VisualBasic6.0作为开发工具,所有的例子均用VisualBasic6.0编写。
8.3SolidWorksAPI对象概述
图8-1SolidWorksAPI对象梗概
图8-1是SolidWorksAPI对象的一个梗概。
从图中可以看到SolidWorksAPI的对象分为若干层,每一层又包括若干对象。
每一个对象又都有自己的属性、方法和事件。
这些OLE对象涵盖了SolidWorks的全部数据模型,通过对SolidWorks的OLE对象属性的设置和对OLE对象方法的调用,就可以在用户自己开发的系统中实现与SolidWorks相同的功能。
一般而言,想要掌握每个对象的用法不太现实,因为这些对象实在是太多了。
在这里先对SolidWorksAPI对象的概况有个了解,以后若在开发中用到,通过查找API帮助完全可以模仿本书所述的方法来使用它。
8.3.1SldWorks对象
SldWorks对象包括ModelDoc、Environment、Frame、AttributeDef、Modeler、SWPropertySheet以及一些其他的对象。
SldWorks对象是SolidWorksAPI中的最高层的对象,它能够直接或间接地访问SolidWorksAPI中的所有其他对象。
利用它可以实现程序的最基本的操作,如创建、打开、关闭、结束文件、重排图标和窗口、设置当前的激活文件、生成属性定义,也可以对SolidWorks的系统环境进行设置。
8.3.2Environment对象
Environment对象可分析文本和几何关系,该几何关系用于生成符号。
如果有一个包含了符号的注释,想重新生成注释时可用Environment对象。
目前SolidWorks有一组符号用于几何公差、孔和修改。
从Environment类返回的所有数值都是以文本高1.0为单位的。
一个具有文本高0.15的符号,应将返回的数字乘以0.15。
这个对象的返回值可见SldWorks:
:
GetEnvironment。
可以在<安装目录>\lang\english\Gtol.sym中找到文件,该文件包含所支持的几何公差符号和它们在SolidWorks文本文件中的缩写词。
8.3.3Frame对象
Frame对象用于对SolidWorks的下拉菜单和弹出菜单进行修改、检查和添加操作。
这个对象的返回值可见Sldworks:
:
Frame。
8.3.4AttributeDef对象
应用程序可以在SolidWorks文档中生成附加于实体上的属性数据。
这个属性是特殊的应用数据包,它将自动地存储SolidWorks文件,并在文件被打开时自动重载数据。
属性定义为数据包定义了一个模板。
该定义包含属性中的参考名、类型和默认值。
可以在模型中生成定义在实体上的实例。
属性生成的一般步骤:
(1)创建属性定义(SldWorks:
:
DefineAttribute)。
(2)向属性定义中添加参数(SldWorks:
:
AddParameter)。
(3)记录属性定义(SldWorks:
:
Register)。
(4)遍历模型,生成属性定义的实例(Sldworks:
:
CreateInstance4)。
在运行期间,步骤
(1)~(3)只执行一次。
也就是说,只在最初加载DLL文件时或第一次运行EXE文件时才执行步骤
(1)~(3),然后就可以生成无数的属性定义实例,直到DLL被卸载或EXE被关闭。
8.3.5Modeler对象
Modeler对象为管理TemporaryBody(临时体)对象提供接口。
临时体对象主要用于显示。
可以用CreateBodyFromFaces等方法创建临时体。
除非显示调用Body:
:
Save方法,否则临时实体将随文档一起存储。
Modeler对象的返回值可以通过SldWorks:
:
GetModeler方法得到。
8.3.6SWPropertySheet对象
通过SWPropertySheet对象,应用程序可以在SolidWorks输出的属性表中添加记录,可以在swconst.h文件定义的swPropSheetType_e枚举类中找到支持此功能的属性表。
8.3.7ModelDoc对象
ModelDoc对象属于模型层,是SldWorks的子对象。
用ModelDoc对象可以实现视图设置、轮廓线修改、参数控制、对象选择/打开和保存文档、创建编辑特征参量、创建框架等与实体模型相关的各类操作。
ModelDoc对象包括PartDoc、AssemblyDoc和DrawingDoc等对象。
从SolidWorks2001开始,ModelDoc对象已经被更新的ModelDoc2对象所代替。
在SolidWorks中,有三种主要的文件类型:
零件、装配体和工程图。
每种文件类型都有自己的API对象(PartDoc、AssemblyDoc和DrawingDoc)及相关的函数。
例如,函数AddComponent仅存在于AssemblyDoc对象中,因为只有装配体文件才有增加零部件这一特殊要求。
SolidWorksAPI也有一些所有文件类型都通用的函数。
例如,打印、存储、文件命名等是所有文件类型共有的。
SolidWorksAPI通过ModelDoc对象来开放通用文件级的功能。
ModelDoc对象提供了直接访问PartDoc、AssemblyDoc和DrawingDoc对象的方法,明白这一点相当重要。
对COM应用程序来说,这意味着可以通过QueryInterface函数从三个对象中的任何一个获得ModelDoc对象。
同样地,用QueryInterface通过基于ModelDoc指针所代表的文件类型,能够从ModelDoc对象获得相关的PartDoc、AssemblyDoc和DrawingDoc对象。
可以使用标准的QueryInterface技术或者使用ModelDoc2:
:
GetType函数来确定当前的ModelDoc指针所代表的文件类型。
对于OLE应用程序来说,这意味着可以很简单的定义一个新的IModelDoc对象,该对象的调用指针和IPartDoc、IAssemblyDoc或IDrawingDoc对象的一样。
同样地,对于给定的零件,可以使用它的ModelDoc调用指针来定义一个新的IPartDoc对象。
执行此操作之前,应该使用Modeldoc2:
:
GetType函数进行文件类型校验。
例如,如果GetType函数表明这个ModelDoc对象是装配体文件,那么使用调用指针来定义一个新的IAssemblyDoc对象和访问任何装配功能都是安全的。
PartDoc对象用于执行零件模型操作。
它包括Feature、Annotation和Configuration等子对象,可以实现实体和特征的创建,压缩实体及特征,获取零件尺寸等功能。
AssemblyDoc对象用于执行装配操作。
例如,添加新的零部件、添加配合要求、零部件隐藏以及爆炸零部件等。
DrawingDoc对象用于执行工程图操作。
例如,创建、对齐和访问视图,创建标注、明细表等。
8.3.8其他的对象
•Parameter对象可获得和设置属性中的值。
•Entity对象可访问存储在实体中的属性实例。
•EnumBodies2对象可访问体列表。
•EnumCoEdges对象可访问coedges列表。
•EnumFaces2对象允许访问面列表。
•EnumEdges对象可访问边列表。
•EnumDocuments2对象可访问文件列表。
•EnumLoops2对象可访问环、回路列表。
•EnumComponents对象允许访问零件列表。
•EnumDrSection对象可访问DrSection对象列表。
•EnumSketchHatche对象可访问SketchHatches对象列表。
•EnumSketchPoint对象可访问SketchPoints对象列表。
•EnumSketchSegments对象可访问SketchSegments列表。
•EnumDisplayDimensions对象可访问DisplayDimensions列表。
•EnumModelViews对象可访问EnumModelViews列表。
上述这些对象也许还有许多子对象,例如ModelDoc对象包括PartDoc、AssemblyDoc、DrawingDoc、Feature、Annotation、FeatMgView等对象。
而AssemblyDoc对象又包括LightDialog、Component和Mate。
其中Component对象包括Body,Mate包括MateEnity,如图8-2所示。
图8-2装配对象
8.4程序指导
在对SolidWorks进行二次开发的过程中,SolidWorksAPI帮助文件会起到很大的作用。
为了正确理解帮助文件并合理使用SolidWorksAPI函数,必须首先弄明白SolidWorksAPI中的变量、常量以及单位等规定。
8.4.1SolidWorksAPI变量
变量类型定义如下:
BSTR:
VisualBasic中的字符串;
Long:
VisualBasic中的长整数;
Bool:
VisualBasic中的布尔值(True/False);
LPDISPATCH:
VisualBasic中的对象,在程序中要使用Set命令。
VariantofTypeSafeArray:
VisualBasic中的变量,类似于VisualBasic中的数组且包含不同的类型。
8.4.2SolidWorksAPI常量
SolidWorksAPI常量都定义在类库文件swconst.tlb中,这个文件包含了所有公开的API接口,以及它们包含的用于SolidWorks自动操作的可使用的成员。
在VisualBasic中,先引用该文件,然后就可以通过【对象浏览器】查看里面定义的常量。
如果它没有被正确加入,可浏览至它的安装位置:
<安装目录>\SolidWorks\swconst.tlb。
在VisualBasic中,选择菜单栏【工程】/【引用】命令,在列表中勾选【SolidWorks2009Constanttypelibrary】,如图8-3所示。
图8-3引用【SolidWorks2009Constanttypelibrary】
在API帮助文件中,有常量参数的详细说明,当某一个函数带有常量参数时,帮助文件都列举出所有可能取值。
在程序中,常常用相应的数字来代替所枚举的类型。
例如,在进行三维设计时经常旋转方位,这个方向参数就属于SolidWorks常量,SolidWorks为此定义了一个枚举变量swStandardViews_e来列举不同的类型。
为了查看每个对象,可选择【视图】/【对象浏览器】命令,结果如图8-4所示。
在编程时,根据不同设计意图,直接将1~9的数值作为输入,即可使程序正常运行。
图8-4【对象浏览器】
要使用SolidWorksAPI进行开发,必须在每个项目中包含SolidWorks2009Constanttypelibrary。
这个类型库包含了SolidWorksAPI方法使用到的常量定义。
传递给方法的是常量定义而不是它们所代表的实际数值,这能保证程序在使用新版本的SolidWorks时仍能像在老版本中一样正常运行。
实际使用的数值可能因为版本的不同而改变,但常量定义是相同的,不会改变,只会添加。
8.4.3单位
除非有特殊的要求,所有的SolidWorksAPI函数都使用米制单位。
具体地,SolidWorksAPI接受或返回值单位为米、弧度、千克、平方米或立方米。
8.5SolidWorksAPI常用对象的属性和用法
在SolidWorks创建的对象中,每个对象都有自己的属性和方法。
由于SolidWorksAPI函数功能在不断扩充和完善,读者可能遇到功能相同但格式相似或不同的函数。
但总体来说,新的API函数功能相对强大一些。
尽管老版本函数可以继续使用,但是使用新的API函数可以减少程序在新版本的SolidWorks上运行时出现问题的机会,提高代码的质量。
下面以VB为开发平台介绍其中一些常用的API函数,这些函数大都是在使用SolidWorks2009宏录制时默认使用的函数。
8.5.1创建SldWorks对象
在利用VB对SolidWorks进行二次开发时,首先要建立VB与SolidWorks的链接。
SldWorks对象提供了SolidWorksAPI中所有对象的直接或间接接口,通过该对象可以控制SolidWorks软件的其它操作。
在VB中利用CreateObject方法来获得SldWorks对象。
定义如下:
DimswAppAsObject
SetswApp=CreateObject("SldWorks.Application")
swApp.Visible=True
调入这个函数就可以打开SolidWorks的用户界面。
因此,对其他对象进行操作之前,先获得SolidWorks对象,建立VB与SolidWorks的链接,然后才可以调用SolidWorks的API函数。
8.5.2文件操作
1.新建SolidWorks文件
SldWorks:
:
NewDocument方法用来创建一个指定模板的新文件。
使用格式:
retval=SldWorks.NewDocument(TemplateName,PaperSize,Width,Height)
使用格式中各项含义如表8-1所示。
表8-1SldWorks:
:
NewDocument方法使用格式中各项含义
类型
参数
说明
输入
TemplateName
创建新文件的完整模板名(包含路径)
输入
Papersize
在图纸格式中定义的图纸尺寸
输入
Width
选用用户图纸格式时才使用纸宽这项
输入
Height
选用用户图纸格式时才使用纸高这项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 二次开发
![提示](https://static.bdocx.com/images/bang_tan.gif)