[精品论文]SOLIDWORKS_二次开发论文 SOLIDWORKS的API TOOLBOX 二次开发_第1页
[精品论文]SOLIDWORKS_二次开发论文 SOLIDWORKS的API TOOLBOX 二次开发_第2页
[精品论文]SOLIDWORKS_二次开发论文 SOLIDWORKS的API TOOLBOX 二次开发_第3页
[精品论文]SOLIDWORKS_二次开发论文 SOLIDWORKS的API TOOLBOX 二次开发_第4页
[精品论文]SOLIDWORKS_二次开发论文 SOLIDWORKS的API TOOLBOX 二次开发_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计课程定做 QQ1714879127前 言功能强大、易学易用和技术创新是SolidWorks 的三大特点,使得SolidWorks成为领先的、主流的三维CAD解决方案。SolidWorks 能够提供不同的设计方案、减少设计过程中的错误以及提高产品质量。SolidWorks 不仅提供如此强大的功能,同时对每个工程师和设计者来说,操作简单方便、易学易用。同时SolidWorks还提供了功能强大的API接口程序模块,使得用户可以根据自身的条件和需求编写加挂与该软件环境下的应用程序。本次设计设计的题目是SolidWorks的API toolbox 二次开发。主要任务为在SolidWorks软件下加挂菜单,添加用户的应用软件。零件的管理一直是比较耗时又容易出错的问题。特别是一套复杂零部件以及装配体的管理更是需要有一个专门的管理软件。本次设计的结果使得管理更加方便和实用,极大的提高了工作效率。在设计的过程中,王彪老师给了我们许多的指导性建议,并为我们创造了优越的学习工作环境。同时还有刘中柱老师在设计和学习过程中也给了我极大的帮助。仅此,对帮助和支持我得老师和同学表示深深的感谢。由于本人水平有限,经验不多,论文中肯定会有不少的缺点或错误,请老师和同学批评指正。1引 言1.1设计目的和意义设计的目的是实现拉车闸门系统的零部件以及装配体的统一界面管理。利用SolidWorks强大的应用程序接口,以Visual C6.0作为开发工具。软件的实现极大的提高了零件的管理。意义,对SolidWorks的工作流程以及基本原理有了更深的了解。对利用VC的FMC类库的运用有了基本的认识。面向对象的编程更能方便程序编制者,特别是程序的修改上。在结构上更能体现程序的流程。1.2国内国际状况及进展SolidWorks公司于2002年9月18日宣布推出三维机械CAD软件的最新版本SolidWorks2003,进一步帮助机械设计工程师实现协同设计,将新产品快速推向市场。SolidWorks2003新版本中有几百项新功能的提高:在新版本中增加了结构分析功能,协同设计功能,网上下载三维产品目录功能,以及其他新的建模功能。这些新的功能使得SolidWorks设计工程师进一步提高设计效率,SolidWorks的用户在市场上将更具有竞争力。SolidWorks2003版新增加的结构分析功能能够帮助设计工程师设计的正确性,减少了生产过程中产生的错误带来的损失。SolidWorks2003新版本能够读入的格式更加灵活,包括AutoCAD和CADKEY的各种格式,这种功能能够在三维设计时包容第三方软件的设计信息,用户能够快速完成设计。SolidWorks2003是世界上第一个能实现实时运动仿真的三维CAD软件,例如检查装配环境中的齿轮啮合等,设计师可以在制造之前发现设计中的缺陷和错误。“SolidWorks2003能支持多种文件格式,对我们设计师来讲是很方便的,可以很容易地将不同的文件转化为SolidWorks的数据模型,完成设计任务。”一位刚用过SolidWorks2003的用户讲到。“我们可以很方便地将逆向工程产生的数据文件直接拖拉到SolidWorks的环境中,而不必象以前一样手工地进行文件的转换。这种功能不仅给我们设计师节省了大量的时间和工作量,同时还可以继承原来老设计中优秀的东西。总之,SolidWorks2003不仅从功能本身或从数据转化来将都是最优秀的。”1.3论文各部分主要内容SolidWorks作为机械类的三维CAD软件,对于具体的用户可能有不同的应用。客户自己建立相关的软件使得SolidWorks能更好的成为开发管理的优秀应用软件。论文的第二章介绍了本次设计的相关知识。并对SolidWorks的使用作了简明的介绍。第三章阐述了设计的流程及结构,对系统设计作了具体的分析。第四章说明了如何建立数据库的过程以及相关的知识。并对数据库进行了相应说明。第五章对本次设计的具体实现以及程序的编制作了详细的说明。第六章是对本次设计的软件的打包,制作安装程序。第七章对软件的演示进行了示例。第八章是对这次设计的总结。最后是谢词参考文献,以及附录。2设计开发相关知识2.1 SolidWorks曲面设计 通过带控制线的扫描、放样、填充以及拖动可控制的相切操作产生复杂的曲面。可以直观地对曲面进行修剪、延伸、倒角和缝合等曲面的操作。钣金设计 SolidWorks 提供了顶尖的、全相关的钣金设计能力。可以直接使用各种类型的法兰、薄片等特征,正交切除、角处理以及边线切口等钣金操作变得非常容易。 用户化SolidWorks 的API为用户提供了自由的、开放的、功能完整的开发工具。 开发工具包括Microsoft Visual Basic for Applications (VBA)、Visual C+,以及其他支持OLE的开发程序。 帮助文件 SolidWorks 2001配有一套强大的、基于HTML的帮助文件系统。包括超级文本链接、动画示教、在线教程、以及设计向导和术语。 数据转换 SolidWorks 提供了当今市场上几乎所有CAD软件的输入/输出格式转换器。 IGES IPT ( AutoDesk Inventor) STEP DWG SAT(ACIS) DXF VRML CGR(Catia graphic) STL HCG(Highly compressed) Parasolid graphics Pro/ENGINEER Viewpoint Unigraphics RealityWave PAR (Solid Edge) TIFF VDA-FS JPG Mechanical Desktop 2.2SolidWorks 2001 plus APISolid Works提供API作为二次开发工具,其中列举了用户可以调用的C语言函数名及其技术指标格式。SolidWorks API是SolidWorks的OLE应用程序开发接口,用户可以利用它和支持OLE编程的开发工具,如VB、VBA(Excel, Access)、C、VC+等对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks 功能模块。本次设计采用VC作为开发工具。SolidWorks提供三种开发方式:可执行文件*.exe、正规的.DLLs有两种实现方式:dynamically linked或者 statically linked,一般都使用dynamically linked。因为静态连接到MFC代码库,你的.DLL包括它自己的所有的所需的MFC代码,那么它将非常庞大。另一种是MFC扩展.DLL,一个扩展.DLL是动态连接到MFC的代码库的.DLL的.客户程序也必须动态的连接到MFC的代码库。MFC扩展.DLLs非常小.你可以建立一个导出一些函数或者类的大约10-15KB的。为了充分利用VC的资源,设计采用了最后一种即MFC扩展.DLL。2.3Visual C6.0理解VC工程Visual C+作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。扩展名为dsw的文件类型,这种类型的文件在VC中是级别最高的,称为Workspace文件。在VC中,应用程序是以Project的形式存在的,Project文件以.dsp扩展名,在Workspace文件中可以包含多个Project,由Workspace文件对它们进行统一的协调和管理。与dsw类型的Workspace文件相配合的一个重要的文件类型是以opt为扩展名的文件,这个文件中包含的是在Workspace文件中要用到的本地计算机的有关配置信息,所以这个文件不能在不同的计算机上共享,当我们打开一个Workspace文件时,如果系统找不到需要的opt类型文件,就会自动地创建一个与之配合的包含本地计算机信息的opt文件。以clw为扩展名的文件是用来存放应用程序中用到的类和资源的信息的,这些信息是VC中的ClassWizard工具管理和使用类的信息来源在应用程序中经常要使用一些位图、菜单之类的资源,VC中以rc为扩展名的文件称为资源文件,其中包含了应用程序中用到的所有的windows资源。对于以ico,bmp等为扩展名的文件是具体的资源,产生这种资源的途径很多。使用rc资源文件的目的就是为了对程序中用到的大量的资源进行统一的管理。近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对象技术中最重要的就是“对象”的概念,把现实世界中的气球、自行车等客观实体抽象成程序中的“对象”。这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能。程序员大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。MFC编程特点MFC的英文全称是Microsoft Foundation Classes,即微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,在进行程序设计的时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法,从类库中的已有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。下面介绍在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_RBUTTONDBCLICK3设计流程及结构3.1设计流程设计程序界面添加菜单及子菜单设计数据库与数据库的连接实现预览及打开零件或装配体其中与数据库的连接部分程序流程如下:YNYN选择系统型号型号1选择装配体选择零件打开型号2型号33.2 设计结构本设计的结构主要由以下部分组成:读取数据库,零件的选择,零件的预览,零件的打开。读取数据库部分是运用VC的MFC中的DAO进行编程的。利用其指针,读取数据库里面的数据,运用SQL语句进行查询等操作。零件的预览是先读取数据库里的有关零件的位置。然后将零件在预览框中显示。以利于选择的直观性,且不易出错。零件的打开是为了实现对所选零件的一些修改,零件的尺寸都是相关联的,修改简便。4建立数据库4.1建立表建立表格采用了微软的Access 2000为开发工具。对本次设计的具体要求的分析。建立了三个相关联的表。分别为sys_type,parts_1,part三个表。由于在VC中利用DAO读取Access数据库的格式必须是Access97文件。所以在建完表之后必须转换数据格式。设计的表如下:sys_type系统型号ID型号11型号22型号33此表为第一级表,下面的表将和此表实现相关联。(sys_type)parts_1装配体NO_1ID气压控制系统一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拉车汽缸装置三3.33闸门系统三3.43活塞杆托架三3.53载模小车三3.63垫板三3.73此表是对系统的进一步细分。(parts_1)part零件名称零件编号NO_1零件位置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拉车汽缸装置护板.sldprt连接杆1.3拉车汽缸装置连接杆.sldprt六角螺母1.3拉车汽缸装置六角螺母.sldprt六角螺母M121.3拉车汽缸装置六角螺母M12.sldprt六角螺母M11.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拉车汽缸装置平垫圈M16.sldprt平垫圈M301.3拉车汽缸装置平垫圈M30.sldprt上支架1.3拉车汽缸装置上支架.sldprt下支架1.3拉车汽缸装置下支架.sldprt圆螺母M271.3拉车汽缸装置圆螺母M27.sldprt圆螺母M301.3拉车汽缸装置圆螺母M30.sldprt支撑板1.3拉车汽缸装置支撑板.sldprt拉车汽缸1.3拉车汽缸装置拉车汽缸.sldasm此表是保存零件的具体信息。软件最后根据此表中的零件位置打开相应的零件。注:(part)本表的记录较多,在此只列出部分作为示例。4.2 表之间的关联在设计表的过程中,在各个表中都添加一个相同的字段,将此字段作为表之间相联系的桥梁。例如在表sys_type中选择系统型号为型号1,就可得到其ID字段的值为1。其后根据ID1,在表parts_1中得到符合ID1的多个记录,选择其中的一个记录,假设为ID1,NO_1=1.3,装配体字段值为拉车汽缸装置一,则可以根据NO_1=1.3,在part表中得到一组记录。实现了从第一个表开始各个表之间的关联。5设计的具体实现5.1设计的背景条件在设计中采用直接使用SolidWorks自带的接口程序。在安装路径下的Samplescomuserdlli386,可以直接使用其基本的工程文件。在其中添加自己的应用代码。编译链接后就可以得到一个comuserdll.dll的动态链接文件。在SolidWorks中运用Add-in功能将编译的文件打开就可以和SolidWorks实现完美的结合。5.2在SolidWorks软件下添加菜单及子菜单在SolidWorks的模板程序中,类userApplications中定义了添加菜单的函数再在其中的函数_addMenus(LPFRAME pFrame)中添加代码实现添加用户自定义的菜单以及相应子菜单。实现的代码如下:VARIANT_BOOL bres;HRESULT hres = pFrame-AddMenu(auT(闸门及拉车系统(&J), 6, &bres);hres = pFrame-AddMenuItem(auT(闸门及拉车系统(&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中说明菜单函数的序号。实现的方法如下:myhelp11part_manage12这样程序的运行才不会和SolidWorks的内部资源相冲突。5.3添加菜单函数在userdll.cpp中添加菜单响应函数。注意在VC中如果函数不返回任何值,则函数必须定义成void类型。零件管理菜单的响应函数部分如下:void part_manage()HINSTANCE MyResourceHandle = NULL;MyResourceHandle = LoadLibrary(_T(userdll.dll );/ Save the current resource handle HINSTANCE SolidWorksResource = AfxGetResourceHandle();/ Switch to the Application resourcesAfxSetResourceHandle(MyResourceHandle);CNewDlg dlg;(略)AfxSetResourceHandle(SolidWorksResource);菜单函数实现的是打开一个对话框资源。其中关系到SolidWorks资源管理问题,必须将自己定义的对话框的句柄设为当前的SolidWorks的资源句柄。具体的有关问题可以查看SolidWorks API帮助里的Programmers Guide下Getting Started 下CC中的Managing your Application Resources - C/C+,里面有详细的使用方法。帮助菜单的响应函数如下:void About()HINSTANCE MyResourceHandle = NULL;MyResourceHandle = LoadLibrary(_T(userdll.dll ); HINSTANCE SolidWorksResource = AfxGetResourceHandle();AfxSetResourceHandle(MyResourceHandle);CAbout Aboutdlg;Aboutdlg.DoModal();/restore the solidworkss resource handleAfxSetResourceHandle(SolidWorksResource);注意在对话框头文件中添加#include “resource.h”。否则编译时会产生找不到对话框的ID号的错误。关于的界面在SolidWorks中实现如下:5.1 关于界面图中显示的图片必须是位图。在制作时要把图的格式转化为*.bmp格式。5.4添加应用程序对话框对话框可以在VC资源里直接创建,再利用对话框的工具创建需要的各种控件,根据实际情况,对话框以及控件的安排如下图所示:位图控件组合框控件5.2 对话框样式对话框的创建后,在运用时要新建一个类来控制对话框的各种操作。在本设计中定义为CNewDlg类,在对话框中的各个控件的定义都在该类的函数中实现。5.5实现数据库连接设计的实现采用了MFC类库的基类CDaoDatabase。运用DAO实现与数据库的链接。设计的具体步骤如下:首先在stdafx.h中添加头文件#include ,其次在对话框类中定义一个数据库指针变量CDaoDatabase m_db;将此变量放在protected型中。然后在对话框的.cpp文件中利用m_db将数据库打开,此变量是一个指针类型。要读取数据库中的数据必须再定义一个记录集变量CDaoRecordset rs(&m_db);根据对本次系统的具体分析。其实现的源程序如下:m_db.Open(_T(D:SolidWorkssamplescomuserdllpart.mdb);CDaoRecordset rs(&m_db);CString strSql=_T(SELECT * FROM sys_type );rs.Open(dbOpenDynaset,strSql);COleVariant var;while(!rs.IsEOF()CString str;rs.GetFieldValue(_T(系统型号),var);str=CCrack:strVARIANT(var);if(str=_T()|str=_T(NULL)continue;m_SYSTYPE.AddString(str);rs.MoveNext();return TRUE;此段代码实现了将表sys_type中的系统型号字段的内容读入系统型号的组合框控件中,作为对话框程序的初始化。数据库的连接在三个组合框控件都使用到。每一个的原理都基本相似,下面介绍一下第一个组合框的具体实现。说明:第一个组合框的关联变量是m_SYSTYPE。void CNewDlg:OnSelchangeSystype() UpdateData();int nSel=m_SYSTYPE.GetCurSel();/得到第一个组合框的焦点CString str;if(nSelLB_ERR)return;m_SYSTYPE.GetLBText(nSel,str);/得到第一个组合框的内容/AfxMessageBox(str);if(str.CompareNoCase(_T(型号1)0)/=0 is str is equal with 型号1m_FSTPARTS.ResetContent();CDaoRecordset rs(&m_db);/定义记录集/得到parts_1.ID=1的记录集CString strSql=_T(SELECT * FROM parts_1 WHERE parts_1.ID=1 );rs.Open(dbOpenDynaset,strSql);/得到数据库的记录指针COleVariant var;while(!rs.IsEOF()CString str;rs.GetFieldValue(_T(装配体),var);str=CCrack:strVARIANT(var);if(str_T()|str_T(NULL)continue;m_FSTPARTS.AddString(str);rs.MoveNext();/将得到的记录集添加到第二个组合框控件中UpdateData(FALSE);(略)本段代码是运用了DAO的数据库编程。利用控件实现对数据库的相应操作。5.6实现各级组合框的关联组合框之间的关联是利用了选择改变消息。即CBN_SELCHANGE消息。各组合框都建立一个CBN_SELCHANGE的消息。例如:ON_CBN_SELCHANGE(IDC_FSTPARTS, OnSelchangeFstparts)ON_CBN_SELCHANGE(IDC_PART, OnSelchangePart)IDC_ FSTPARTS是第二个组合框的名称,IDC_PART是第三个组合框的名称。这两个组合框各有一个消息OnSelchangeFstparts,OnSelchangePart。通过在第二个框中添加代码,可以实现第二个组合框状态的改变影响第三个组合框的改变。例如在OnSelchangeFstparts消息的函数中的部分代码如下:void CNewDlg:OnSelchangeFstparts() UpdateData();if(str.CompareNoCase(_T(气压控制系统一)0)m_PART.ResetContent();CDaoRecordset rs(&m_db);CString strSql=_T(SELECT * FROM part WHERE part.NO_1=1.1 );rs.Open(dbOpenDynaset,strSql);COleVariant var;while(!rs.IsEOF()CString str;rs.GetFieldValue(_T(零件名称),var);str=CCrack:strVARIANT(var);if(str_T()|str_T(NULL)rs.MoveNext();continue;m_PART.AddString(str);rs.MoveNext();UpdateData(FALSE);代码中的倒数第三行实现了对第三个组合框控件的添加文本。5.7实现零部件及装配体的预览零件的预览部分最好是添加消息WM_PAINT,件预览部分的代码添加在OnPaint()函数中,这样避免了预览的暂时性。假如放在其他函数中实现。那么实现预览的效果将不会很好。例如打开了一个零件的预览,切换了页面之后就不能有预览效果。将实现代码放在OnPaint()函数中能有效地避免类似情况的发生。预览效果图如下:预览效果5.3 预览效果经切换页面后效果一样实现代码(部分):VARIANT_BOOL bOK;HRESULT res;long* pWnd=(long*)(m_PREVIEW.m_hWnd);res=UserApp-getSWApp()-PreviewDoc(pWnd,(unsigned short )strPreviewFile.GetBuffer(strPreviewFile.GetLength(),&bOK);5.8 打开所选的零部件或装配体打开所选零部件的方法是产生点击ok时的响应消息。并根据所选的是零件还是装配体进行判断,而后依相应的格式打开。程序的实现如下:if(dlg.DoModal()=IDOK)AfxSetResourceHandle(SolidWorksResource); /Switch to Solidworks handleCString m_strFile=dlg.strPreviewFile;long type;Cstring strtemp;strtemp=m_strFile.Right(3);strtemp.MakeLower();if(strtemp=”prt”)type=swDocPART;else if(strtemp=”asm”)type=swDocASSEMBLY;else if(strtemp=”drw”)type=swDocDRAWING;elsetype=swDocNONE;_bstr_t bsFile(dlg.strPreviewFile); /include to use _bstr_tHRESULT res;LPMODELDOC mod=NULL;long P=0;res = UserApp-getSWApp()-IopenDoc2(bsFile,type,FALSE,FALSE,TRUE,&P,(LPMODELDOC*)&mod);添加该段代码需添加头文件#include ,打开的格式是最后一条语句,其具体格式可以参考SolidWorks API帮助的opendoc2。5.9 编译链接为dll文件考虑到界面因素,现将对话框的背景色加以改变。利用ON_WM_CTLCOLOR()消息传递。首先,给对话基类增加一人成员变量Cbursh:Cbrush brush;其次,在类的构造函数中将刷子初始化为所需要的背景颜色。Brush.CreateSolidBrush(RGB(128,128,255),最后,使用ClassWizard处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。如下:return(HBRUSH)brush.GetSafeHandle(); return Cdialog:OnCtlColor( pDC, pWnd, nCtlColor) ;这样运行时看到就是如预览效果图中的颜色。最后用VC6.0进行编译链接得到一个动态链接文件userdll.dll,以及userdll.lib。6 制作安装程序使用InstallMaster8.1作为开发的工具。软件的使用界面如下:本软件使用简便,在此不作详细说明。6.1 制作安装程序安装程序实现了将本软件所用到的所有文件都压缩在一个安装程序里。在运行安装程序时,请按默认的路径安装。7系统演示首先用SolidWorks的Addin打开生成的uerdll.dll文件选择SolidWorks的文件菜单,点击打开,在文件类型中选择AddIns如下所示:7.1 导入程序选中userdll.dll,打开后SolidWorks中显示如下图:加挂的菜单7.2 菜单效果图中可以看出加挂的菜单和系统的菜单没有区别,体现了SolidWorks强大的接口。如果要实现运行一次后此菜单一直都挂接。则在导入dll文件之后,点击工具,插件,然后选择闸门拉车系统就可以了。选择新添加的菜单,点击零件管理,出现程序的对话框,如下图:预览子装配体选择系统型号选择零部件选择7.3 预览效果图中为选择了零件时,显示的预览效果。点击确定后打开的零件:7.4 打开零件8结论本次设计的是闸门拉车系统的各零部件及装配体在SolidWorks下的统一界面管理。管理的各零件建模由其他两位同学完成,考虑到零部件的数目较多,采用了数据库进行管理。要利用数据库储存相关的信息,就必须在建模的过程中各零件的命名规范,装配体必须有全部所需的零件。否则,在实际应用时可能因找不到零件而需进行手动查找。由于零件的建模和设计图纸有一定的区别,所以在本次设计中数据库的建立不能完全按照图纸上的命名,必须依照实际的情况建立数据库,以实现完全的自动处理,而无需手动查找。在这过程中使我积累了更多的合作经验,深切体会到了合作精神的重要性。毕业设计的最终实现使我学会了更多的知识,和开发的经验。首先VC是一种较难熟练运用的编程工具,要懂得这只是工具而不是语言。其用到的是C语言,所以对类,继承等概念必须明确。要利用好VC工具还必须学习MFC的相关知识。充分利用MFC中的一些函数可以减少编程的工作量,以及提高代码的质量。本次设计是二次开发,和一次开发又有一定的区别。一次开发只要实现功能就可以,而二次开发需要更多的了解原有软件的一些具体实现原理,在此基础上利用接口,将自己的功能添加到原有软件中。像类似的二次开发多人合作的。在编写应用程序以及数据库之前,必须先划分好开发的步骤,将各步骤所需用到的都用明细表列出。一些准则需在编程之前事先定义好,然后在开始具体的设计开发。这样会减少开发的时间与效率,避免出现多次修改的情况。还有编写程序时不要太注重技巧。实用的,简单易懂的程序更好。长一点的不一定不好,太短了则在程序的修改时不易实现。本次毕业设计的结果可以直接在实际中应用,方便了用户的管理,提高了工作的效率,具有一定的价值。谢词衷心感谢导师王彪教授和刘中柱老师对本人的精心指导。他们的言传身教将使我终生受益。王老师的指导使我少走了许多弯路,一些指导性的建议给我指明了设计的方向。刘老师在我得学习和设计过程中都给了我极大的帮助。感谢机械工程系老师和同窗们的关心和支持!感谢所有帮助过我的人们!参考文献1美 Perspection公司著北京博彦科技发展有限公司译Microsoft Access 2000 即学即会北京大学出版社,1999.82源江科技编著上海科学普及出版社 VC编程技巧280例,2002.43宛延闿编著清华大学出版社C+语言和面向对象程序设计第二版,2000.14袁连海 董文 张志亮 编著 机械工业出版社 SQL Server 2000 应用开发实例教程 2002.15章立三 董三立 编 北京航天航空大学出版社 Windows程序设计用Microsoft C/C和Visual C,19956徐晓刚 高兆法 王秀娟 编著 陈志全 审 清华大学出版社 Visual C6.0入门与提高,2001.27谭浩强 编著 清华大学出版社 C程序设计1998.1附录英文翻译译文SldWorks:OpenDoc2描述这个功能已经由SldWorks:OpenDoc3代替这个函数是打开一个已知文件名和类型的文件,并且返回文件的对象指针。该函数允许控制是否禁止显示对话框面板中,或以只读形式打开,并且以唯一的形式打开文件。语法(OLE Automation)retval = SldWorks.OpenDoc2 ( name, type, readOnly, viewOnly, silent, &errors )Input:(BSTR) name文件的名称(如果不在当前路径下,用全部路径)Input:(long) type文件类型,参看swDocumentTypes_e.Input:(BOOL) readOnly文件以只读形式打开则为true,不以只读打开则为falseInput:(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文件的名称(如果不在当前路径下,用全部路径)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) retval指向目的对象指针,文件(或操作失败用NULL)Return:(HRESULT) status注意这个函数将激活“文件打开修改”事件。SldWorks:AddMenuItem描述这个函数是在菜单中添加一菜单项。语法 (OLE Automation)retval = SldWorks.AddMenuItem ( docType, menu, position, callbackModuleAndFcn )输入:(long) docType添加菜单项的文件类型输入:(BSTR) menuItem格式如下:菜单项 子菜单 主菜单。如果此项不存在则将会产生新的菜单及子菜单输入:(long) Position指定添加新菜单项的位置。第一个位置是再0位。如果在-1,新的菜单项将会添加在列中的底端。这一变量指定了与菜单项相联系的主菜单。输入:(BSTR) callbackFcnAndModule当用户点击菜单项时此函数将被调用(见下文)。返回:(long) retval如果返回值是1,添加成功。0,添加失败。语法 (COM)status = SldWorks-AddMenuItem ( docType, menuItem, position, callbackModuleAndFcn, &retval )输入:(long) docType添加菜单项的文件类型输入:(BSTR)menuItem格式如下:菜单项 子菜单 主菜单。如果此项不存在则将会产生新的菜单及子菜单输入:(long)position指定添加新菜单项的位置。第一个位置是再0位。如果在-1,新的菜单项将会添加在列中的底端。这一变量指定了与菜单项相联系的主菜单。输入:(BSTR) callbackFcnAndModule当用户点击菜单项时此函数将被调用(见下文)。输出:(long)retval如果是1,添加成功。0,添加失败。返回:(HRESULT)status如果成功,则返回S_OK。注意此功能只适用于你的应用是执行dll操作。而不是exe。此外,从菜单项中调用的任何函数必须声明为EXPORT或者包括在声明文件中。你可以添加一个新的菜单,在任何SolidWorks的四个框架(主框架,零件框架,对话框以及工程图框架)中。要实现,只要直接调用此函数,并用合适的文件类型参数于docType。例:假如你想你的菜单在零件文件激活时有效,那么调用此函数,并且以swDocPART作为第一个参数值。一旦你在零件框架中添加了菜单,你就不需要在单前SolidWorks环境下重新添加。假如你的零件文件被你激活,那么SolidWorks将会自动显示你的菜单操作。菜单项参数应该完全包括主菜单,子菜单项。假如一个菜单或子菜单不存在,那么将会自动放在父菜单项的最后一个位置。这并不需要显式的调用SldWorks:AddMenu 命令来添加目前的菜单或子菜单,除非你必须添加此菜

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论