摘要:SolidWorks是一种非常优秀的三维机械设计软件,但是它缺少国家标准零件库,为机械设计工作带来了不便,
solidworks二次开发
。VB是一种简单易学,而且功能强大的高级编程语言,Access是一种容易使用,而且功能强大的数据库管理系统。SolidWorks提供了基于OLE自动化技术的API函数,可以使用VB为它进行二次开发。螺纹联接的国家标准数据可以使用Access来管理。使用VB为SolidWorks开发螺纹联接国家标准零件的专用模块,配合Access管理的国家标准数据,就可开发出针对SolidWorks的国家标准零件库模块。把模块编译成SolidWorks的插件,然后用菜单的方式挂到SolidWorks系统中,可以使螺纹联接国家标准零件模块的使用更加方便。关键词:标准零件 标准零件库 螺纹联接标准零件库二次开发 SolidWorksAbstract:The SolidWorks is a real fair 3D machine design software, But it be in defect of the Lib of the national standard parts, that works to bring for machine design very inconvenient. VB is a easily study, and powerful computer high class language, Access is an easy usage, and powerful DBMS. The SolidWorks provided mass API functions base the OLE Automation technique, Can be use the VB to development two times for it. The national standard data of the thread linker can use the Access to manage. Can be use the VB develop the Lib of the national standard parts of thread linker for SolidWorks, and the National standard data that manage by Access, Can develop the appropriation molds of the Lib of the national standard parts of thread linker for SolidWorks. Let the appropriation molds edit and translate it be the Add-ins of the SolidWorks, then use the menu to hang in the SolidWorks system, and can make the Lib of the national standard parts of thread linker more convenient.Key words:The standard parts; The Lib of the standard partsThe Lib of the national standard parts of thread linker;Two times development; SolidWorks第一章 绪论1.1SolidWorks系统简介目前,在我国的CAD市场上比较流行的三维CAD软件有SolidWorks、MDT、UG、Pro/E SolidEdge 等。但就价位来讲SolidWorks、MDT、SolidEdge是中低档价位的产品,UG、Pro/EIDEAS是高中档价位的产品。SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,是美国SolidWorks公司在总结和继承了大型机械CAD软件的基础上,在Windows环境下实现的第一个机械三维CAD软件,于1995年11月研制成功。它全面采用非全约束的特征建模技术,其设计过程全相关性,可以在设计过程的任何阶段修改设计。同时牵动相关部分的修改。它即提供自底向上的装配方法,同时还提供自顶向下的装配方法。自顶向下的装配方法使工程师能在装配环境中参考装配体的其他零件的位置及尺寸设计新的零件,更加符合工程习惯。它具有独创性的“封装”功能,可以分块处理复杂的装配体。具有产品配置功能,为用户设计不同构性的产品。它集成了设计、分析、加工和数据管理过程,所获得的分析和加工模拟结果成为产品模型的属性,在SolidWorks的特征管理器中清晰的列出了详细的数据信息。它还可以动态模拟装配过程,进行静态干涉检查、计算质量特征,如质心、惯性矩等。它将2D造型绘图与3D造型技术融为一体,能自动生成零件尺寸、材料明细表(BOM)、具有指引线的零部件编号等技术资料,从而简化了工程图样的生成过程。同时有中英文两种界面可以选择,其先进的特征树结构使操作更加简便和直观。具有交好的开发性接口和功能扩充性。能轻松实现各种CAD软件之间的数据转换传送。目前,SolidWorks的全球用户超过20万,国外大多数制造公司招聘时都要求应聘人具备操作SolidWorks的能力。国际上很多一流的名校都将SolidWorks定为大学本科学生的必修课,如麻省理工学院、英国剑桥大学等。95%的西方企业要求员工回运用SolidWorks软件,SolidWorks连续几年被美国一些杂志评为优秀的CAD软件。但是SolidWorks也并非十全十美,不可能满足特定企业的特殊要求。例如,由于该软件是外国人写的,不适合中国的国标,如标题栏、明细表、放大图的标注、剖视图的标注、装配图的序号等。也没有适合我国国标的标准件库。因此,为了适应特定企业的特殊要求,形成企业自己的特色,使SolidWorks在我国的企业中有效的发挥作用,并使常用的或是重复的任务自动化,提高效率,就必须对其进行本土化和专业化的二次开发工作。摘要:SolidWorks是一种非常优秀的三维机械设计软件,但是它缺少国家标准零件库,为机械设计工作带来了不便。VB是一种简单易学,而且功能强大的高级编程语言,Access是一种容易使用,而且功能强大的数据库管理系统。SolidWorks提供了基于OLE自动化技术的API函数,可以使用VB为它进行二次开发。螺纹联接的国家标准数据可以使用Access来管理。使用VB为SolidWorks开发螺纹联接国家标准零件的专用模块,配合Access管理的国家标准数据,就可开发出针对SolidWorks的国家标准零件库模块。把模块编译成SolidWorks的插件,然后用菜单的方式挂到SolidWorks系统中,可以使螺纹联接国家标准零件模块的使用更加方便。关键词:标准零件 标准零件库 螺纹联接标准零件库二次开发 SolidWorksAbstract:The SolidWorks is a real fair 3D machine design software, But it be in defect of the Lib of the national standard parts, that works to bring for machine design very inconvenient. VB is a easily study, and powerful computer high class language, Access is an easy usage, and powerful DBMS. The SolidWorks provided mass API functions base the OLE Automation technique, Can be use the VB to development two times for it. The national standard data of the thread linker can use the Access to manage. Can be use the VB develop the Lib of the national standard parts of thread linker for SolidWorks, and the National standard data that manage by Access, Can develop the appropriation molds of the Lib of the national standard parts of thread linker for SolidWorks. Let the appropriation molds edit and translate it be the Add-ins of the SolidWorks, then use the menu to hang in the SolidWorks system, and can make the Lib of the national standard parts of thread linker more convenient.Key words:The standard parts; The Lib of the standard partsThe Lib of the national standard parts of thread linker;Two times development; SolidWorks第一章 绪论1.1SolidWorks系统简介目前,在我国的CAD市场上比较流行的三维CAD软件有SolidWorks、MDT、UG、Pro/E SolidEdge 等。但就价位来讲SolidWorks、MDT、SolidEdge是中低档价位的产品,UG、Pro/EIDEAS是高中档价位的产品。SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,是美国SolidWorks公司在总结和继承了大型机械CAD软件的基础上,在Windows环境下实现的第一个机械三维CAD软件,于1995年11月研制成功。它全面采用非全约束的特征建模技术,其设计过程全相关性,可以在设计过程的任何阶段修改设计。同时牵动相关部分的修改。它即提供自底向上的装配方法,同时还提供自顶向下的装配方法。自顶向下的装配方法使工程师能在装配环境中参考装配体的其他零件的位置及尺寸设计新的零件,更加符合工程习惯。它具有独创性的“封装”功能,可以分块处理复杂的装配体。具有产品配置功能,为用户设计不同构性的产品。它集成了设计、分析、加工和数据管理过程,所获得的分析和加工模拟结果成为产品模型的属性,在SolidWorks的特征管理器中清晰的列出了详细的数据信息。它还可以动态模拟装配过程,进行静态干涉检查、计算质量特征,如质心、惯性矩等。它将2D造型绘图与3D造型技术融为一体,能自动生成零件尺寸、材料明细表(BOM)、具有指引线的零部件编号等技术资料,从而简化了工程图样的生成过程。同时有中英文两种界面可以选择,其先进的特征树结构使操作更加简便和直观。具有交好的开发性接口和功能扩充性。能轻松实现各种CAD软件之间的数据转换传送。目前,SolidWorks的全球用户超过20万,国外大多数制造公司招聘时都要求应聘人具备操作SolidWorks的能力。国际上很多一流的名校都将SolidWorks定为大学本科学生的必修课,如麻省理工学院、英国剑桥大学等。95%的西方企业要求员工回运用SolidWorks软件,SolidWorks连续几年被美国一些杂志评为优秀的CAD软件。但是SolidWorks也并非十全十美,不可能满足特定企业的特殊要求。例如,由于该软件是外国人写的,不适合中国的国标,如标题栏、明细表、放大图的标注、剖视图的标注、装配图的序号等。也没有适合我国国标的标准件库。因此,为了适应特定企业的特殊要求,形成企业自己的特色,使SolidWorks在我国的企业中有效的发挥作用,并使常用的或是重复的任务自动化,提高效率,就必须对其进行本土化和专业化的二次开发工作。SolidWorks 系统具有如下的特点:(1) 具有独特的特征管理员,提供的特征管理员设计历史树同具体的实体模型是实时的动态联接;(2) 具有强大的实体建模功能和直观的Windows 用户界面;(3) 支持Windows 的DDE 机制和OLE 技术;(4) 支持Internet 技术,可以共享设计数据; (5) 双向关联的尺寸驱动机制;(6) 提供了VB ,VC + + 和其他支持OLE 的开发语言接口;(7) 给基于Windows 的桌面集成赋予了新的含义。它以Windows 为平台,集成了动态仿真软件(Motionworks) 、工程分析软(CosMo- SolidWorksorks) 、数控加工软件(SurfCAM) 、以及工程数据管理软(SmarTeamWorks) 等,使它们成为SolidWorks 家族中的一员。这些软件的数据可以相互传递共享。而且SolidWorks 公司还设有网上站点,可方便用户快速了解此系统的最新发展情况,或获得最新的技术支持。 造型功能SolidWorks 提供了新一代的造型功能,它包括了草图和实体,参数化特征造型技术。提供丰富的基本特征,并且提供用户自定义特征的功能。SolidWorks支持强大的三维参数化设计功能,可以方便地在设计的任何阶段修改零件. 绘图功能工程绘图系统Drawing 主要用于三维模型的工程图纸绘制与输出,可同时编辑多张图纸。当设计人员建图纸文件时,可以将PART 文件上的特征历史树的总结点用鼠标点取移动到图纸文件上,图纸文件上自动生成三视图。绘制的图纸上可以自动标注尺寸信息。图纸与模型是相互关联的,当模型上的尺寸或造型变化时,图纸也相应改变。视图包括标准视图、投影视图、一般视图、局部视图以及剖面视图,是零件或装配体在图纸上的某种形式的投影。在视图上可以增加或删除符合国标的工程标注。本系统随时维护三维模型与二维绘图的一致性。注释及辅助线段、圆注释和辅助的线段、圆用于给图纸增加一些视图中未给出的信息,如加工注意点、材料选择等。 装配功能SolidWorks 中装配的功能是由用户指定装配体中各零件之间的装配约束关系,将零件装配成装配体。装配系统不但可以将零件装配起来,也可以读入已经装配好的装配体,作为子装配体进行装配;子装配体在装配过程中可以视为一个整体,等效于一个零件。SolidWorks 可以模拟仿真装配的全过程。二次开发虽然SolidWorks 所提供的功能非常强大,但要使其在我国企业中真正发挥作用,就必须对其进行本地化、专业化的二次开发工作。为了方便用户进行二次开发,SolidWorks提供了几百个API函数,这些API是SolidWorks的OLE或COM接口.用户可以使用高级语言对其进行二次开发,建立适合用户需要的、专用的SolidWorks功能模块。SolidWorks 是一个非常开放的系统,提供了VB ,VC + + 和其他支持OLE 的开发语言接口。提供给用户必要的工具(宏语言、库函数等) 以开发个人化的应用模块,并且易于将它集成到系统中去。用VB 或VC + + 调用SolidWorks 的API 函数,可以完成零件的建造、修改;零件各特征的建立、修改、删除、压缩等各项控制;零件特征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各种几何和拓扑信息;零件的装配信息;零件工程图纸中的各项信息;还可在SolidWorks主菜单上增加按钮,将自己开发的应用模块嵌入到它的管理系统中。基本装配命令零件的建模完成后,即可进行零件的装配,先调用swApp 中的NewAssembly 函数新建一个空白装配文档,再通过调用AssemblyDoc 中的AddComponent 函数插入零部件:AssemblyDoc.AddComponent (compName ,x , y , z)compName 表示要加入组件的路径及名称; x ,y , z 表示组件在装配文档中放置的位置。插入配合调用AssemblyDoc 中的AddMate 函数:AssemblyDoc.AddMate (mateType ,align ,flip ,dist ,angle)用mateType 控制配合类型,可取下列值:0 (重合) 、1 (同轴心) 、2 (垂直) 、3 (平行) 、4 (相切) 、5 (距离) 、6 (角度) ;align 控制两配合面的方向,0 (同向对齐) 、1 (反向对齐) 、2 (最近处) ;flip 为TRUE 时表示延缓配合; dist 控制mateType 为5 时的距离; angle控制mateTyp 为6 时的角度。添加菜单为了操作方便,把生成标准件的功能挂到Solidworks 装配环境的菜单和工具栏上,在菜单上的提示为各标准件的名称,在工具条上的提示则为图标,用户要插入某个标准件时,只需在菜单或工具条上进行选择,然后由开发的程序调用相应的标准件功能模块。Solidworks 的SldWorks 对象,为VB 对Solidworks 工作环境进行访问处理提供了接口。通过此对象可以对Solidworks工作环境添加菜单、删除菜单、添加工具条、打开文件、新建文件、退出Solidworks 系统等功能,这里主要是通过使用SldWorks 对象的Addmenu 和Addmenuitem 方法来在Solidworks工作环境中添加菜单和下拉子菜单及功能模块的调用;通过使用SldWorks 对象的Addtoolbar 和AddToolbarCommand 方法来完成在Solidworks 工作环境中添加工具条和完成对应标准件功能模块的调用。Implements SWPublished.SwAddinDim iSldWorks As SldWorks.SldWorksDim iCookie As LongbRet = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me, iCookie)bRet = iSldWorks.AddMenu(swDocNONE, "螺纹联接(&L)", 3)bRet = iSldWorks.AddMenuItem2(swDocNONE, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1, "LS_Item", "LS_ItemUpdate", "螺栓标准件库")bRet = iSldWorks.AddMenuItem2(swDocPART, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1, "LS_Item", "LS_ItemUpdate", "螺栓标准件库")关于菜单插件的具体具体实现方法将在后面谈到。3.2.2数据库GB数据库是系统数据存储和管理中心,GB标准体现为数据表格,为了简约表达数据间的复杂关系,其表格往往都不是简单的二维表格。而现在流行的关系性数据库管理系统都是以简单的二维数据表基础。将GB数据成功导入数据库,并体现数据间的关系,是本次设计成功的关键,也是研究重点未来扩展的GB库在现行系统中其实并不存在该库,这是对数据库中的现有数据组织上的要求。优秀的数据组织方式和存储结构,可以降低程序代码的难度,优化程序的结构。同时使将来数据的扩充或是修改成为可能。3.2.3资源文件图片文件作为Windows系统下的图形用户界面应用程序,适当的图形图象说明是必须的。该部分是独立于程序主体的,以文件的形式存储在特定的目录里,当系统运行时自动调用。模板文件生成标准模型并不需要每次实时造型,而应该是为每种零件生成模板文件,最后选择需要的零件型号数据,驱动模板文件重新建模。生成模型文件与模板文件几何约束相同,尺寸约束相似。该部分是独立于程序主体的,以文件的形式存储在特定的目录里,当系统运行时自动调用。SolidWorks和最终零件文件系统通过OLE技术,和SolidWorks通信,SolidWorks打开指定的模板零件文件,并按照系统传递的参数修改模板零件文件的尺寸,最后重新建模,生产新的零件文件。综上,本螺纹联接标准件库系统将分解成以下几个部分:1、系统主体和用户界面,包括标准应用程序和SolidWorks菜单;2、标准件GB数据库,包含了螺纹联接标准件的GB数据;3、标准件模板零件文件库,包含了每个类型的标准零件的模板文件。以上几个部分的具体设计将在后面谈到。到此,系统完成了全部规划过程。第四章系统主体和用户界面的建立在VB中新建Active DLL工程,如图4.5,并把标准EXE程序的窗体文件和其他模块等添加到Active DLL工程,然后为工程添加一个类模块,内容如下:Make sure that a reference to the swpublished.tlb type library exists同图2.3一样,为Active DLL工程引用swpublished.tlb库文件,'Tell VB that you are going to provide functionality for the SwAddin interface为Active DLL工程获得SolidWorks对象,Implements SWPublished.SwAddinDim iSldWorks As SldWorks.SldWorksDim iCookie As Long'Implementation methods of the SwAddin interfacePrivate Function SwAddin_ConnectToSW(ByVal ThisSW As Object, ByVal Cookie As Long) As BooleanDim bRetAs Boolean' store reference to SW sessionSet iSldWorks = ThisSW' store cookie from SWiCookie = Cookie'Inform. SW about the object that contains the callbacksbRet = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me, iCookie)'Add a menu item on the frame. when no documents are presentbRet = iSldWorks.SetAddinCallbackInfo(App.hInstance, Me, iCookie)'Add a menu item on the frame. when no documents are presentbRet = iSldWorks.AddMenu(swDocNONE, "螺纹联接(&L)", 3)没有文档的时候显示的菜单,使用AddMenuItem2方法,其中,"LS_Item", "LS_ItemUpdate",是两个函数,见后面,bRet = iSldWorks.AddMenuItem2(swDocNONE, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1, "LS_Item", "LS_ItemUpdate", "螺栓标准件库")打开或是新建零件文档的时候显示的菜单,bRet = iSldWorks.AddMenuItem2(swDocPART, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1, "LS_Item", "LS_ItemUpdate", "螺栓标准件库")后面还有螺柱、螺钉、螺母和垫圈,和螺栓一样,故省略,工程
《solidworks二次开发》()。SwAddin_ConnectToSW = TrueEnd Function图4.5卸载插件时删除菜单,主要使用RemoveMenu方法。Private Function SwAddin_Di
sconnectFromSW() As BooleanDim bRetAs Boolean'Remove any UI that was added earlier删除先前添加的菜单,bRet = iSldWorks.RemoveMenu(swDocNONE, "螺纹联接(&L)", "")bRet = iSldWorks.RemoveMenu(swDocPART, "螺纹联接(&L)", "")Set iSldWorks = NothingSwAddin_DisconnectFromSW = TrueEnd FunctionLS_Item函数,这里是打开窗体入口,如本列,在这里加载螺栓标准件的的第一个窗体:frmLS_Slt窗体,Public Sub LS_Item()frmLS_Slt.ShowEnd SubLS_ItemUpdate函数,用于控制菜单的状态,在本次设计中定义了Long 型的LS_MnuSts公共变量,系统加载的时候,使LS_MnuSts=1,加载了frmLS_Slt后,使LS_MnuSts=2,当frmLS_Slt正常退出后,使LS_MnuSts=1,这样就可以使同一模块不能重复加载,以避免同一模块前后窗体的数据不一致或是前后干扰等,如图4.6。图4.6Public Function LS_ItemUpdate() As Long'Return the state information for the menu item'0 - Disabled and unchecked'1 - Enabled and unchecked (default when update routine does not exist)'2 - Disabled and checked'3 - Enabled and checkedLS_ItemUpdate = LS_MnuStsEnd Function最后,将Active DLL工程编译为一个DLL文件,就可以使用本小节前面的方法,在SolidWorks中加载并运行了,同一个DLL文件只需要加载一次就可以了,如图4.4。需要卸载或是重新加载,只需要按照图4.2操作就可以了。
受力分析模块的工作原理Private Sub cboCL_Click()strMaterial = cboCL.TextcboQD.ClearDim txtSQL As StringDim MsgTxt As StringDim rst As ADODB.Recordset根据选择的材料列出强度级别txtSQL = "select 强度级别 from 螺栓材料 where 螺栓材料 = '" & strMaterial & "'"Set rst = ExecuteSQL(txtSQL, MsgTxt)cboQD.Text = rst("强度级别").ValueDo Until rst.BOF Or rst.EOFcboQD.AddItem rst("强度级别").Valuerst.MoveNextLooprst.Close小径 d1的计算公式(式-1)S= 1 或 1.3 由受力情况而定Fa总拉力。PI= 3.1415926……cgm = Sb / SpSp = Val(cboSp.Text)Sb = Val(rst("屈服极限").Value)螺栓总拉力 Fa = Fe + Fr 或者是(式-2)Fe'工作载荷Femin'最小工作载荷Fo'预紧力Fr'残余预紧力Fa'总拉力工作拉力和残余预紧力一起作用在螺栓上,所以螺栓总拉力为工作载荷与残余预紧力之和。考虑的相对刚度,总拉力可以表达为预紧力加上部分工作载荷。针对四种受力情况,分别选择,输入工作载荷,按情况选择预紧力和残余预紧力选择材料,强度级别,安全系数就可以计算出需要的零件的尺寸数据,然后就可以从受力分析与校核模块转到标准件模块。5.2.1基于ADO技术的数据库访问模块。Option Explicit参数SQL传递查询语句;MsgString传递查询消息;ExecuteSQL函数自身以一个的形式返回Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset定义连接Dim conn As ADODB.Connection定义数据集Dim rst As ADODB.Recordset定义字符串数组Dim STokens() As String出错处理On Error GoTo ExecuteSQL_Error使用Split函数产生一个包含各个子串的数组STokens = Split(SQL)打开连接Set conn = New ADODB.Connection参数ConnectString是一个函数,返回连接字符串参数,在后面将谈到conn.Open ConnectString判断字符串中是否有指定的内容If InStr("insert,delete,update", UCase$(STokens(0))) Then执行查询语句conn.Execute SQL返回查询消息MsgString = STokens(0) & "query successful"Else创建数据集对象Set rst = New ADODB.Recordset返回查询结果rst.Open Trim$(SQL), conn, adOpenKeyset, adLockOptimistic返回记录集对象Set ExecuteSQL = rstMsgString = "查询到" & rst.RecordCount & "条记录"End IfExecuteSQL_Exit:清空数据集对象Set rst = Nothing终端连接Set conn = NothingExit FunctionExecuteSQL_Error:错误类型判断MsgString = "查询错误:" & Err.DescriptionResume ExecuteSQL_ExitEnd Function连接字符串函数,Public Function ConnectString() As String返回一个数据连接ConnectString = "driver={Microsoft Access Driver (*.mdb)};pwd=;dbq=" & App.Path & "\Res\Data.mdb"End Function将上面的代码作为一个公共模块添加在工程中。上面的代码是正确无误的,并且对任何关系形数据库都是通用且有效的。在工程的任何地方都可以调用该函数,这样可以极大的提高代码的效率,同时降低了代码的调试难度。用下面的方式就可以访问数据库了,建立SQL语句变量Dim txtSQL As String建立返回消息变量Dim MsgTxt As String建立记录集变量Dim rst As ADODB.Recordset为SQL语句变量赋值txtSQL = "select 表名称 from 六角螺栓"调用ExecuteSQL函数,执行查询,并接收记录集Set rst = ExecuteSQL(txtSQL, MsgTxt)操作记录集对象rst,cmb.Text = rst("表名称").ValueDo Until rst.BOF Or rst.EOFcmb.AddItem rst("表名称").Valuerst.MoveNextLoop操作完成后关闭记录集,释放资源rst.Close5.2.2将GB数据表导入到数据库中Access的数据模型为关系数据模型,物理上体现为简单的2D数据表,而GB数据表为了简约表达数据以及数据之间的复杂关系,往往不会是简单的2D数据表。将GB数据导入到数据库中,就需要考虑到如何合理的将GB数据表拆分为简单的2D数据表,并且表达出表之间的关系。以螺柱的GB数据表导入数据库为例说明GB数据表的拆分和数据库中表的建立。图5.3
螺柱的GB数据表包括了螺柱的基本参数、螺柱的L系列和螺柱的L与B的关系三个部分,将这些数据导入到数据库中,就应该将它们分成三张表来存放,分别是“双头螺柱”、“螺柱L系列”、“螺柱LB关系”,如图5.3、5.4。
图5.4由于螺柱L系列中部分数据不要求尽可能不使用,也就是其中有括号的数据,在设计表的时候,就可以建立两个字段,分别是L,Lshow,L字段的数据类型是单精度数字,用来参与计算和后面的驱动造型,Lshow是字符型,在用户选择时用来显示给用户看,让其了解那些是尽量不要选择的,而即使用户选择了带有括号的Lshow值,系统只要将其对应的L值读取就可以了。对螺柱标准件长度L的选择,和对应螺纹高度B的选择,其实现代码如下:将L,Lshow从“螺柱L系列”中查询出来,条件是要满足L的值应该属于在“双头螺柱”中选定规格的螺柱的 [Lmin,Lmax] 这个区间,该区间是在前面选择螺柱规格的时候就被查询出来了的。txtSQL = "select L,Lshow from 螺柱L系列 where L >=" & Lmin & " and L <= " & Lmax & ""Set rst = ExecuteSQL(txtSQL, MsgTxt)
n = rst.RecordCountReDim l(n)cmbl.Text = rst("Lshow").Valuei = 0Do Until rst.BOF Or rst.EOF将满足条件的Lshow值添加到下拉框cmbl中,供用户选择cmbl.AddItem rst("Lshow").Value将满足条件的L值存放的数组L中l(i) = rst("L").Valuei = i + 1rst.MoveNextLoop当用户选择了L后,就可以执行下面的代码,用来查询对应的B值,将Lmin,Lmax,b从“螺柱LB关系”中查询出来,条件是前面选择的螺柱规格的公称直径LZ_d txtSQL = "select Lmin,Lmax,b from 螺柱LB关系 where d = " & LZ_d & " order by b asc"Set rst = ExecuteSQL(txtSQL, MsgTxt)Do Until rst.EOFLmin = rst("Lmin").ValueLmax = rst("Lmax").Value如果L大于Lmax,就比较下一条。If LZ_l > Lmax Thenrst.MoveNextElseB的值从“螺柱LB关系”表中查询出来了LZ_b = rst("b").ValueExit DoEnd If上面只是以螺柱为例,简单的说明数据库的设计和建立的方法,并并分析了用代码如何实现查询工作。下面将分析整个螺纹联接标准件库各类零件的数据之间的关系,以及数据表的物理结构。5.2.3完成全部数据的导入不同类型标准零件的数据表结果,部分相似,如图5.5。图5.5
螺纹联接螺栓、螺柱、螺钉、螺母和垫圈五大类零件,从外型结构上看,相互差异较大,但它们都有公称直径或是螺纹规格这个字段,因此,我们应该将所有的零件基本参数表的前两个字段创建为一致的数据类型,甚至是相同的字段名称。如此在任何零件的查询中基本上就可以使用相同的代码,这样就可以使代码可重用,提高代码的书写效率,同时也可以降低代码的调试难度,因为各个地方的代码结构一致,只要将任意一个地方的代码调试正确,其他地方代码复制就可以了,如图5.5。图5.6同一类型的零件的数据表,其数据结构一致,同时还要保证它们的字段名称也一致,这样,就可以在不对代码作出任何修改的情况下,扩充数据库,如前面所谈到的在系统结构中的未来的GB数据。如图5.6。第六章 标准件模板零件库的建立6.1标准件模板零件库概述对于一个设计对象,参数十分复杂,而且数量庞大。而独立变化的参数一般只有几个,称之为主参数或者主约束,其他可以由图形结构特征确定或者与主参数有确定关系的参数称为次约束。参数化设计的核心是一种驱动机制即参数驱动机制。当把参数化模型确定下来以后,为了实现界面关键参数(主参数)对参数化模型的控制,必须建立界面参数和参数化模型中的底层参数(次约束)之间逻辑上或者数值上的关系,称之为参数驱动机制。通过参数驱动机制,可以对图形的几何数据进行参数化修改。参数化设计主要有程序驱动法和尺寸驱动法两种,程序驱动法是将设计过程的所有关系式融入应用程序中,然后在程序的控制下,顺序执行这些设计表达式,通过与用户的交互完成设计工作,这一方法的主要特点是:如果要修改图形;一般要重新运行一遍应用程序,当应用程序输入不同值,便生成不同的图形;尺寸驱动是指在保持零件结构不变的情况下,将零件的尺寸标注视为变量,给予不同的尺寸值,便能获得一系列零件。外型相同而尺寸不同的相似零件,它允许用户在定义一个典型零件时,不必考虑零件中几何元素的准确位置,而只需保证其拓扑结构正确,同时进行必要的尺寸参数标注,通过尺寸参数值的变化来生成结构相同而参数不同的零件族,它在零部件的重新生成与修改方面显
示出极大的方便性。因此,本系统采用尺寸驱动法,不用重复图形的生成过程,程序代码量少,便于获得系列化零件图形。每一种标准件按要求不同,有一组或多组尺寸系列,但同一种标准件结构基本相同。据此,在标准件建库过程中,采用参数化方法。其基本思想是:开发人员在SolidWorks环境中,任意选定一个比较方便绘图的零件型号尺寸,按照正确的设计关系(包括几何约束和尺寸约束)绘制标准件的模型,当需要生成某一规格的标准件时,可根据用户给定的相关约束变量参数值,对已定义好的标准件模型的相应约束关系进行修改与求解,使几何元素和特征的几何或拓扑信息发生改变,并引起相关图形元素及关系的联动,生成所需要的零件。6.2标准件模板零件库的建立标准件模板零件库:是参照国家标准,利用SolidWorks的特征造型技术建立的三维零件库。每一种标准件按要求不同,有一组或多组尺寸系列,但同一种标准件结构基本相同。每一种形状的标准零件均建立一个模型,并在造型的过程中完成对标准件图形的几何约束和尺寸约束定义,同时对需要尺寸驱动的特征尺寸定义相应的变量(名字),以便程序访问,实现尺寸的驱动。该库中储存的并不是带有具体几何数据的实体模型,而是标准件的概念模型,即描述标准件的几何形状的信息。其主要包括以下内容:1、标准件的几何约束关系描述。利用水平、垂直、正交、相切、同心、平行等几何关系(即拓扑关系)来定义标准件的几何形状,从而得到标准件的几何约束关系描述。2、标准件的几何特征参数名。此参数名应与标准件特征性规范中特性名相吻合。一旦确定后,在整个使用过程中应前后保持一致。3、标准件的几何特性参数关系描述。定义标准件的各个特征要素的基本尺寸之间的参数关系。4、零件构形特征和构形过程描述。对某一类标准件进行分析、抽象出用特征造型方法构造零件时所用的特征类型,是零件建库的一项重要工作,零件构形过程描述包括造型的操作步骤,操作类型和每步操作所参与的特征引用位置。构形过程并不是构造某一标准件具体的实体模型,而是通过 程序+变量 的方法来记录标准件建模的过程,从而建立它的概念模型。即通过CAD软件本身的API函数,利用特征造型技术,采用上面定义的标准件的尺寸参数名和尺寸参数关系来描述一个实体模型。按照构形的过程,将具有特定参数的构形特征一步步构造出来,即完了标准件的生成。任意选定一个比较方便绘图的零件型号尺寸,按照正确的设计关系(包括几何约束和尺寸约束)绘制标准件的模型,如图6.1,以M36螺栓为例。图6.1M36螺栓的尺寸较为方便,在造型过程中,对全部的几何关系进行全约束。利用水平、垂直、正交、相切、同心、平行等几何关系(即拓扑关系)来定义标准件的几何形状,从而得到标准件的几何约束关系描述。标注尺寸的时候,从螺栓的数据表中,选择定一个特定的型号的尺寸参数来标注。
模型建立好了后,在模型中应该尽量使用尺寸链和方程,定义标准件的各个特征要素的基本尺寸之间的参数关系。同时修改每一个标注的几何特征参数名为零件的尺寸代号,使该名称和程序中驱动修改的变量名称一致,如图6.2,d@草图4,其中的d就是螺栓的公称直径。图6.2成功建立了模板文件,对模型的全部的几何关系进行全约束,为每一个特征参数进行了命名后,就可以在程序代码中,打开该模型文件,并修改特征参数,最后重新建模,就可以生成选顶尺寸的特定零件文件了。下面的代码将简要说明这个过程。打开模板文件Set Part = swApp.NewDocument(App.Path + "\Res\六角螺栓.SLDPRT", 0, 0, 0)省略部分代码选择 d@草图4 这个尺寸标注boolstatus = Part.Extension.SelectByID("d @草图4@" + fileName + ".SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing)修改d@草图4 的值为LS_d / 1000 ,LS_d就是程序中螺栓的公称直径变量,系统运行时将为它赋值Part.Parameter("d @草图4").SystemValue = LS_d / 1000还有其他的尺寸标注,省略重新建模Part.EditRebuild这样就生成了一个用户选定类型与尺寸的特定标准零件。其他标准件的模板文件和螺栓基本一致,用上面的方法建立后,就建立起了模板零件库系统。