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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 918|回复: 17
打印 上一主题 下一主题

SolidWorks二次开发的文章(转载)

[复制链接]

86

主题

292

帖子

187

金币

堂主

Rank: 4

积分
506
QQ
跳转到指定楼层
楼主
发表于 2011-11-15 09:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

   经典图书
  
我从事二次开发工作已经有一段时间,最近想把有关二次开发的经验与同道中人相互交流一下!  说起程序,我也接触不是很长时间,但自从接触以后,发现在如今国内的机械制造行业,有自主知识产权的软件确实不多,
  国内最大的CAD软件公司CAXA公司,前些年推出的CAXA图版就是完全自主产权的,做的很出色,非常适合中国国情,很多功能都严格遵照国标.后来,CAXA公司又推出了,实体设计软件,但其核心是购买国外Dassault公司,所以在自主三维软件在国内可以说还是一个空白,国外的软件做的确实不错,功能也非常强大,但是价格却是让国人难以接受的,只有少数大型企业能够买的起,但是买的安装点数也不是很多.比如:中国运载火箭第一,第二,第三,第五设计研究院,汽车行业的一汽,二汽,还有华为,海尔应用的都是Pro/E软件,Pro/E功能非常强大,尤其在模具方面,当然,在其他方面,比如曲面造型都有它本身的特色,因为PTC公司是最先提出参数全关联的概念,所以该软件在八十年代一经推出,便引起了业界的轰动,而且,它的核心也是自成一派的.所以,PTC公司发展到现在已经二十年,它的Pro/E软件已经非常成熟了.说起CAD软件,法国Dassault公司的Catia(Computer Aided Tri-Dimensional Interface Application )应当是首屈一指了,该软件在曲面方面的造诣是非常深的.法国 Dassault Aviation 是世界著名的航空航天企业,该公司,在70年代,Dassault只是想解决飞机曲面的相关设计问题,就成为了Catia的第一个用户,随后Catia才应运而生,如今,经过几十年的发展,Catia已经是功能强大的CAD/CAE/CAM 软件.后来,PTC公司提出参数化的概念,Dassault公司才将参数化引入了Catia软件,并于94年推出CatiaV5产品,可以说Pro/E比Catia晚20年,但却比Catia先进20年,其参数化这种理念,在如今看来,是很实用很成功的.
  现在,世界最流行的中档CAD软件莫过于SolidWorks了,其实SolidWorks公司的现任总裁原来任职于PTC公司,后来,自己独立组建了SolidWorks公司,上个世纪九十年代,一些CAD巨头沉溺于以往的成功,忽视了中端三维CAD的市场,这就使得SolidWorks获得了快速的增长。SolidWorks公司在全球有500家解决方案合作伙伴,包括50家完全数据集成和数据全相关的合作伙伴,200多家分销商,在全球超过60万用户。2003年,soliworks的收入是1.6亿美元,SolidWorks软件带来的收入是4亿美元包括合作伙伴的增值服务和解决方案。2007年,继SolidWorks2007之后又推出了 soliworks2008(第16个版本),这使得soliworks软件的功能更加强大。
  由于SolidWorks是完全在windows下开发出来的,所以与windows是无缝结合的,windows下的许多函数在SolidWorks中都能使用。我们对soliworks进行二次开发采用的是VC6.0和VS2005,通常用VC开发SolidWorks是生成动态链接库(DLL)文件,这样,便会以插件的形式,被soliworks调用,并且在soliworks中生成菜单。我们就像使用soliworks自己的模块一样使用该插件了。但是,不是仅有这一种方法,许多开发者应用VB,Delphi开发时,生成.exe文件来调用soliworks。但是,应用VC来生成.exe文件来调用SolidWorks却不是很多,因为VC支持OLE,支持COM,而SolidWorks API就提供了OLE和COM两种函数,这为我们开发soliworks提供了很大帮助。当然,VC入门很难,更何况,如果应用MFC,微软封装的更复杂,我们用起来就更摸不着头脑了,对于,学工科机械的人来说,刚从事制造业信息化的,学开发软件没有一年的苦读是不会入门的。所以,还要努力啊!
  VC6.0是微软98年推出的,很实用的一个C++编译器,操作起来也很简单,虽然推出的早,但是国内仍然有很多人在用,尽管其中的bug有很多。而VS2005是微软推出没几年的产品了,功能那不用说了,自然很强大了,其人性化的界面,操作的便利性都非常棒。
  如果想用VC6.0生成插件来开发SolidWorks的话,SolidWorks公司提供了一个SWizard.awx的向导程序,它能够生成 DLL框架,我们只需在该框架下开发即可,你只需把SWizard.awx拷贝到Xrogram FilesMicrosoft Visual StudioCommonMSDev98Template下就可以了。这样,打开VC程序,新建project的时候,在project选项卡目录中就能出现SolidWorks-Add-in AppWizard选项,只需选择它,新建工程名,选择保存目录,然后一直下一步便可。
  以上仅仅是vc6.0中创建DLL的步骤。如果你想应用VC6.0创建.exe文件来调用SolidWorks,那就不这么简单了,这需要OLE技术,比如,我们要在VC6.0下创建了单文档的EXE应用程序:
  选择MEC AppWizard(exe),然后输入文件名(Project name): SolidWorks,选择目录:D:,单击OK;
  选择single document;点击next,默认选择。然后再点击next,在最下面,将Automation选上(一定要选)。
  点击next;一直到最后,点击Finish。
  到此,我们生成了一个具有自动化功能的单文档应用程序。
  接下来,我们要加载soliworks类型库:选择VIEW--ClassWizard--Automation选项卡--点击Add Class按钮,
  选择From a type Library,然后我们寻找SolidWorks安装目录,找到SolidWorks文件夹,在该文件夹里找到sldworks.tlb文件,选则打开。这时出现Confirm Class(确定类)对话框,选择第一个:ISldWorks,然后,点击ok,
  再点击ok;这时,你会发现,在SourceFiles里多了sldworks.cpp文件,在HeaderFiles里多了sldworks.h文件,这便是我们加载的类型库。打开sldworks.h,会看到里面封装了很多slidworks的应用函数,我们先不说。加载完成之后,我们便开始编程了。我们要使生成的应用程序中的文件--新建命令来打开SolidWorks,所以选择View--ClassWizard选择MEssage Maps选项卡,在Class Name中选择CSolidWorksView类,在Object IDs选择ID_FILE_NEW.在message中选择Command,然后单击Add Function按钮,单击ok,在单击Edit Code;在CSolidWorksView::OnFileNew()
  中键入以下程序:
  ISldWorks m_pSldWorks;
  m_pSldWorks.CreateDispatch("SldWorks.Application");
  ASSERT(m_pSldWorks.m_lpDispatch);
  m_pSldWorks.SetVisible(TRUE);
  当然,我们还要包含sldwoks.h,即#include "sldworks.h";
  然后编译程序。
  单文档程序运行,选择文件--新建,接着,SolidWorks程序便启动起来了。
  m_pSldWorks.SetVisible(TRUE);这句的用途是使SolidWorks显式启动,当然m_pSldWorks.SetVisible(FALSE);便是隐藏调用了。
  以上仅仅是COM技术的一个小小的应用而已,以后还会经常接触的。
  接下来,我想说说,在VS2005种如何应用智能指针来调用SolidWorks;
  启动Visual Studio 2005;创建项目,选择MFC-MFC应用程序,下一步--选择单文档,一直下一步,直到高级功能界面,选择自动化。下一步--完成。这样生成了单文档框架。我们还是加载SolidWorks类型库。选择“项目”--“添加类”--“TypeLib中的MFC类”双击进入.
选择"文件"点击"位置"编辑框后面的按钮.再找到SolidWorks安装目录:SolidWorks;同样加载sldworks.tlb文件,在接口列表框中选择"ISldWorks"单击"添加"生成类CSldWorks。同样在在HeaderFiles里多了CSldWorks.h文件,而在Source Files并没有都添加任何文件,而且在CSldworks中包含的函数似乎也少了,这其实是VS2005将所有的函数进行封装隐藏起来,我们只需引用CSldWorks.h,就可以完全调用API函数。
  我们同样还是选择新建的时候调用SolidWorks。选择菜单资源中的“新建”,点击右键--“添加事件处理程序”在类型表中选择CSolidWorksView类,消息类型选择Command,点击“添加编辑”按钮。输入以下代码:
  //Initialize COM
  CoInitialize(NULL);
  //Use ATL smart pointers
  CComPtr swApp;
  //Create an instance of SolidWorks
  HRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);
  VARIANT_BOOL visibility;
  swApp->get_Visible(&visibility);
  swApp->put_Visible( TRUE);
  别忘了加入头文件,#include "CSldWorks.h"
  编译运行,在程序中选择“文件”--“新建”,这样就启动了SolidWorks。
以上,是应用VC6.0和VS2005,运用OLE和COM技术生成单文档程序,并实现了soliworks的启动,这是开发的第一步,因为我们只要有了SolidWorks的这个对象,才能进一步的控制它的模型草图工程图等等。但是,单文档程序与soliworks之间的通讯会有一定的瓶颈,传输速度会有些延迟,所以开发者通常应用VC开发时会选用插件的形式,这样会提高程序的运行速度。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞2021 拍砖拍砖693
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

12

主题

236

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
281
QQ
沙发
发表于 2011-11-15 09:36:40 | 只看该作者
分析得很到位
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

9

主题

202

帖子

34

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
252
QQ
板凳
发表于 2011-11-15 09:38:00 | 只看该作者

   经典图书
我虽然不全懂,但感觉说的很好
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

235

帖子

22

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
274
QQ
地板
发表于 2011-11-15 09:38:33 | 只看该作者
没看完不好意思
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

216

帖子

27

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
251
QQ
5#
发表于 2011-11-15 09:43:44 | 只看该作者

   经典案例图书
楼主大神,顶一个,我现在正在学VC++,自己想给SolidWorks做个简单的2次开发,希望哪天有什么问题的可以向您请教!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

237

帖子

17

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
279
QQ
6#
发表于 2011-11-15 09:43:53 | 只看该作者
我一个高中的毕业生,还是文科的,自学SolidWorks也想学soildworks 的二次开发,自己都觉的有点搞笑,不知道上楼是什么学历
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

14

主题

253

帖子

41

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
308
QQ
7#
发表于 2011-11-15 09:48:04 | 只看该作者

   经典案例图书
楼上的:学历不限的,不过最好要了解机械设计和软件开发基础。其它的都可以慢慢培养。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

11

主题

211

帖子

26

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
258
QQ
8#
发表于 2011-11-15 09:49:50 | 只看该作者
楼主大侠,我是学计算机的,能看懂你所讲的,但是对sw操作不是很熟,设计部门要我来帮忙搞个二次开发,不知道怎么入手,还望指点下,先谢谢!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

209

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
238
9#
发表于 2011-11-15 09:53:32 | 只看该作者
太有用了,收了!!!!感谢
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

14

主题

209

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
262
QQ
10#
发表于 2011-11-15 09:54:03 | 只看该作者

   经典图书
再来看看
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

239

帖子

18

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
271
QQ
11#
发表于 2011-11-15 09:54:38 | 只看该作者
楼主太高,我实在看不懂.
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

237

帖子

25

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
292
QQ
12#
发表于 2011-11-15 09:55:00 | 只看该作者
分析的好透彻啊!我是学机械的,对计算机有一点了解,但二次开发还是刚入门,以后有问题还得麻烦楼主了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

95

主题

335

帖子

379

金币

堂主

Rank: 4

积分
750
13#
发表于 2011-11-15 09:55:12 | 只看该作者
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

209

帖子

19

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
257
QQ
14#
发表于 2011-11-15 09:58:23 | 只看该作者
很不错
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

11

主题

217

帖子

25

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
249
QQ
15#
发表于 2011-11-15 09:59:07 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

学习~~~~~~~~~~~~~
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

252

帖子

34

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
293
QQ
16#
发表于 2011-11-15 10:03:15 | 只看该作者

   经典案例图书
看的半懂 !
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

65

主题

270

帖子

122

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
392
17#
发表于 2011-11-15 10:03:28 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

不懂!路过!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

73

主题

287

帖子

142

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
428
18#
发表于 2011-11-15 10:03:42 | 只看该作者

   经典案例图书
要是有VB教程就好了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2024-9-21 00:48 , Processed in 0.230994 second(s), 26 queries , Memcache On.

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

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

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