SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 870|回复: 1
打印 上一主题 下一主题

基于SolidWorks的三维CAD系统二次开发方法

[复制链接]

8

主题

227

帖子

16

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
250
QQ
跳转到指定楼层
楼主
发表于 2007-11-11 11:58:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于SolidWorks的三维CAD系统二次开发方法
摘要:以SolidWorks2001为开发平台,结合VisualC 6.0和VisualBasic6.0这2种高级程序开发语言,提出了一种三维CAD二次开发方法.该方法避开了开发中的难点,减少了工作量,具有一定的参考价值
关键词: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),点击“下一步” 2.确定SolidWorks的安装路径,选取其他相应选项,点击“下一步” 3.输入插件名称以及描述,选取其他相应选项,点击“完成” 4.在工作区选择MyProresourcesToolbar,修改工具条大小图标;在文件MyPro.h和MyPro.cpp的Toolbarcallbacks部分添加或删除工具条执行函数 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.
2.2.2 建模等驱动程序
下面以创建一个0.20m×0.10m×0.05m的长方体为例:
1.启动MicrosoftVisualBasic6.0,在下拉菜单“文件”项选择“新建工程”,选择“标准EXE”,“确定”;
2.在窗体Form1上添加2个CommandButton,分别命名为“创建长方体”和“退出”;
3.双击命令按钮“创建长方体”,在函数Com mand1Click()内添加代码如下:
DimswAppAsObject 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()内添加代码如下: 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. [2]张淑珍.CAD系统二次开发方法的研究[J].西北纺织工学院学报,2000,14(2):173-175. [3]DavidJ.Kruglinski,ScotWingo,GeorgeShepherd,等.Visu alC 6.0技术内幕(第五版)[M].北京:北京希望电子出版社,1999. [4]EvangelosPetroutsos.VisualBasic6从入门到精通[M].北京:电子工业出版社,1999
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞11979 拍砖拍砖4670
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

13

主题

246

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
297
QQ
沙发
发表于 2007-11-11 12:01:02 | 只看该作者
看不太懂,
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2024-6-27 19:01 , Processed in 0.322877 second(s), 37 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表