我从事二次开发工作已经有一段时间,最近想把有关二次开发的经验与同道中人相互交流一下!
说起程序,我也接触不是很长时间,但自从接触以后,发现在如今国内的机械制造行业,有自主知识产权的软件确实不多,
国内最大的CAD软件公司CAXA公司,前些年推出的CAXA图版就是完全自主产权的,做的很出,非常适合中国国情,很多功能都严格遵照国标.后来,CAXA公司又推出了,实体设计软件,但其核心是购买国外Dassault公司,所以在自主三维软件在国内可以说还是一个空白,国外的软件做的确实不错,功能也非常强大,但是价格却是让国人难以接受的,只有少数大型企业能够买的起,但是买的安装点数也不是很多.比如:中国运载火箭第一,第二,第三,第五设计研究院,汽车行业的一汽,二汽,还有华为,海尔应用的都是Pro/E软件,Pro/E功能非常强大,尤其在模具方面,当然,在其他方面,比如曲面造型都有它本身的特,因为PTC公司是最先提出参数全关联的概念,所以该软件在八十年代一经推出,便引起了业界的轰动,而且,它的核心也是自成一派的.所以,PTC公司发展到现在已经二十年,它的Pro/E软件已经非常成熟了.说起CAD软件,法国Dassault公司
说起程序,我也接触不是很长时间,但自从接触以后,发现在如今国内的机械制造行业,有自主知识产权的软件确实不多,
国内最大的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软件的
现在,世界最流行的中档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是微软推出没几年的
由于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拷贝到X:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template下就可以了。这样,打开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;vs编程软件
如果想用VC6.0生成插件来开发solidworks的话,solidworks公司提供了一个SWizard.awx的向导程序,它能够生成 DLL框架,我们只需在该框架下开发即可,你只需把SWizard.awx拷贝到X:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template下就可以了。这样,打开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;vs编程软件
选择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.件,这便是我们加载的类型库。打开sldworks.h,会看到里面封装了很多slidworks的应用函数,我们先不说。加载完成之后,我们便开始编程了。我们要使生成的应用程序中的文件--新建命令来打开solidworks,所以选择View--ClassWizard选择MEssage Maps选项卡,在Class Name中选择CSolidworksView类,在Object IDs选择ID_.在message中选择Command,然后单击Add Function按钮,单击ok,在单击Edit Code;在CSolidworksView::On()
中键入以下程序:
ISldWorks m_pSldWorks;
m_pSldWorks.CreateDispatch("SldWorks.Application");
ASSERT(m_pSldWorks.m_lpDispatch);
m_pSldWorks.SetVisible(TRUE);
中键入以下程序:
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.件,而在Source Files并没有都添加任何文件,而且在CSldworks中包含的函数似乎也少了,这其实是VS2005将所有的函数进行封装隐藏起来,我们只需引用CSldWorks.h,就可以完全调用API函数。
我们同样还是选择新建的时候调用solidworks。选择菜单资源中的“新建”,点击右键--“添加事件处理程序”在类型表中选择CSolidworksView类,消息类型选择Command,点击“添加编辑”按钮。输入以下代码:
//Initialize COM
CoInitialize(NULL);
//Use ATL smart pointers
CComPtr<ISldWorks> swApp;
//Create an instance of SolidWorks
HRESULT hres = s(__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开发时会选用插件的形式,这样会提高程序的运行速度。
百度知道
二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功,一般来说都不会改变原有系统的内核。一般的来说,一些大公司如IBM开发了一个大型的软件系统平台,根据不同的客户的需要,一些其它的中小公司为客户根据需求在该平台上进行第二次有针对性的开发。是否提供相应的接口,有的软件公司只提供软件,但也有小公司连代码一起出售,如是后者,就更方便进行二次开发。比如售票系统,车站里面弄好了,提供几个储存过程给银行,银行就可以代理售票了,这也是一种,还有一种如我们利用delphi,C#等操作word等。
Solidworks二次开发通常有两种形式:一是独立应用程序(standalone application),用户程序作为一个独立的应用程序(*.exe),通过 API接口调用SolidWorks提供的服务,完成对SolidWorks的控制和操作;二是插件形式(AddIn application),用户程序作为一个插件(*.dll)集成到Solidworks中去。插件形式下,用户程序跟Solidworks程序运行在同一进程空
间,运行效率高,而且用户可以在SolidWorks中添加自己的菜单、工具栏、属性页等,使用户程序跟Solidworks程序浑然容为一体。由于插件程序跟SolidWorks运行在同一进程空间,插件程序的异常会导致solidworks程序的不稳定,因此在做开发时也要更加小心。相对应的独立应用程序跟solidworks程序运行在不同的进程空间,客户程序的异常不会影响solidworks,但由于涉及到跨进程调用,它的效率会相对比较低,而且这种方式下用户不可以在solidworks中添加自己的菜单、工具栏和属性页等。
任何支持COM和OLE的编程语言都可以成为S0lidWorks的开发工具,如VB、VBA、C、VC++等。开发者可以根据自身的条件、工具的特点,选择一种适合的开发工具。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论