solidworks二次开发论文.docx

上传人:b****5 文档编号:28615203 上传时间:2023-07-19 格式:DOCX 页数:47 大小:912.69KB
下载 相关 举报
solidworks二次开发论文.docx_第1页
第1页 / 共47页
solidworks二次开发论文.docx_第2页
第2页 / 共47页
solidworks二次开发论文.docx_第3页
第3页 / 共47页
solidworks二次开发论文.docx_第4页
第4页 / 共47页
solidworks二次开发论文.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

solidworks二次开发论文.docx

《solidworks二次开发论文.docx》由会员分享,可在线阅读,更多相关《solidworks二次开发论文.docx(47页珍藏版)》请在冰豆网上搜索。

solidworks二次开发论文.docx

solidworks二次开发论文

前言

功能强大、易学易用和技术创新是SolidWorks的三大特点,使得SolidWorks成为领先的、主流的三维CAD解决方案。

SolidWorks能够提供不同的设计方案、减少设计过程中的错误以及提高产品质量。

SolidWorks不仅提供如此强大的功能,同时对每个工程师和设计者来说,操作简单方便、易学易用。

同时SolidWorks还提供了功能强大的API接口程序模块,使得用户可以根据自身的条件和需求编写加挂与该软件环境下的应用程序。

本次设计设计的题目是SolidWorks的APItoolbox二次开发。

主要任务为在SolidWorks软件下加挂菜单,添加用户的应用软件。

零件的管理一直是比较耗时又容易出错的问题。

特别是一套复杂零部件以及装配体的管理更是需要有一个专门的管理软件。

本次设计的结果使得管理更加方便和实用,极大的提高了工作效率。

在设计的过程中,王彪老师给了我们许多的指导性建议,并为我们创造了优越的学习工作环境。

同时还有刘中柱老师在设计和学习过程中也给了我极大的帮助。

仅此,对帮助和支持我得老师和同学表示深深的感谢。

由于本人水平有限,经验不多,论文中肯定会有不少的缺点或错误,请老师和同学批评指正。

 

1引言

1.1设计目的和意义

设计的目的是实现拉车闸门系统的零部件以及装配体的统一界面管理。

利用SolidWorks强大的应用程序接口,以VisualC++6.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.1SolidWorks

曲面设计 通过带控制线的扫描、放样、填充以及拖动可控制的相切操作产生复杂的曲面。

可以直观地对曲面进行修剪、延伸、倒角和缝合等曲面的操作。

钣金设计  SolidWorks提供了顶尖的、全相关的钣金设计能力。

可以直接使用各种类型的法兰、薄片等特征,正交切除、角处理以及边线切口等钣金操作变得非常容易。

用户化  SolidWorks的API为用户提供了自由的、开放的、功能完整的开发工具。

开发工具包括MicrosoftVisualBasicforApplications(VBA)、VisualC++,以及其他支持OLE的开发程序。

帮助文件  SolidWorks2001配有一套强大的、基于HTML的帮助文件系统。

包括超级文本链接、动画示教、在线教程、以及设计向导和术语。

数据转换SolidWorks提供了当今市场上几乎所有CAD软件的输入/输出格式转换器。

∙IGESIPT(AutoDeskInventor)

∙STEPDWG

∙SAT(ACIS)DXF

∙VRMLCGR(Catiagraphic)

∙STLHCG(Highlycompressed)

∙Parasolidgraphics

∙Pro/ENGINEERViewpoint

∙UnigraphicsRealityWave

∙PAR(SolidEdge)TIFF

∙VDA-FSJPG

∙MechanicalDesktop

2.2SolidWorks2001plusAPI

SolidWorks提供API作为二次开发工具,其中列举了用户可以调用的C语言函数名及其技术指标格式。

SolidWorksAPI是SolidWorks的OLE应用程序开发接口,用户可以利用它和支持OLE编程的开发工具,如VB、VBA(Excel,Access)、C、VC++等对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks功能模块。

本次设计采用VC++作为开发工具。

SolidWorks提供三种开发方式:

可执行文件*.exe、正规的.DLLs有两种实现方式:

dynamicallylinked或者staticallylinked,一般都使用dynamicallylinked。

因为静态连接到MFC代码库,你的.DLL包括它自己的所有的所需的MFC代码,那么它将非常庞大。

另一种是MFC扩展.DLL,一个扩展.DLL是动态连接到MFC的代码库的.DLL的.客户程序也必须动态的连接到MFC的代码库。

MFC扩展.DLLs非常小.你可以建立一个导出一些函数或者类的大约10-15KB的。

为了充分利用VC的资源,设计采用了最后一种即MFC扩展.DLL。

2.3VisualC++6.0

理解VC工程VisualC++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。

扩展名为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的英文全称是MicrosoftFoundationClasses,即微软的基本类库,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_RBUTTONDBCLICK

3设计流程及结构

3.1设计流程

其中与数据库的连接部分程序流程如下:

3.2设计结构

本设计的结构主要由以下部分组成:

读取数据库,零件的选择,零件的预览,零件的打开。

读取数据库部分是运用VC的MFC中的DAO进行编程的。

利用其指针,读取数据库里面的数据,运用SQL语句进行查询等操作。

零件的预览是先读取数据库里的有关零件的位置。

然后将零件在预览框中显示。

以利于选择的直观性,且不易出错。

零件的打开是为了实现对所选零件的一些修改,零件的尺寸都是相关联的,修改简便。

 

4建立数据库

4.1建立表

建立表格采用了微软的Access2000为开发工具。

对本次设计的具体要求的分析。

建立了三个相关联的表。

分别为sys_type,parts_1,part三个表。

由于在VC++中利用DAO读取Access数据库的格式必须是Access97文件。

所以在建完表之后必须转换数据格式。

设计的表如下:

sys_type

系统型号

ID

型号1

1

型号2

2

型号3

3

此表为第一级表,下面的表将和此表实现相关联。

(sys_type)

parts_1

装配体

NO_1

ID

气压控制系统一

1.1

1

小车道轨一

1.2

1

拉车汽缸装置一

1.3

1

闸门系统一

1.4

1

活塞杆托架一

1.5

1

载模小车一

1.6

1

垫板一

1.7

1

气压控制系统二

2.1

2

小车道轨二

2.2

2

拉车汽缸装置二

2.3

2

闸门系统二

2.4

2

活塞杆托架二

2.5

2

载模小车二

2.6

2

垫板二

2.7

2

气压控制系统三

3.1

3

小车道轨三

3.2

3

拉车汽缸装置三

3.3

3

闸门系统三

3.4

3

活塞杆托架三

3.5

3

载模小车三

3.6

3

垫板三

3.7

3

此表是对系统的进一步细分。

(parts_1)

part

零件名称

零件编号

NO_1

零件位置

T形槽螺栓M30

1.3

拉车汽缸装置\T形槽螺栓M30.sldprt

弹簧垫圈M12

1.3

拉车汽缸装置\\弹簧垫圈M12.sldprt

弹簧垫圈M16

1.3

拉车汽缸装置\\弹簧垫圈M16.sldprt

垫圈

1.3

拉车汽缸装置\\垫圈.sldprt

调整垫板

1.3

拉车汽缸装置\\调整垫板.sldprt

感应开关支座

1.3

拉车汽缸装置\\感应开关支座.sldprt

感应开关撞块

1.3

拉车汽缸装置\\感应开关撞块.sldprt

护板

1.3

拉车汽缸装置\\护板.sldprt

连接杆

1.3

拉车汽缸装置\\连接杆.sldprt

六角螺母

1.3

拉车汽缸装置\\六角螺母.sldprt

六角螺母M12

1.3

拉车汽缸装置\\六角螺母M12.sldprt

六角螺母M1

1.3

拉车汽缸装置\\六角螺母M16.sldprt

六角螺母M30

1.3

拉车汽缸装置\\六角螺母M30.sldprt

六角螺栓M10

1.3

拉车汽缸装置\\六角螺栓M10.sldprt

六角螺栓M12

1.3

拉车汽缸装置\\六角螺栓M12.sldprt

六角螺栓M16

1.3

拉车汽缸装置\\六角螺栓M16.sldprt

平垫圈M10

1.3

拉车汽缸装置\\平垫圈M10.sldprt

平垫圈M12

1.3

拉车汽缸装置\\平垫圈M12.sldprt

平垫圈M16

1.3

拉车汽缸装置\\平垫圈M16.sldprt

平垫圈M30

1.3

拉车汽缸装置\\平垫圈M30.sldprt

上支架

1.3

拉车汽缸装置\\上支架.sldprt

下支架

1.3

拉车汽缸装置\\下支架.sldprt

圆螺母M27

1.3

拉车汽缸装置\\圆螺母M27.sldprt

圆螺母M30

1.3

拉车汽缸装置\\圆螺母M30.sldprt

支撑板

1.3

拉车汽缸装置\\支撑板.sldprt

拉车汽缸

1.3

拉车汽缸装置\\拉车汽缸.sldasm

此表是保存零件的具体信息。

软件最后根据此表中的零件位置打开相应的零件。

注:

(part)本表的记录较多,在此只列出部分作为示例。

 

4.2表之间的关联

在设计表的过程中,在各个表中都添加一个相同的字段,将此字段作为表之间相联系的桥梁。

例如在表sys_type中选择系统型号为型号1,就可得到其ID字段的值为1。

其后根据ID=1,在表parts_1中得到符合ID=1的多个记录,选择其中的一个记录,假设为ID=1,NO_1=1.3,装配体字段值为拉车汽缸装置一,则可以根据NO_1=1.3,在part表中得到一组记录。

实现了从第一个表开始各个表之间的关联。

 

5设计的具体实现

5.1设计的背景条件

在设计中采用直接使用SolidWorks自带的接口程序。

在安装路径下的Samples\comuserdll\i386,可以直接使用其基本的工程文件。

在其中添加自己的应用代码。

编译链接后就可以得到一个comuserdll.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("闸门及拉车系统(&J)"),auT("零件管理&1"),-1,auT("USERDLL@part_manage,这是零件管理。

"),&bres);

hres=pFrame->AddMenuItem(auT("闸门及拉车系统(&J)"),auT("帮助&3"),-1,auT("USERDLL@myhelp@帮助"),&bres);

闸门及拉车系统是加挂与SolidWorks顶部的菜单。

零件管理、数据管理、帮助是其下面的子菜单。

因为编译的最后文件是userdll.dll,所以在定义菜单函数时是在userdll.cpp下实现的。

考虑到资源的问题,还必须在userdll.def中说明菜单函数的序号。

实现的方法如下:

myhelp@11

part_manage@12

这样程序的运行才不会和SolidWorks的内部资源相冲突。

 

5.3添加菜单函数

在userdll.cpp中添加菜单响应函数。

注意在VC中如果函数不返回任何值,则函数必须定义成void类型。

零件管理菜单的响应函数部分如下:

voidpart_manage()

{

HINSTANCEMyResourceHandle=NULL;

MyResourceHandle=LoadLibrary(_T("userdll.dll"));

//Savethecurrentresourcehandle

HINSTANCESolidWorksResource=AfxGetResourceHandle();

//SwitchtotheApplicationresources

AfxSetResourceHandle(MyResourceHandle);

CNewDlgdlg;

……(略)

AfxSetResourceHandle(SolidWorksResource);

}

菜单函数实现的是打开一个对话框资源。

其中关系到SolidWorks资源管理问题,必须将自己定义的对话框的句柄设为当前的SolidWorks的资源句柄。

具体的有关问题可以查看SolidWorksAPI帮助里的Programmer'sGuide下GettingStarted下C\C++中的ManagingyourApplicationResources-C/C++,里面有详细的使用方法。

帮助菜单的响应函数如下:

voidAbout()

{

HINSTANCEMyResourceHandle=NULL;

MyResourceHandle=LoadLibrary(_T("userdll.dll"));

HINSTANCESolidWorksResource=AfxGetResourceHandle();

AfxSetResourceHandle(MyResourceHandle);

CAboutAboutdlg;

Aboutdlg.DoModal();

//restorethesolidworks'sresourcehandle

AfxSetResourceHandle(SolidWorksResource);

}

注意在对话框头文件中添加#include“resource.h”。

否则编译时会产生找不到对话框的ID号的错误。

关于的界面在SolidWorks中实现如下:

5.1关于界面

图中显示的图片必须是位图。

在制作时要把图的格式转化为*.bmp格式。

 

5.4添加应用程序对话框

对话框可以在VC资源里直接创建,再利用对话框的工具创建需要的各种控件,根据实际情况,对话框以及控件的安排如下图所示:

5.2对话框样式

对话框的创建后,在运用时要新建一个类来控制对话框的各种操作。

在本设计中定义为CNewDlg类,在对话框中的各个控件的定义都在该类的函数中实现。

 

5.5实现数据库连接

设计的实现采用了MFC类库的基类CDaoDatabase。

运用DAO实现与数据库的链接。

设计的具体步骤如下:

首先在stdafx.h中添加头文件#include,其次在对话框类中定义一个数据库指针变量CDaoDatabasem_db;将此变量放在protected型中。

然后在对话框的.cpp文件中利用m_db将数据库打开,此变量是一个指针类型。

要读取数据库中的数据必须再定义一个记录集变量CDaoRecordsetrs(&m_db);根据对本次系统的具体分析。

其实现的源程序如下:

m_db.Open(_T("D:

\\SolidWorks\\samples\\comuserdll\\part.mdb"));

CDaoRecordsetrs(&m_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中的系统型号字段的内容读入系统型号的组合框控件中,作为对话框程序的初始化。

数据库的连接在三个组合框控件都使用到。

每一个的原理都基本相似,下面介绍一下第一个组合框的具体实现。

说明:

第一个组合框的关联变量是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("型号1"))==0)//=0isstrisequalwith"型号1"

{

m_FSTPARTS.ResetContent(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1