关键词:SolidWorks;CAD;二次开发
CAD的应用目的是提高设计质量,传播和保存设计经验,提高设计效率,降低设计成本,提高设计管理水平等,目前国际和国内知名的CAD商品软件主要有Pro/Engineer,UGⅡ,I-Deas,SolidWorks,Au toCAD以及华正CAXA、高华CAD系统等.这些商品化的通用设计平台基本上覆盖了整个制造行业,但专业针对性差,不能满足各种各样具体领域的设计需求,在工程设计中难以达到CAD真正的应用目的.因此CAD的二次开发成为CAD技术推广应用过程中面临的主要问题之一.
CAD的二次开发是使商品化、通用化的CAD系统用户化、本土化的过程[1].商品化CAD系统一般都提供二次开发工具、开发语言等.但怎样才能达到使用方便、记忆量少、灵活的提示信息、良好的交互方式、良好的出错处理,对选择合理的二次开发方法是至关重要的.
1 二次开发的软硬件环境
1.1 硬件环境
微型计算机(微机)和工作站是应用最广泛的2种硬件平台,虽然工作站具有速度快、工作效率高、支持分布式计算和多任务进程等优点,但其操作复杂、价格昂贵.随着CPU速度的不断提高,图形处理能力的不断增强,微机平台已经能够满足CAD系统对硬件的要求[2].且由于其价格相对较低,及出现的一批基于微机的三维CAD软件,如Pro/Engineer,I-Deas,SolidWorks等,使微机得到了迅速的普及.故选择普通微机作为二次开发的硬件平台.
1.2 软件环境
1.Windows98,Windows2000或WindowsXP操作系统.
2.SolidWorks2001或更高版本的CAD软件系统.SolidWorks是基于Windows的CAD/CAE/CAM/PDM桌面集成系统,其核心技术是在Windows环境下开发而成,具有强大的实体建模功能和用户熟悉的Windows图形界面,开放性好,提供的应用编程接口API是基于OLEAutomation的编程接口,包含了大量的功能函数,可以被VisualBasic,VBA(Excel,Access,etc.),C,VisualC++,SolidWorksmacro或任何支持MicrosoftOLE(ObjectLinkingandEmbedding)技术的编程语言调用[1].
3.VisualC++6.0和VisualBasic6.0高级编程语言平台.
4.SolidWorks-API-SDK.
SolidWorks-API-SDK包含SolidWorksAPI例子、一个用于在VisualC++编程平台上建立Solid Works插件(Add-In-DLL)的动态链接库模板和ATL工程模板.
2 思路与实现方法
2.1 思路
SolidWorks提供了多种二次开发方法,每种方法都各有所长,如果能将他们的优点集中起来,必将达到良好的效果.故考虑用VisualC++开发SolidWorks插件和菜单,用VisualBasic开发建模、装配等驱动程序和人机交互界面,之间的逻辑关系如图1所示.
2.2 实现方法
2.2.1 插件
利用SolidWorks-API-SDK的DLL工程模板,开发SolidWorks的插件.具体方法如下:
1.启动MicrosoftVisualC++6.0,在文件下拉菜单选择“新建工程”,选取SolidWorksAdd-InApp Wizard,输入工程名(如MyPro)及位置(如e:mypro),点击“下一步”;#p#分页标题#e#
2.确定SolidWorks的安装路径,选取其他相应选项,点击“下一步”;
3.输入插件名称以及描述,选取其他相应选项,点击“完成”;
4.在工作区选择MyProresourcesToolbar,修改工具条大小图标;在文件MyPro.h和MyPro.cpp的Toolbarcallbacks部分添加或删除工具条执行函数;#p#分页标题#e#
5.在文件ExampleApp.cpp的函数voidCMyproApp::docCreateMenu(longDocumentType)中修改相应的菜单和子菜单命令,例如把
//addmenu
hres=pFrame->AddMenu(auT(“MyPro&App”),swMenuPosition,&bres);
//addmenuitem
修改为
//addmenu
hres=pFrame->AddMenu(auT(“齿轮设计(&G)”),swMenuPosition,&bres);
//addmenuitem
hres=pFrame->AddMenuItem(auT(“齿轮设计(&G)”),auT(“开始运行程序(&B)...”),swLastPo sition,auT(“mypro@MenuItemCBGuanli,齿轮设计程序运行”),&bres).
上面程序中,addmenu项为主菜单,即“齿轮设计(&G)”;addmenuitem项为子菜单,即“开始运行程序(&B)...”;“齿轮设计程序运行”是提示信息.
6.在文件MyPro.cpp的documentcallbacks部分修改菜单命令的执行函数;例如若建模等驱动程序为“D:myprogs.exe”,则可将原来的菜单命令执行函数voidMenuItemCB(void)
{
return;
}
修改为
voidMenuItemCB(void)
{
STARTUPINFOsi;
PROCESSINFORMATIONpi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
//Startthechildprocess.
CreateProcess(“D:myprogs.exe”,
””, //Commandline.
NULL,//Processhandlenotinheritable.
NULL,//Threadhandlenotinheritable.
FALSE,//SethandleinheritancetoFALSE.
0,//Nocreationflags.
NULL,//Useparent’senvironmentblock.
NULL,//Useparent’sstartingdirectory.
&si,//PointertoSTARTUPINFOstruc ture.
&pi);//PointertoPROCESSINFORMA TIONstructure.
return;
}
7.编译工程并注册生成动态链接库[3].
插件部分完成了图1中的a,b,c关系.尤其是函数CreateProcess的应用,实现了从菜单或工具条到建模驱动程序之间的连接,即图1中的关系c.#p#分页标题#e#
2.2.2 建模等驱动程序
下面以创建一个0.20m×0.10m×0.05m的长方体为例:
1.启动MicrosoftVisualBasic6.0,在下拉菜单“文件”项选择“新建工程”,选择“标准EXE”,“确定”;
2.在窗体Form1上添加2个CommandButton,分别命名为“创建长方体”和“退出”;
3.双击命令按钮“创建长方体”,在函数Com mand1Click()内添加代码如下:
DimswAppAsObject#p#分页标题#e#
DimPartAsObject
DimboolstatusAsBoolean
DimlongstatusAsLong
DimAnnotationAsObject
DimGtolAsObject
DimDatumTagAsObject
DimFeatureDataAsObject
DimFeatureAsObject
DimComponentAsObject
DimchangAsLong,kuanAsLong,gaoAsLong‘定义长、宽、高
chang=0.20 ‘为长赋值0.20m
kuan=0.10 ‘为宽赋值0.10m
gao=0.05 ‘为高赋值0.05m
SetswApp=CreateObject(“SldWorks.Applica tion”)
swApp.ActiveDoc.ActiveView.FrameLeft=0
swApp.ActiveDoc.ActiveView.FrameTop=0
swApp.ActiveDoc.ActiveView.FrameState=1
swApp.ActiveDoc.ActiveView.FrameState=1
SetPart=swApp.NewDocument(“C:ProgramFilesSolidWorksdataTemplates零件.prtdot”,0,0#,0#)
SetPart=swApp.ActivateDoc(“Part2”)
swApp.ActiveDoc.ActiveView.FrameState=1
Part.InsertSketch
Part.SketchRectangle-(chang/2),(gao/2),0,(chang/2),(gao/2),0,1
Part.FeatureExtrusion1,0,0,0,0,kuan,0,0,0,0,0,0,0,0,0
Part.ShowNamedView2“ 等轴测”,7
Part.ViewZoomtofit2
Part.SaveAs2“D:mypro长方体.SLDPRT”,0,False,False
Part.ClearSelection
SetPart=Nothing
swApp.CloseDoc“长方体”
这部分程序的开发,可用SolidWorks的宏功能,录制1个创建长方体的宏文件.由于宏录制的文件是VBA代码,所以,对其稍加修改就可移植到VisualBasic的程序代码中.这样明显降低了开发难度,加快了开发进程.
4.双击命令按钮“退出”,在函数Command2Click()内添加代码如下:#p#分页标题#e#
UnloadMe‘卸载窗体
5.在下拉菜单“文件”项选择“生成工程.exe”,输入文件名“D:myprogs.exe”,“确定”[4].(注意:此处路径与文件名必须与函数CreateProcess的第一个参数相同.)
该部分完成了图1中的d,e关系,实现了程序驱动的自动建模.
3 结语
所提出的二次开发方法避开了开发过程中的难点,减少了工作量,达到了开发目的.
1.直接利用MicrosoftVisualC++6.0中Solid Works插件模板,不需过多考虑动态链接库等编程方法,降低了开发难度.
2.用VisualC++的函数CreateProcess搭建了菜单与建模程序之间的关系.
3.开发建模程序时,参考SolidWorks的宏文件,明显减少了工作量.
参考文献
[1]王青,邬义志,夏冠华.三维CAD/CAM系统二次开发技术[J].江苏机械制造与自动化,2001,(4):183-185.#p#分页标题#e#
[2]张淑珍.CAD系统二次开发方法的研究[J].西北纺织工学院学报,2000,14(2):173-175.
[3]DavidJ.Kruglinski,ScotWingo,GeorgeShepherd,等.Visu alC++6.0技术内幕(第五版)[M].北京:北京希望电子出版社,1999.
[4]EvangelosPetroutsos.VisualBasic6从入门到精通[M].北京:电子工业出版社,1999
相关文章
- 2021-09-08全国专业技术人员计算机应用能力考试用书 AutoCAD2004
- 2021-08-30从零开始AutoCAD 2014中文版机械制图基础培训教程 [李
- 2021-08-30从零开始AutoCAD 2014中文版建筑制图基础培训教程 [朱
- 2021-08-30电气CAD实例教程AutoCAD 2010中文版 [左昉 等编著] 20
- 2021-08-30电影风暴2:Maya影像实拍与三维合成攻略PDF下载
- 2021-08-30高等院校艺术设计案例教程中文版AutoCAD 建筑设计案例
- 2021-08-29环境艺术制图AutoCAD [徐幼光 编著] 2013年PDF下载
- 2021-08-29机械AutoCAD 项目教程 第3版 [缪希伟 主编] 2012年PDF
- 2021-08-29机械制图与AutoCAD [李志明 主编] 2014年PDF下载
- 2021-08-29机械制图与AutoCAD [陶素连,周钦河 主编] 2013年PDF下