




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用VB进行Solidworks二次开发的编程技巧与实现方法0. 引言Solidworks 是美国Solidworks公司基于Windows平台开发的著名的全参数化三维实体造型软件,其功能强大、性能优良,易学易用,同时solidworks 具有良好的开放性和兼容性。不仅可以向下兼容二维AutoGAD同时也可以与许多其它专业软件(如有限元分析软件Ansys、三维实体设计软件UG Pro/E等)无缝集 成为功能十分强大的CAD/GAE/CAM/PDM统,完全能胜任大型工程与产品的设 计、分析、制造和数据管理。当前,各类用户不仅在应用Solidworks 的强大功能进行各类专业设计,同时也在积极探索S
2、olidworks 的二次开发技术,力求扩展 Solidworks 的功能并使其用户化、专业化、本土化,以提高该软件的附加值与工作效率。本文通过实例介绍了Solidworks 二次开发中有关零部件绘制、插件生成及独立可执行文件生成过程中的编程技巧与实现方法。1. 三维设计VB 编程实现对于大多数三维软件使用者来说,主要是单纯的三维建模和装配。可是在实际的三维设计中经常会遇到不好解决的问题,比如频繁出现的尺寸不同但形状相似的零件, 齿轮等零件的曲线绘制等。如果想解决这样的问题就必须涉及到二次开发,使用编程可以使零件建模更加快捷或更加真实。但是对于大多数初学者而言,由于牵涉到许多solidwork
3、s API 底层命令的调用,不容易也不可能全面掌握。因此,利用宏命令进行相关部分的录制,在VB相关语法规则的约束下进行源代码的改写,用这种录制宏的方法可以快速得到solidworks 的操作命令,这比检索全英文的API 文档方便,从而有效提高了编程效率。宏录制的源代码不能直接运行,必须在VB编辑器中对制作的宏文件进行一些修改, 替换相关代码,删除冗余代码,这样的话录制的宏文件才可以得以顺利运行。关于这方面的文章很多,在此不再赘述。特别强调的是,对于Sub main 中出现的前七句代码(本文以新建一个文件为例,其他情况类似):Set swApp = Application.SldWorksswA
4、pp.ActiveDoc.ActiveView.FrameLeft = 0swApp.ActiveDoc.ActiveView.FrameTop = 0swApp.ActiveDoc.ActiveView.FrameState = 1swApp.ActiveDoc.ActiveView.FrameState = 1Set Part = swApp.NewDocument("D:Program 零件 .prtdot", 0, 0#, 0#)Set Part = swApp.ActivateDoc2(" 零件 1", False, longstatus)上述
5、创建方法与SW 勺安装位置有关联,因此使用下面三句通用的创建零件方法来替代这些代码:Set swApp = Application.SldWorksSet Part = swApp.NewPartSet Part = swApp.ActiveDoc通过对宏录制的源代码的修改与完善,便可以运行该宏文件。在运行过程中,通过编辑与修改指定命令与参数,便可以直观地了解到该命令与参数的所产生的实际效应,以利于方便地进行特定程序语句的获取与修改。在此过程中,特别强调的一点是,在指定可执行代码的行上设置断点以察觉某处存在的问题或是确认程序在该处的运行效果等,显得尤为有效与实用。接下来的任务就是在新建的 VB
6、程序中,创建窗体、引用相关文件、编写头文 件、参照宏录制源程序进行程序段的编写,从而可以便捷高速地实现编程目的。 2.插件生成VB创建solidworks 插件思想为,利用solidworks API的功能编制solidworks 插件,并集成到solidworks环境中,由solidworks程序进行配置与管理。 Solidworks插件是一个DLL文件,在用程序生成 DLL的过程中,首先必须定义 DLL文件与solidworks 链接的接口,其用到的接口函数为:SwAddin.ConnectToSW 和 SwAddin.DisconnectFromSW) 其中 SwAddin.Connec
7、tToSW1用户编制的程序 志solidworks程序入口函数;SwAddin.DisconnectFromSW是卸载当前插件的函 数。具体的插件创建过程流程图如图 1所示。特别强调的是,一定应先引用 "solidworks 2007 Type Library" 、"solidworks exposed Type Libraries For add-in Use"及"solidworks Consant Type Library"三个库文件,否则编译执行 时会出错2。的 HJ,LL门 Kiv新 Dt图1插件创建过程流程图(1)编写插件
8、创建程序过程中变量与函数定义语句Option ExplicitImplements SWPublished.SwAddinDim iSldWorks As SldWorks.SldWorksDim iCookie As LongDim iToolbarID As LongDim ii As LongDim bRet As BooleanDim doctype As Long其中 Implements SWPublished.SwAddin 语句为定义插件类;DimiCookie As Long 语句为定义 SolidWorks 的 iCookie。(2)建立solidworks链接关系的关键代
9、码Set iSldWorks = ThisSW"与 SW#立连接iCookie = Cookie"从 SWS至U cookiebRet = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me, iCookie)"定义菜单其中 Set iSldWorks = ThisSW代码的含义为与 SW®立连接;iCookie = Cookie 代码的意义是从 SWS至U cookie , bRet = iSldWorks.SetAddinCallbacklnfo(App.hInstance, Me, iCookie) 为
10、定义菜单语句。接下来便是定义工具条及相关属性设置的编程实现。( 3)建立程序的各功能代码建立各程序的功能过程,并在个过程编写相应代码,必须保证这些功能过程与菜单或工具栏命令定义功能过程的一致性。作为插件,最常用的功能便是在插件菜单中调用其他子菜单,该过程的代码为:Load UserForm1UserForm1.Show其中 UserForm1 为需加载或调用的菜单名。( 4)插件退出代码Dim bRet As BooleanbRet = iSldWorks.RemoveMenu(swDocPART, "SW 开发程序(&M) ", "")bRet
11、 = iSldWorks.RemoveToolbar2(iCookie, iToolbarID)Set iSldWorks = NothingSwAddin_DisconnectFromSW = True以上语句的含义为删除菜单及工具条,为插件退出做好准备。(5)编译生成DLL文件,在此基础创建solidworks插件。生成插件时可采用下列两种方法:直接打开与写注册表。其中在solidworks 中以插件文件类型直接打开方法由于受环境影响,不太稳定,通常采用的方法是注册表方法。具体的实现方法为:注册DLL文件;查找相关相互注册信息及设置插件信息。3. 结束语目前计算机辅助设计、制造领域的热点问
12、题是将参数化设计技术与CAM件二次开发技术相结合,根据具体产品设计需求对通用 CA面统进行专用化的研究与 开发,开发自主的CADS统已经变得非常必要。它能够极大地提高产品设计效率, 实现快速设计,提高产品竞争力。有关这方面技术的研究,国内外已经广泛地展开。 本文仅从三维建模编程实现、插件生成及过程中的编程技巧与实现方法方面做了初步的探讨,希望能为初学者提供一个有利的参考,提高其编程效率,避免少走弯路。Implements SWPublished.SwAddinDim iSldWorksDim iCookieDim iToolbarIDDim ii As LongDim bRetDim doct
13、ype As LongPrivate Function SwAddin_ConnectToSW(ByV al ThisSW As Object, ByV al Cookie As Long) As BooleanPrivate Function SwAddin_ConnectToSW(ByV al ThisSW As Object, ByV al Cookie As Long) As BooleanSet iSldWorks = CookiebRet = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me, iCookie)ii = iSldWor
14、ks.AddMenu(swDocPART, "SW 例子 (&G)", 5)ii = iSldWorks.AddMenuItem2(swDocPART, iCookie, "零件自动建模(&M)SW 例子 (&G)",1, "零件自动建模", "零件自动建模后", " 选择零件自动建模菜单")ii = iSldWorks.AddMenuItem2(swDocPART, iCookie, " 自 动 创 建 工 程 图 (&A)SW 例 子(&G)
15、", 2, " 自动创建工程图", "自动创建工程图后", "选择自动创建工程图菜单")doctype = swDocTemplateTypePARTiToolbarID = iSldWorks.AddToolbar4(iCookie, "SolidWorks 二 次 开 发 ", App.Path & "TOOLBAR_SMALL.bmp",App.Path & "TOOLBAR_BIG .bmp", 0,swDocTemplateTypePART
16、) End FunctionPrivate Function SwAddin_DisconnectFromSW() As BooleanEnd Function引言由于通用CAM件注重功能的全面性,几乎涵盖了制造业的方方面面,但是 专业针对性差,并不能很好地满足特定企业的设计要求, 所以在通用CAM件的 基础上,结合企业实际需要进行二次开发、已经成为CADR得实效的关键环节,甚至可以说,没有进行二次开发,实现用户化、本地化的CAM不能在真正意义 上发挥效能。通用CAD勺二次开发性能优劣,已经成为评价该CADa件的重要指 标,二次开发已经被视为第4代CA晾统的一个特色。CADT次开发的目的,在于
17、提高通用CAD的针对性,以便更好地满足企业设 计要求,更好地发挥CAD的效能。通过对CADt件的二次开发,可使CAM件实 现专业化、本地化。1 SolidWorks 简介SolidWorks 是美国 SolidWorks 公司开发的出色的三维参数化特征造型CA)软件,其技术内核基于先进的Parasolid 图形语言平台。SolidWorks 自从 1995年11月问世以来,已成为微机平台上的三维机械设计CADt件的主流产品,在企业中得到了广泛的应用。本文选用SoildWorks 作为系统开发平台,主要是基于 SolidWorks 在以下几方面的突出优点: 强大的参数化特征造型功能。SolidW
18、orks的参数化和特征造型技术,能方便、 快捷地创建几乎任何复杂形状的实体,可以满足绝大部分的工程设计的需要 ;SolidWorks 采用统一的内部数据库,全数据相关,任何一个功能模块中对零件的修改都会自动反映到其他模块中; 界面友好,操作简便。SolidWorks采用典型的Windows软件风格,在所 有的国外三维CAI)软件中提供了最优秀的中文支持; 拥有开放的体系结构。SolidWorks拥有丰富的第三方支持软件,提供了 开放的数据结构和方便的二次开发环境,为企业今后广泛的工程应用提供了良好 的基础平台; 优异的性能价格比。SolidWorks是一款中端CA晾统,企业使用 SolidWo
19、rks可以花较小的投人满足设计的要求,因此SolidWorks特别适合于中 小企业的产品设计。2 VB开发SolidWorks的参数化程序编制根据特定的设计要求,用VB对SolidWorks进行二次开发,创建SolidWorks 插件的一般方法是:在VB中创建ActiveX DLL工程,根据开发的具体功能要求 编制相应的程序代码和设计用户界面,并在工程中添加对SolidWorks类库的引用,将应用程序编译连接为 DLL文件。该文件在注册过以后,就可以作为 SolidWorks的插件使用了。用户可以根据具体的设计要求开发出若干插件,每 一个插件的功能又由至少一个菜单条嵌人到SolidWorks系
20、统中,每一个菜单条包括若干菜单项,每个菜单项对应一个功能模块。这样的层次体系反映了二次开 发程序编制的过程,也是一个自顶向下和自底而上结合的过程,先根据功能要求分析确定总体结构,再从底层各功能模块的程序编制开始实施。参数化程序的编制,就是要实现特定零部件的参数化设计, 并在SolidWorks 中建立专用设计环境。编程实现零部件参数化的方式有尺寸驱动法和程序驱动法 两种,在基于SolidWorks的二次开发中其程序编制方法是不同的。尺寸驱动法程序编制:由于尺寸驱动法通过修改CAD8统建模时自动生成的 设计变量来驱动零件,所以程序的代码非常简捷。SolidWorks在零件建模时,将根据建模的过程
21、自动创建设计变量,并给每个变量赋以相应的名称,尺寸驱动程序只需修改这些变量的值。这种程序的算法流程如图1所示。图1流程图以下是一段尺寸驱动法参数化程序的代码:Sub cmdl - Clirkl)Dim ifwApp As ObjectDim Parr As Db/ecrHhn !1 isihliA V I j*iVl.n: ii P nr t-t iii v J A5 I H,户 i'Vc(*rfWijrl* A|)Jmti* * *'创建酎东Srt :万n - nAfip ArTiMiWIF Pitn K N,i 卜:11nl.如累当前“兀中没有景涵文仲刑打开并激活格 定立件
22、% JVrl二S1W看乌Fj>ir4f"E; "动细零件驷 n. PftT” J由电鹏口鬲Irr - wAjjf:. MSwip、Tr<T M,前耕零华期一 MrH PRT*),如果生酊S山加修5中穗淮文异不是所需要上性则存出至 陶,猫后打肝押液活指定立朴皂!1/ Pkrx平工金< >Pan SewIm而tMtif-PLCfCii*明当前打产零件文件的名 然Sr: Pm - %力,MAjip OTir fWKsir '知T货近零件文件皿r«t- a?曲日q5dLE: 轶舒轴零件招 可口 PRT, 1 ,ft/*-higsr!ir
23、171;)Se: Parr -术淡_事,Acd ticjDdcfw UL由细零件用 正工中代广) Erm If'用多数是货计期最京俄.黎儆就小,心3等同用户或定 Z自尊图1也草图:等那备茅疣在建模总督中内加弼状拊 度”究工的*得Sui Dirjs:iijr= Fin 尺iraritljrLCl伽G田 L”:拄mEMS-、*£ jn二 dlSfr; Dimar»iotj= Pin P:tnrri«T("rC- 第匡 DSrrwtuH. 1*3 - c2Set EJinwAizii= P&rt. Pitfnritm,匕1面倒用 L"
24、:Lfcnimion. V5J jc 二出Fw.Edi出性山口 用新的密外交圾就IS建模型 hirt 导 2 “沁lanm/c尺寸驱动参数化通常处理形状结构相同但尺寸不同的零件,运行速度快,效率高,但一般缺乏变型设计能力,零件如有局部结构差异,则需另建模型进行驱 动,对于系统无法生成设计变量的参数也不能处理,而且这种方法对建模过程有严格的要求,必须生成与零件实际参数相应的设计变量,并且建模方法需与零件的设计要求相吻合。程序驱动法程序编制:程序驱动法直接通过程序调用 API对象绘制图形,图 形完全由程序生成,所以代码量大,程序编制难度较大,而且每次生成零件时都 需运行一次程序,速度不如尺寸驱动法快。但由于它可以处理非设计变量的参数, 具备变型设计的能力,所以往往用作尺寸驱动法的辅助手段。一个采用程序驱动法的程序,实际上就是一个绘图程序。其参数化的途径是 根据用户指定的值或程序计算出的值作为 API对象的函数变量的值,并按该值绘 制出图形。理论上这种方法可以进行所有零件的参数化驱动, 对于尺寸驱动法无 法处理的问题可以用该方法解决。以下是一段程序驱动法的程序代码:('art. rvcnSet叶拓入草图MtSwchK皿9 内岛 1 "OfJU I/llKNhU J.抵断矩形, 其中1,卜由催生给注In.CIfflfSpIfl-Twn "以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 流媒体技术考试题及答案
- 交通银行2025临沂市秋招面试典型题目及参考答案
- 农业银行2025大兴安岭地区秋招笔试专业知识题专练及答案
- 建设银行2025宜春市秋招笔试热点题型专练及答案
- 2025年3D打印的个性化定制
- 交通银行2025秋招英文面试题库及高分回答海南地区
- 2025行业消费者行为变化预测
- 农业银行2025南平市秋招笔试价值观测评题专练及答案
- 邮储银行2025三亚市秋招笔试性格测试题专练及答案
- 交通银行2025百色市小语种岗笔试题及答案
- 矿泉水定制合同协议
- 临床技术操作规范麻醉学分册
- 基于赋能理论的老年COPD稳定期患者慢病管理方案的构建及应用
- 中医护理常见穴位课件
- 《人工智能基础与应用-(AIGC实战 慕课版)》全套教学课件
- 医院 查对制度
- 消化道出血护理查房课件(完整版)
- 2024年同等学力申硕《英语》试题真题及答案
- 2024-2025学年重庆市九龙坡区五年级(上)期末数学试卷(含答案)
- 2024外墙喷涂机器人
- 《管理咨询实践》课件
评论
0/150
提交评论