SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 716|回复: 3
打印 上一主题 下一主题

基于COM技术的SolidWorks二次开发

[复制链接]

21

主题

254

帖子

51

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
332
QQ
跳转到指定楼层
楼主
发表于 2013-3-31 14:24:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
 
0 引言

三维机械设计软件是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,是美国公司在总结和继承大型机械CAD软件的基础上,在Windows环境下实现的第一个机械三维CAD软件。为了方便用户进行二次开发提供了完整的、免费的二次开发工具,多达几百个的API接口。凡支持COM编程的开发工具均可直接调用这些API函数开发出用户自己的程序模块,提高了设计的效率与正确率。

1 二次开发技术

1.1 二次开发接口(API)

二次开发的优势在于它可以通过三维软件提供的API来调用三维软件本身的功能,以开发出使用者所需的特定功能的软件模块。COM(Component Object Model,组件对象模型)技术是 API的基础,是由Microsoft提出的组件标准,它定义了组件程序之间进行交互的标准。OLE(Object Linking and Embedding,对象链接与嵌套)技术是COM技术的一个应用,是一种能使不同应用程序的信息资源共享的技术,它能将文档和来自不同程序的各种类型的数据结合起来集成应用程序。支持COM技术标准的同时也支持OLE技术标准,SolidWorks作为组件软件把COM技术发挥得淋漓尽致。作为一个COM/OLE服务器,SolidWorks提供了大量的API/COM(OLE)对象以及这些方法所拥有的对象和属性。

1.2 SolidWorks的主要API接口

SolidWorks提供的二次开发接口(API)函数其实就是COM接口函数,其池函数可以调用这些函数与SolidWorks进行交互,从而实现特定的功能。SolidWorks API结构见图1。


图1 SolidWorks API结构

2 VC++6.0对SolidWorks二次开发实例

使用VC++6.0实现COM编程有ATL模板和MFC两种方式。ATL(ActiveX Template Library)是一套C++模板库,与MFC概念相似。使用ATL能够快速开发出高效的、简洁的代码,同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。使用ATL(C/C++)对象向导进行二次开发可在SolidWorks插件管理器中直接生成插件,并以菜单形式自动添加在新建或打开的视图中,以完成特定的功能。此种方法直接、方便、兼容性好,所以本文主要阐述在ATL下对SolidWorks的二次开发,其实现过程见图2。图3为基于ATL库的COM编程在SolidWorks上生成的一个螺栓零件图。


图2 SolidWorks二次开发实现过程


图3 生成螺栓三维图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞16945 拍砖拍砖1653
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

11

主题

230

帖子

24

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
275
QQ
沙发
发表于 2013-3-31 14:31:45 | 只看该作者
在SolidWor ks中加载插件,加载成功后调用菜单命令【二次开发菜单】|【自动生成草图】,点击确定,插件可根据输入的尺寸自动生成一个预定形状的草图,再调用【二次开发菜单】|【生成拉伸特征】,插件根据草图自动生成一个三维的螺栓零件图。
    用此种方法进行的二次开发,生成的程序以插件形式加载到SolidWorks内部,就象其本身所带的功能一样,所以需要对SolidWorks API有详细的了解。下面介绍程序中用到的几个重要函数的声明:
    添加顶级菜单下的子菜单项由AddMenultem2函数实现,该函数声明如下:
    部分草图拉伸程序:
    此程序在已有的零件文档中生成一个新的草图,其中包括一个正六边形和一个小圆,程序首先通过m_iSldWorks→get_IActiveDoc2(&.pModel)得到当前SolidWorks中的活动文档,之后调用接口函数retval=dlg.DoModal()弹出程序的参数输入对话框,然后再调用函数IModeIDoc2::InsertSketch进入草图绘制模式,再调用IModelDoc2::I CreateLine2和IModelDoc2::ICreateCircleByRadius2函数生成正六边形和圆,最后调用IModeIDoc2::get_FeatureManager得到管理特征生成的对象FeatureManager的接口指针,调用FeatureManager对象的FeatureExtrusion2函数生成如图3所示的螺栓三维图。
3 结束语
    本文阐述了利用ATL生成SolidWorks简单插件的步骤,通过VC++6.0对SolidWorks API的调用来实现零件的参数化设计。由于SolidWorks的对象、方法、属性和事件的内容很多,如ModelDoc对象就有477种方法,要完全掌握还要下很大一番功夫。本文只是介绍利用ATL对SolidWorks进行二次开发的方法,基于此种方法,查找帮助中有关的API函数,自己添加代码就能很快地编出程序。
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

9

主题

197

帖子

16

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
224
QQ
板凳
发表于 2013-3-31 14:37:59 | 只看该作者
顶。好贴
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

187

帖子

28

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
234
QQ
地板
发表于 2013-3-31 14:41:16 | 只看该作者
请问楼主,有没有10版本或者更新的版本的API对象模型图?我想知道DimX这个三维公差标注组件与之前的其他的对象之间的层次关系。我通过录制的办法,标注三维公差时的操作,录不进去。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-22 10:43 , Processed in 0.194906 second(s), 40 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表