![solidworks 二次开发论文_第1页](http://file4.renrendoc.com/view/85529329b4504fb16023d3b153c41471/85529329b4504fb16023d3b153c414711.gif)
![solidworks 二次开发论文_第2页](http://file4.renrendoc.com/view/85529329b4504fb16023d3b153c41471/85529329b4504fb16023d3b153c414712.gif)
![solidworks 二次开发论文_第3页](http://file4.renrendoc.com/view/85529329b4504fb16023d3b153c41471/85529329b4504fb16023d3b153c414713.gif)
![solidworks 二次开发论文_第4页](http://file4.renrendoc.com/view/85529329b4504fb16023d3b153c41471/85529329b4504fb16023d3b153c414714.gif)
![solidworks 二次开发论文_第5页](http://file4.renrendoc.com/view/85529329b4504fb16023d3b153c41471/85529329b4504fb16023d3b153c414715.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- -、z1前言功能强大、易学易用和技术创新是SolidWorks的三大特点,使得SolidWorks成为领先的、主流的三维CAD解决方案。SolidWorks能够提供不同的设计方案、减少设计过程中的错误以及提高产品质量oSolidWorks不仅提供如此强大的功能,同时对每个工程师和设计者来说,操作简单方便易学易用。同时SolidWorks还提供了功能强大的API接口程序模块,使得用户可以根据自身的条件和需求编写加挂与该软件环境下的应用程序。本次设计设计的题目是SolidWorks的APItoolbox二次开发。主要任务为在SolidWorks软件下加挂菜单,添加用户的应用软件。零件的管理一直
2、是比较耗时又容易出错的问题。特别是一套复杂零部件以及装配体的管理更是需要有一个专门的管理软件。本次设计的结果使得管理更加方便和实用,极大的提高了工作效率。在设计的过程中,王彪老师给了我们许多的指导性建议,并为我们创造了优越的学习工作环境。同时还有刘中柱老师在设计和学习过程中也给了我极大的帮助。仅此,对帮助和支持我得老师和同学表示深深的感谢。由于本人水平有限,经验不多,论文中肯定会有不少的缺点或错误,请老师和同学批评指正。1.1设计目的和意义设计的目的是实现拉车闸门系统的零部件以及装配体的统一界面管理。利用SolidWorks强大的应用程序接口,以VisualC+6.0作为开发工具。软件的实现极
3、大的提高了零件的管理。意义,对SolidWorks的工作流程以及基本原理有了更深的了解。对利用VC的FMC类库的运用有了基本的认识。面向对象的编程更能方便程序编制者,特别是程序的修改上。在结构上更能体现程序的流程。国内国际状况及进展SolidWorks公司于2002年9月18日宣布推出三维机械CAD软件的最新版本SolidWorks2003,进一步帮助机械设计工程师实现协同设计,将新产品快速推向市场。SolidWorks2003新版本中有几百项新功能的提高:在新版本中增加了结构分析功能,协同设计功能,网上下载三维产品目录功能,以及其他新的建模功能。这些新的功能使得SolidWorks设计工程师
4、进一步提高设计效率,SolidWorks的用户在市场上将更具有竞争力。SolidWorks2003版新增加的结构分析功能能够帮助设计工程师设计的正确性,减少了生产过程中产生的错误带来的损失。SolidWorks2003新版本能够读入的格式更加灵活,包括AutoCAD和CADKEY的各种格式,这种功能能够在三维设计时包容第三方软件的设计信息,用户能够快速完成设计。SolidWorks2003是世界上第一个能实现实时运动仿真的三维CAD软件,例如检查装配环境中的齿轮啮合等,设计师可以在制造之前发现设计中的缺陷和错误。“SolidWorks2003能支持多种文件格式,对我们设计师来讲是很方便的,可以
5、很容易地将不同的文件转化为SolidWorks的数据模型,完成设计任务。”一位刚用过SolidWorks2003的用户讲到。“我们可以很方便地将逆向工程产生的数据文件直接拖拉到SolidWorks的环境中,而不必象以前一样手工地进行文件的转换。这种功能不仅给我们设计师节省了大量的时间和工作量,同时还可以继承原来老设计中优秀的东西。总之,SolidWorks2003不仅从功能本身或从数据转化来将都是最优秀的。”论文各部分主要内容SolidWorks作为机械类的三维CAD软件,对于具体的用户可能有不同的应用。客户自己建立相关的软件使得SolidWorks能更好的成为开发管理的优秀应用软件。论文的第
6、二章介绍了本次设计的相关知识。并对SolidWorks的使用作了简明的介绍。第三章阐述了设计的流程及结构,对系统设计作了具体的分析。第四章说明了如何建立数据库的过程以及相关的知识。并对数据库进行了相应说明。第五章对本次设计的具体实现以及程序的编制作了详细的说明。第六章是对本次设计的软件的打包,制作安装程序。第七章对软件的演示进行了示例。第八章是对这次设计的总结。最后是谢词参考文献以及附录。2设计开发相关知识SolidWorks曲面设计通过带控制线的扫描、放样、填充以及拖动可控制的相切操作产生复杂的曲面。可以直观地对曲面进行修剪、延伸、倒角和缝合等曲面的操作。钣金设计SolidWorks提供了顶
7、尖的、全相关的钣金设计能力。可以直接使用各种类型的法兰、薄片等特征,正交切除、角处理以及边线切口等钣金操作变得非常容易。用户化SolidWorks的API为用户提供了自由的、开放的、功能完整的开发工具。开发工具包括MicrosoftVisualBasicforApplications(VBA)、VisualC+,以及其他支持OLE的开发程序。帮助文件SolidWorks2001配有一套强大的、基于HTML的帮助文件系统。包括超级文本链接、动画示教、在线教程、以及设计向导和术语。数据转换SolidWorks提供了当今市场上几乎所有CAD软件的输入/输出格式转换TO器。IGESIPT(AutoDe
8、skInventor)STEPDWGSAT(ACIS)DXFVRMLCGR(Catiagraphic)STLHCG(Highlycompressed)ParasolidgraphicsPro/ENGINEERViewpointUnigraphicsRealityWavePAR(SolidEdge)TIFFVDA-FSJPGMechanicalDesktopSolidWorks2001plusAPISolidWorks提供API作为二次开发工具,其中列举了用户可以调用的C语言函数名及其技术指标格式。SolidWorksAPI是SolidWorks的OLE应用程序开发接口,用户可以利用它和支持OL
9、E编程的开发工具,如VB、VBA(Excel,Access)、C、VC+等对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks功能模块。本次设计采用VC+作为开发工具。SolidWorks提供三种开发方式:可执行文件*.exe、正规的.DLLs有两种实现方式:dynamicallylinked或者staticallylinked,一般都使用dynamicallylinked。因为静态连接到MFC代码库,你的.DLL包括它自己的所有的所需的MFC代码,那么它将非常庞大。另一种是MFC扩展.DLL,一个扩展.DLL是动态连接到MFC的代码库的.DLL的.客户程序也必须
10、动态的连接到MFC的代码库。MFC扩展.DLLs非常小.你可以建立一个导出一些函数或者类的大约10-15KB的。为了充分利用VC的资源,设计采用了最后一种即MFC扩展.DLL。VisualC+6.0理解VC工程VisualC+作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。扩展名为dsw的文件类型,这种类型的文件在VC中是级别最高的,称为Workspace文件。在VC中,应用程序是以Project的形式存在的,Project文件以.dsp扩展名,在Workspace文件中可以包含多个Project,由Workspace文件对它们进行统一的协调和管
11、理。与dsw类型的Workspace文件相配合的一个重要的文件类型是以opt为扩展名的文件,这个文件中包含的是在Workspace文件中要用到的本地计算机的有关配置信息,所以这个文件不能在不同的计算机上共享,当我们打开一个Workspace文件时,如果系统找不到需要的opt类型文件,就会自动地创建一个与之配合的包含本地计算机信息的opt文件。以clw为扩展名的文件是用来存放应用程序中用到的类和资源的信息的,这些信息是VC中的ClassWizard工具管理和使用类的信息来源在应用程序中经常要使用一些位图、菜单之类的资源,VC中以rc为扩展名的文件称为资源文件,其中包含了应用程序中用到的所有的wi
12、ndows资源。对于以ico,bmp等为扩展名的文件是具体的资源,产生这种资源的途径很多。使用rc资源文件的目的就是为了对程序中用到的大量的资源进行统一的管理。近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对象技术中最重要的就是“对象”的概念,把现实世界中的气球、自行车等客观实体抽象成程序中的“对象”。这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能。程
13、序员大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。MFC编程特点MFC的英文全称是MicrosoftFoundationClasses,即微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,在进行程序设计的时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法,从类库中的已有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。正是由于MFC编程方法充分
14、利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。下面介绍在WINDOWS程序设计中最常用的一些消息:窗口消息:WM_CREATE,WM_DESTROY,WM_CLOSE键盘消息:WM_CHAR,WM_KEYDOWN,WM_KEYUP鼠标消息:WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBCLICK,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_R
15、BUTTONDBCLICK3设计流程及结构3.1设计流程设计结构本设计的结构主要由以下部分组成:读取数据库,零件的选择,零件的预览,零件的打开。读取数据库部分是运用VC的MFC中的DAO进行编程的。利用其指针,读取数据库里面的数据,运用SQL语句进行查询等操作。零件的预览是先读取数据库里的有关零件的位置。然后将零件在预览框中显示。以利于选择的直观性,且不易出错。零件的打开是为了实现对所选零件的一些修改,零件的尺寸都是相关联的,修改简便。建立数据库4.1建立表建立表格采用了微软的Access2000为开发工具。对本次设计的具体要求的分析。建立了三个相关联的表。分别为sys_type,parts_
16、1,part三个表。由于在VC+中利用DAO读取Access数据库的格式必须是Access97文件。所以在建完表之后必须转换数据格式。设计的表如下:systype系统型号ID型号11型号22型号33此表为第一级表,下面的表将和此表实现相关联。(sys_type)parts1装配体NO1ID气压控制系统1.11小车道轨一1.21拉车汽缸装置一1.31闸门系统1.41活塞杆托架一1.51载模小车一1.61垫板一1.71气压控制系统二2.12小车道轨二2.22拉车汽缸装置二2.32闸门系统二2.42活塞杆托架二2.52载模小车二2.62垫板二2.72气压控制系统三3.13小车道轨三3.23拉车汽缸装
17、置三3.33parts1装配体NO1ID闸门系统三3.43活塞杆托架三3.53载模小车三3.63垫板三3.73此表是对系统的进一步细分。(parts)part零件名称零件编号N01零件位置T形槽螺栓M301.3拉车汽缸装置T形槽螺栓M30.sldprt弹簧垫圈M121.3拉车汽缸装置弹簧垫圈M12.sldprt弹簧垫圈M161.3拉车汽缸装置弹簧垫圈M16.sldprt垫圈1.3拉车汽缸装置垫圈.sldprt调整垫板1.3拉车汽缸装置调整垫板.sldprt感应开关支座1.3拉车汽缸装置感应开关支座.sldprt感应开关撞块1.3拉车汽缸装置感应开关撞块.sldprt护板1.3拉车汽缸装置护板.
18、sldprt连接杆1.3拉车汽缸装置连接杆.sldprt六角螺母1.3拉车汽缸装置六角螺母.sldprt六角螺母M121.3拉车汽缸装置八角螺母M12.sldprt六角螺母Ml1.3拉车汽缸装置八角螺母M16.sldprt六角螺母M301.3拉车汽缸装置六角螺母M30.sldprt六角螺栓M101.3拉车汽缸装置六角螺栓M10.sldprt六角螺栓M121.3拉车汽缸装置六角螺栓M12.sldprt六角螺栓M161.3拉车汽缸装置六角螺栓M16.sldprt平垫圈M101.3拉车汽缸装置平垫圈M10.sldprt平垫圈M121.3拉车汽缸装置平垫圈M12.sldprt平垫圈M161.3拉车汽缸
19、装置平垫圈M16.sldprt平垫圈M301.3拉车汽缸装置平垫圈M30.sldprt上支架|1.3拉车汽缸装置上支架.sldprtpart零件名称零件编号NO1零件位置下支架1.3拉车汽缸装置下支架.sldprt圆螺母M271.3拉车汽缸装置圆螺母M27.sldprt圆螺母M301.3拉车汽缸装置圆螺母M30.sldprt支撑板1.3拉车汽缸装置支撑板.sldprt拉车汽缸|1.3拉车汽缸装置拉车汽缸.sldasm此表是保存零件的具体信息。软件最后根据此表中的零件位置打开相应的零件。注:(part)本表的记录较多,在此只列出部分作为示例。4.2表之间的关联在设计表的过程中,在各个表中都添加一
20、个相同的字段,将此字段作为表之间相联系的桥梁。例如在表sys_type中选择系统型号为型号1,就可得到其ID字段的值为1。其后根据ID=1,在表parts中得到符合ID=1的多个记录,选择其中的一个记录,假设为ID=1,N0_1=1.3,装配体字段值为拉车汽缸装置一,则可以根据N0_1=1.3,在part表中得到一组记录。实现了从第一个表开始各个表之间的关联。设计的具体实现5.1设计的背景条件在设计中采用直接使用SolidWorks自带的接口程序。在安装路径下的Samplescomuserdlli386,可以直接使用其基本的工程文件。在其中添加自己的应用代码。编译链接后就可以得到一个comus
21、erdll.dll的动态链接文件。在SolidWorks中运用Add-in功能将编译的文件打开就可以和SolidWorks实现完美的结合。5.2在SolidWorks软件下添加菜单及子菜单在SolidWorks的模板程序中,类userApplications中定义了添加菜单的函数再在其中的函数_addMenus(LPFRAMEpFrame)中添加代码实现添加用户自定义的菜单以及相应子菜单。实现的代码如下:VARIANT_BOOLbres;HRESULThres=pFrame-AddMenu(auT(闸门及拉车系统(&J),6,&bres);hres=pFrame-AddMenuItem(auT
22、(”闸门及拉车系统(&J),auT(零件管理&1),-1,auT(USERDLLpart_manage,这是零件管理。),&bres);hres=pFrame-AddMenuItem(auT(闸门及拉车系统(&J),auT(帮助&3),-1,auT(USERDLLmyhelp帮助),&bres);闸门及拉车系统是加挂与SolidWorks顶部的菜单。零件管理、数据管理、帮助是其下面的子菜单。因为编译的最后文件是userdll.dll,所以在定义菜单函数时是在userdll.cpp下实现的。考虑到资源的问题,还必须在userdll.def中说明菜单函数的序号。实现的方法如下:myhelp11pa
23、rt_manage12这样程序的运行才不会和SolidWorks的内部资源相冲突。5.3添加菜单函数在userdll.cpp中添加菜单响应函数。注意在VC中如果函数不返回任何值,则函数必须定义成void类型。零件管理菜单的响应函数部分如下:voidpart_manage()HINSTANCEMyResourceHandle=NULL;MyResourceHandle=LoadLibrary(_T(userdll.dll);/SavethecurrentresourcehandleHINSTANCESolidWorksResource=AfxGetResourceHandle();/Switch
24、totheApplicationresourcesAfxSetResourceHandle(MyResourceHandle);CNewDlgdlg;(略)AfxSetResourceHandle(SolidWorksResource);菜单函数实现的是打开一个对话框资源。其中关系到SolidWorks资源管理问题,必须将自己定义的对话框的句柄设为当前的SolidWorks的资源句柄。具体的有关问题可以查看SolidWorksAPI帮助里的ProgrammersGuide下GettingStarted下CC中的ManagingyourApplicationResources-C/C+,里面有详
25、细的使用方法。帮助菜单的响应函数如下:voidAbout()HINSTANCEMyResourceHandle=NULL;MyResourceHandle=LoadLibrary(_T(userdll.dll);HINSTANCESolidWorksResource=AfxGetResourceHandle();AfxSetResourceHandle(MyResourceHandle);CAboutAboutdlg;Aboutdlg.DoModal();/restorethesolidworkssresourcehandleAfxSetResourceHandle(SolidWorksRes
26、ource);注意在对话框头文件中添加#include“resource.h”。否则编译时会产生找不到对话框的ID号的错误。关于的界面在SolidWorks中实现如下:5.1关于界面图中显示的图片必须是位图。在制作时要把图的格式转化为*.bmp格式。添加应用程序对话框对话框可以在VC资源里直接创建,再利用对话框的工具创建需要的各种控件,根据实际情况,对话框以及控件的安排如下图所示:5.2对话框样式对话框的创建后,在运用时要新建一个类来控制对话框的各种操作。在本设计中定义为CNewDlg类,在对话框中的各个控件的定义都在该类的函数中实现。5.5实现数据库连接设计的实现采用了MFC类库的基类CDa
27、oDatabase。运用DAO实现与数据库的链接。设计的具体步骤如下:首先在stdafx.h中添加头文件#includevafxdao.h,其次在对话框类中定义一个数据库指针变量CDaoDatabasem_db;将此变量放在protected型中。然后在对话框的.cpp文件中利用m_db将数据库打开,此变量是一个指针类型。要读取数据库中的数据必须再定义一个记录集变量CDaoRecordsetrs(&m_db);根据对本次系统的具体分析。其实现的源程序如下:m_db.Open(_T(D:SolidWorkssamplescomuserdllpart.mdb);CDaoRecordsetrs(&m
28、_db);CStringstrSql=_T(SELECT*FROMsys_type);rs.Open(dbOpenDynaset,strSql);COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(系统型号”),var);str=CCrack:strVARIANT(var);if(str=_T()|str=_T(NULL)continue;m_SYSTYPE.AddString(str);rs.MoveNext();returnTRUE;此段代码实现了将表sys_type中的系统型号字段的内容读入系统型号的组合框控件中,
29、作为对话框程序的初始化。数据库的连接在三个组合框控件都使用到。每一个的原理都基本相似,下面介绍一下第一个组合框的具体实现。说明:第一个组合框的关联变量是m_SYSTYPE。voidCNewDlg:OnSelchangeSystype()UpdateData();intnSel=m_SYSTYPE.GetCurSel();/得到第一个组合框的焦点CStringstr;if(nSel=LB_ERR)return;m_SYSTYPE.GetLBText(nSel,str);/得到第一个组合框的内容/AfxMessageBox(str);if(str.CompareNoCase(_T(型号l)=0)=
30、0isstrisequalwith型号1m_FSTPARTS.ResetContent();CDaoRecordsetrs(&m_db);/定义记录集/得到parts_1.ID=T的记录集CStringstrSql=_T(SELECT*FROMparts_1WHEREparts_1.ID=1);rs.Open(dbOpenDynaset,strSql);得到数据库的记录指针COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(装配体”),var);str=CCrack:strVARIANT(var);if(str=_T()
31、llstr=_T(NULL)continue;m_FSTPARTS.AddString(str);rs.MoveNext();/将得到的记录集添加到第二个组合框控件中UpdateData(FALSE);(略)本段代码是运用了DAO的数据库编程。利用控件实现对数据库的相应操作。实现各级组合框的关联组合框之间的关联是利用了选择改变消息。即CBN_SELCHANGE消息。各组合框都建立一个CBN_SELCHANGE的消息。例如:ON_CBN_SELCHANGE(IDC_FSTPARTS,OnSelchangeFstparts)ON_CBN_SELCHANGE(IDC_PART,OnSelchange
32、Part)IDC_FSTPARTS是第二个组合框的名称,IDC_PART是第三个组合框的名称。这两个组合框各有一个消息OnSelchangeFstparts,OnSelchangePart。通过在第二个框中添加代码,可以实现第二个组合框状态的改变影响第三个组合框的改变。例如在OnSelchangeFstparts消息的函数中的部分代码如下:voidCNewDlg:OnSelchangeFstparts()UpdateData();if(str.CompareNoCase(_T(气压控制系统一)=0)m_PART.ResetContent();CDaoRecordsetrs(&m_db);CSt
33、ringstrSql=_T(SELECT*FROMpartWHEREpart.NO_1=1.1);rs.Open(dbOpenDynaset,strSql);COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(零件名称”),var);str=CCrack:strVARIANT(var);if(str=_T()llstr=_T(NULL)rs.MoveNext();continue;m_PART.AddString(str);rs.MoveNext();UpdateData(FALSE);代码中的倒数第三行实现了对第三个组
34、合框控件的添加文本。实现零部件及装配体的预览零件的预览部分最好是添加消息WM_PAINT,件预览部分的代码添加在OnPaint()函数中,这样避免了预览的暂时性。假如放在其他函数中实现。那么实现预览的效果将不会很好。例如打开了一个零件的预览,切换了页面之后就不能有预览效果。将实现代码放在OnPaint()函数中能有效地避免类似情况的发生。预览效果图如下:胡开始iih越回s亠incj论文型目录-Microsof.|Suserdll-Microso.|JSolidWorks2001P1.艮翌国|危/fife13:20SWSolidWorks2001Fins-Parti文件(I編辑视團插入Q工具窗口
35、地)闸门及拉车系纭帮助-IfflX|、遍pasNsuX系统型号W1子装配体1拉车汽缸装置一3零件13预览效果经切换页面后效果一样实现代码(部分):VARIANT_BOOLbOK;HRESULTres;long*pWnd=(long*)(m_PREVIEW.m_hWnd);res=UserApp-getSWApp()-PreviewDoc(pWnd,(unsignedshort)strPreviewFile.GetBuffer(strPreviewFile.GetLength(),&bOK);打开所选的零部件或装配体打开所选零部件的方法是产生点击ok时的响应消息。并根据所选的是零件还是装配体进行
36、判断,而后依相应的格式打开。程序的实现如下:if(dlg.DoModal()=IDOK)AfxSetResourceHandle(SolidWorksResource);/SwitchtoSolidworkshandleCStringm_strFile=dlg.strPreviewFile;longtype;Cstringstrtemp;strtemp=m_strFile.Right(3);strtemp.MakeLower();if(strtemp=”prt”)type=swDocPART;elseif(strtemp=”asm”)type=swDocASSEMBLY;elseif(strt
37、emp=”drw”)type=swDocDRAWING;elsetype=swDocNONE;_bstr_tbsFile(dlg.strPreviewFile);/includetouse_bstr_tHRESULTres;LPMODELDOCmod=NULL;longP=0;res=UserApp-getSWApp()-IopenDoc2(bsFile,type,FALSE,FALSE,TRUE,&P,(LPMODELDOC*)&mod);添加该段代码需添加头文件#includevcomdef.h,打开的格式是最后一条语句,其具体格式可以参考SolidWorksAPI帮助的opendoc2。
38、5.9编译链接为dll文件考虑到界面因素,现将对话框的背景色加以改变。利用ON_WM_CTLCOLOR()消息传递。首先,给对话基类增加一人成员变量Cbursh:Cbrushbrush;其次,在类的构造函数中将刷子初始化为所需要的背景颜色。Brush.CreateSolidBrush(RGB(128,128,255),最后,使用ClassWizard处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。如下:return(HBRUSH)brush.GetSafeHandle();returnCdialog:OnCtlColor(pDC,pWnd,nCtlColor);这样运行时看
39、到就是如预览效果图中的颜色。最后用VC+6.0进行编译链接得到一个动态链接文件userdll.dll,以及userdll.lib。制作安装程序使用InstallMaster8.1作为开发的工具。软件的使用界面如下本软件使用简便,在此不作详细说明。6.1制作安装程序安装程序实现了将本软件所用到的所有文件都压缩在一个安装程序里。在运行安装程序时,请按默认的路径安装。系统演示首先用SolidWorks的Addin打开生成的uerdll.dll文件选择SolidWorks的文件菜单,点击打开,在文件类型中选择AddIns如下所示:7.1导入程序选中userdll.dll,打开后SolidWorks中显
40、示如下图:、右视加挂的菜单丨注竟7.2菜单效果图中可以看出加挂的菜单和系统的菜单没有区别,体现了SolidWorks强大的接口。如果要实现运行一次后此菜单一直都挂接。则在导入dll文件之后,点击工具,插件,然后选择闸门拉车系统就可以了。选择新添加的菜单,点击零件管理,出现程序的对话框,如下图:预览效果图中为选择了零件时,显示的预览效果。点击确定后打开的零件:SltSolidWorks2001Plus-垫圈电文件编辑视图迥插入工具窗口闸门及拉车系统帮助旨G:-|S閔:0團够|2色驾風Q氨总舟甸显冏理垫园T注解+園光源、前视、上视、右视L原点+泊基体-拉.f申III-正在編辑:寒祥7.4打开零件结
41、论本次设计的是闸门拉车系统的各零部件及装配体在SolidWorks下的统一界面管理。管理的各零件建模由其他两位同学完成,考虑到零部件的数目较多,采用了数据库进行管理。要利用数据库储存相关的信息,就必须在建模的过程中各零件的命名规范,装配体必须有全部所需的零件。否则在实际应用时可能因找不到零件而需进行手动查找。由于零件的建模和设计图纸有一定的区别,所以在本次设计中数据库的建立不能完全按照图纸上的命名,必须依照实际的情况建立数据库,以实现完全的自动处理,而无需手动查找。在这过程中使我积累了更多的合作经验,深切体会到了合作精神的重要性。毕业设计的最终实现使我学会了更多的知识,和开发的经验。首先VC是
42、一种较难熟练运用的编程工具,要懂得这只是工具而不是语言。其用到的是C+语言,所以对类,继承等概念必须明确。要利用好VC工具还必须学习MFC的相关知识。充分利用MFC中的一些函数可以减少编程的工作量,以及提高代码的质量。本次设计是二次开发,和一次开发又有一定的区别。一次开发只要实现功能就可以,而二次开发需要更多的了解原有软件的一些具体实现原理,在此基础上利用接口,将自己的功能添加到原有软件中。像类似的二次开发多人合作的。在编写应用程序以及数据库之前,必须先划分好开发的步骤,将各步骤所需用到的都用明细表列出。一些准则需在编程之前事先定义好,然后在开始具体的设计开发。这样会减少开发的时间与效率,避免
43、出现多次修改的情况。还有编写程序时不要太注重技巧。实用的,简单易懂的程序更好。长一点的不一定不好,太短了则在程序的修改时不易实现。本次毕业设计的结果可以直接在实际中应用,方便了用户的管理,提高了工作的效率,具有一定的价值。谢词衷心感谢导师王彪教授和刘中柱老师对本人的精心指导。他们的言传身教将使我终生受益。王老师的指导使我少走了许多弯路,一些指导性的建议给我指明了设计的方向。刘老师在我得学习和设计过程中都给了我极大的帮助。感谢机械工程系老师和同窗们的关心和支持!感谢所有帮助过我的人们!参考文献1美Perspection公司著北京博彦科技发展有限公司译MicrosoftAccess2000即学即会
44、北京大学出版社,1999.82源江科技编著上海科学普及出版社VC编程技巧280例,2002.43宛延闿编著清华大学出版社C+语言和面向对象程序设计第二版,2000.14袁连海董文张志亮编著机械工业出版社SQLServer2000应用开发实例教程2002.1章立三董三立编北京航天航空大学出版社Windows程序设计用MicrosoftC/C+和VisualC+,1995徐晓刚高兆法王秀娟编著陈志全审清华大学出版社VisualC+6.0入门与提高,2001.2谭浩强编著清华大学出版社C程序设计1998.1附录I英文翻译译文SldWorks:OpenDoc2描述这个功能已经由SldWorks:Ope
45、nDoc3代替这个函数是打开一个已知文件名和类型的文件,并且返回文件的对象指针。该函数允许控制是否禁止显示对话框面板中,或以只读形式打开,并且以唯一的形式打开文件。语法(OLEAutomation)retval=SldWorks.OpenDoc2(name,type,readOnly,viewOnly,silent,&errors)Input:(BSTR)name文件的名称(如果不在当前路径下,用全部路径)Input:(long)type文件类型,参看swDocumentTypes_e.Input:(BOOL)readOnly文件以只读形式打开则为true,不以只读打开则为falseInput
46、:(BOOL)viewOnly文件以只显示形式打开则为true,不只以此形式打开则为falseInput:(BOOL)silent对话框以及警告消息不显示为true,对话框和警告消息要显示给用户则为falseOutput:(long)errors错误代码见swFileLoadError_e.Return:(LPDISPATCH)retval指向目的对象指针,文件(或操作失败用NULL)语法(COM)status=SldWorks-IOpenDoc2(name,type,readOnly,viewOnly,silent,&errors,&retval)Input:(BSTR)name文件的名称(
47、如果不在当前路径下,用全部路径)Input:(long)type文件类型,参看swDocumentTypes_e.Input:(VARIANT_BOOL)readOnly文件以只读形式打开则为true,不以只读打开则为falseInput:(VARIANT_BOOL)viewOnly文件以只显示形式打开则为true,不只以此形式打开则为falseInput:(VARIANT_BOOL)silent对话框以及警告消息不显示为true,对话框和警告消息要显示给用户则为falseOutput:(long)errors错误代码见swFileLoadError_e.Output:(LPMODELDOC)
48、retval指向目的对象指针,文件(或操作失败用NULL)Return:(HRESULT)status注意这个函数将激活“文件打开修改”事件。SldWorks:AddMenuItem描述这个函数是在菜单中添加一菜单项。语法(OLEAutomation)retval=SldWorks.AddMenuItem(docType,menu,position,callbackModuleAndFcn)输入:(long)docType添加菜单项的文件类型输入:(BSTR)menuItem格式如下:菜单项子菜单主菜单。如果此项不存在则将会产生新的菜单及子菜单输入:(long)Position指定添加新菜单项
49、的位置。第一个位置是再0位。如果在-1,新的菜单项将会添加在列中的底端。这一变量指定了与菜单项相联系的主菜单。输入:(BSTR)当用户点击菜单项时此函数将被callbackFcnAndModule调用(见下文)。返回:(long)retval如果返回值是1,添加成功。0,添加失败。语法(COM)status=SldWorks-AddMenuItem(docType,menuItem,position,callbackModuleAndFcn,&retval)输入:(long)docType输入:(BSTR)menuItem输入:(long)position输入:(BSTR)callbackFc
50、nAndModule输出:(long)retval返回:(HRESULT)status添加菜单项的文件类型格式如下:菜单项子菜单主菜单。如果此项不存在则将会产生新的菜单及子菜单指定添加新菜单项的位置。第一个位置是再0位。如果在-1,新的菜单项将会添加在列中的底端。这一变量指定了与菜单项相联系的主菜单。当用户点击菜单项时此函数将被调用(见下文)。如果是1,添加成功。0,添加失败。如果成功,则返回S_OK。注意此功能只适用于你的应用是执行dll操作。而不是exe。此外,从菜单项中调用的任何函数必须声明为EXPORT或者包括在声明文件中。你可以添加一个新的菜单,在任何SolidWorks的四个框架(
51、主框架,零件框架,对话框以及工程图框架)中。要实现,只要直接调用此函数,并用合适的文件类型参数于docType。例:假如你想你的菜单在零件文件激活时有效,那么调用此函数,并且以swDocPART作为第一个参数值。一旦你在零件框架中添加了菜单,你就不需要在单前SolidWorks环境下重新添加。假如你的零件文件被你激活,那么SolidWorks将会自动显示你的菜单操作。菜单项参数应该完全包括主菜单,子菜单项。假如一个菜单或子菜单不存在,那么将会自动放在父菜单项的最后一个位置。这并不需要显式的调用SldWorks:AddMenu命令来添加目前的菜单或子菜单,除非你必须添加此菜单或子菜单在一个专门的
52、位置。我们推荐利用SldWorks:AddMenu函数添加你的主菜单,因为它可以显示在已存在SolidWorks菜单栏中的“工具”和“窗口”菜单项之间。子菜单将会创建并添加在其父菜单的结尾。因此,假如你的菜单结构是利用连续调用产生的,那么,所有的菜单项的位置会安创建的顺序排列。然而,假如一个菜单或子菜单要放入一个已存在的菜单的固定位置,那么,你就必须利用SldWorks:AddMenu函数创建子菜单。查阅例子以获得更多的详细资料。callbackFcnAndModule参数指定了当用户选择了菜单项时所调用的函数。其语法如下:dllnamefunctionupdatefunction,hints
53、tring说明:dllname在你工程文件中的.def文件中的库清单中的名称。记录当前的dll文件名以及在.def文件中的定义必须是同名的。Function当用户所选菜单项时所调用的函数名称。这个函数也同样必须在你的.def文件中声明为EXPORT。updatefunction这是可选的,并且用来控制菜单项的位置。假如指定,此函数将会在菜单显示之前被调用。菜单项的显示是由你的updateFunction返回值控制。以下的返回值将会以以下的作用于菜单项。返回0菜单项未选中且不可用返回1菜单项未选中且可用。这是当没有指定更新函数时的默认形式返回2菜单项选中且不可用返回3菜单项选中且可用hintst
54、ring这是可选的,并且当用户把鼠标移过菜单项时在SolidWorks的状态栏中显示。假如hintstring已经指定,那么必须在逗号之前。例:UserdllAddBoxcheckUserSelections,AddaboxSldWorks:AddMenu描述用于dll应用软件,此函数将实现在SolidWorks界面中添加菜单或子菜单语法(OLEAutomation)retval=SldWorks.AddMenu(docType,menu,position)输入:(long)docType添加菜单项的文档类型输入:(BSTR)menu添加的菜单项的名称,包括任意的父菜单名称(例如subMenu
55、StringmenuString).输入:(long)position需要添加的新菜单或子菜单的位置,0是第一个位置,假如是-1,那么新的菜单或子菜单将添加在父菜单的最后。返回:(long)retval添加菜单项成功则返回1,否则返回0。语法(COM)status=SldWorks-AddMenu()Input:(long)DocType添加菜单项的文档类型Input:(BSTR)Menu添加的菜单项的名称,包括任意的父菜单名称(例如subMenuStringmenuString).Input:(long)Position需要添加的新菜单或子菜单的位置,0是第一个位置,假如是-1,那么新的菜单
56、或子菜单将添加在父菜单的最后。Output:(long)retval添加菜单项成功则输出1,否则0。Return:(HRESULT)status成功则返回S_OK,否则返回S_FALSE注意相一致的,用户的应用软件需要在现存的SolidWorks菜单栏的“工具”和“窗口”之间添加他们的下拉菜单项。当调用SldWorks:AddMenuItem函数时,子菜单将会自动的添加在父菜单的最后一项。因此,假如你的菜单结构是由连续的调用SldWorks:AddMenuItem函数产生的,那么,所有的菜单项的位置以产生菜单项的顺序排列。SldWorks:AddMenu函数只是在一个菜单或子菜单需要放入一个明
57、确的已知菜单时使用。例如:在声明前,你的主菜单必须被放在当前的SolidWorks菜单栏的“工具”和“窗口”之间的菜单项上。因此,你应该用SldWorks:AddMenu函数来产生你的主菜单项。查阅以上的例子以获得更多详细资料。SldWorks:PreviewDoc描述这一个方法是使文件在指定窗口中实现预览.语法(OLEAutomation)retval=SldWorks.PreviewDoc(hWnd,fullname)输入:(long*)hWnd显示预览窗口的句柄。这一指针在进程中无效。因此,这一方法只适用于你的应用软件使用dll执行输入:(BSTR)fullname要预览的文件的全路径返
58、回:(BOOL)retval成功则返回TRUE语法(COM)status=SldWorks-PreviewDoc(hWnd,fullname,&retval)Input:(long*)hWnd显示预览窗口的句柄。这一指针在进程中无效。因此,这一方法只适用于你的应用软件使用dll执行。Input:(BSTR)fullname要预览的文件的全路径Output:(VARIANT_BOOL)retval成功则输出TRUEReturn:(HRESULT)status成功则返回S_OK注意位图是存储为固定大小,在SolidWorks中的交互式预览选项显示。如果你的窗口是不同大小的,那么图像将会以合适的尺寸
59、显示。要注意,假如允许缩放比例,渐变的图像将不会和原始的一样清晰。在进程中窗口的句柄是无效的。应此,这个方法只适用执行于DLL格式文件。这个方法在WM_PAINT窗口信息处理中能顺利运行。如果运用WM_ONINITDIALOG,对话框将只显示预览图像一小段时间。因为对话框在调用PreviewDoc之前北完全初始化。C+程序员也可以利用SolidWorks以外的位图资源。位图由CArchive:Write()写入并导在SolidWorks的零件,装配图,工程图文件预览节点中。对预览函数的初始化程序如下:DWORD(datasize)说明连续的内存块的大小。被读取的数据可以由LPBITMAPINF
60、O运算出所有的需要显示位图的信息。在显示你的位图时,你可以使用StretchDIBits()函数,一个简单的读取SolidWorks预览图像的例子可以在我们的网站 HYPERLINK /html/Products/api/.%e4%b8%8a%e6%89%be%e5%88%b0%e3%80%82 /html/Products/api/.上找到。Changingthebackgroundcolorofadialog改变对话框的北京颜色这篇文章是由LuisGarcia投稿的。如果你想改变对话框的背景色,这是很简单的。先在你的对话框头文件中,声明一个CBrush变量:classCTestDlg:pu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度泳池设施维护责任免除合同
- 2025年度旅游区设施装修工程单项承包合同
- 二零二五年度2025年培训机构师资引进合同范本
- 环保学院师资队伍的生态教育及科研引导
- 2025年度智能直播带货渠道拓展合作合同
- 2025年度宗教场所装修合同解除与宗教文化保护协议
- 2025年度解除劳动合同员工离职手续办理及竞业禁止协议合同
- 2025年度新能源电动车订车及购车补贴政策合同
- 2025年度混凝土浇筑与光伏发电系统安装合同
- 绿色家居打造节能减排的居住环境
- 锂电新能源项目融资计划书
- 重大危险源的风险评估模型
- 采购支出管理制度
- 湖北十堰燃气爆炸事故案例
- 混凝土试件台账
- 人机料法环测检查表
- 中国数字货运发展报告
- 使用AVF血液透析患者的护理查房
- 《幼儿教师职业道德》教案
- 2021年高考山东卷化学试题(含答案解析)
- 客服百问百答
评论
0/150
提交评论