Solidworks二次开发入门教程_第1页
Solidworks二次开发入门教程_第2页
Solidworks二次开发入门教程_第3页
Solidworks二次开发入门教程_第4页
Solidworks二次开发入门教程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Solidworks二次开发入门教程连载4:运用VB语言实现二次开发VB简述 Visual Basic(简称为VB)是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富

2、的应用软件系统。随着版本的提高,Visual Basic的功能也越来越强。5.0版以后,Visual Basic 推出了中文版,与前个版本相比,其功能有了很大提升。Visual Basic 6.0作为Visual Studio 6.0的优秀一员,已成为企业级快速开发的利器。Visual Basic 6.0在数据访问方面有了很大的改进,新的ADO组件让对大量数据快速访问成为可能。数据环境和新的报表功能也让数据开发有了全新的体验。Visual Basic 借助COM/COM+强大的功能,可以开发具有多层结构的分布式应用程序。同时,Visual Basic还可以在IIS上开发性能超群的Web应用程序

3、。Visual Basic 6.0在语言方面和IDE方面的改进都不大,但是许多新增的组件成为Visual Basic开发人员手中的利器,如File System Object等。新的字符串函数Split和Replace等也给Visual Basic的程序员带来很大方便。Visual Basic 6.0具有下述优点:     (1) 面向对象      (2) 事件驱动      (3) 软件的集成式开发      (4) 结构化的程序设

4、计语言     (5) 强大的数据库访问功能     (6) 支持对象的链接与嵌入技术     (7) 网络功能     (8) 多个应用程序向导     (9) 支持动态交换、动态链接技术     (l0) 联机帮助功能VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active

5、X控件。它不像高级语言Visual C+那麽复杂,但它的功能很全,程序员可以轻松的使用VB提供的组件进行二次开发,快速建立属于自己的应用程序。 2 利用VB实现圆台交互式绘制的实现过程2.1 启动VB程序启动VB程序,VB6.0的主窗口如图1所示,可以直观地看到主窗体主要有以下部分组成:标题栏;菜单栏;工具栏;窗体设计器;控件(工具)箱;弹出式(上下文)菜单 ;工程管理器窗口 ;属性窗口;对象浏览器 ;对象浏览器及窗体布局窗口。建立一个新的标准EXE工程文件,对其进行重命名保存,重命名为"圆台绘制",将Form窗体文件重命名保存为"交互式圆台绘制",如图

6、2所示。特别需要注意的一点是:在标题栏显示的当前的工程名及窗体名是通过修改属性窗口中"名称"属性及"caption"属性得以实现的,与实际的工程名及窗体名并无直接联系,实际的工程名及窗体名是通过诸如"(圆台绘制.vbp)"形式体现出来的。            图1  VB6.0主窗口             

7、; 图2 重命名操作后的工程资源管理器 2.2 引用Solidworks类型库文件要操作SW对象,那么添加SW引用是必不可少的。在VB里添加引用,单击菜单栏中【工程】【引用】命令,选择"SolidWorks exposed Type Libraries For add-in Use"(SolidWorks插件库文件)、"SolidWorks 2007 Type Libray"(SolidWorks库文件)和"SolidWorks Consant Type library"(SolidWorks常数库),如图3所示。本文其实只

8、用到了"SolidWorks 2007 Type Libray"(SolidWorks库文件),但为了方便以后的程序扩展,将上述三种常用库文件一并添加。          图3  引用SolidWorks类型库  2.3 编辑窗体界面    (1)拖动工具箱组件板上的Lable控件、TextBox控件及CommandButton控件到Form上。    (2)接下来在属性窗口将Lable1、Lable2的属

9、性分别设置为"圆台半径:"、"圆台高度:";将CommandButton1、CommandButton2的属性分别设置为"启动SolidWorks交互式绘图"、"退出SolidWorks软件"。编辑后的窗体界面如图4所示。          图4 编辑后窗体界面2.4编程实现在VB编程环境下,引用单元文件,创建相关函数及编写事件处理过程,实现程序功能。绘制圆台的详细程序代码及其注释如下所示:    Priv

10、ate Sub Command1_Click()    Dim swapp As Object    Dim part As Object    Dim boolstatus As Boolean               "定义接口    Set swapp = CreateObject("SldWorks.Applicat

11、ion")    Set part = swapp.NewPart()    swapp.Visible = True                  "获取solidworks软件接口并新建一个零件文件    part.InsertSketch2 True    boolstatus = par

12、t.Extension.SelectByID("前视", "PLANE", 0, 0, 0, False, 0, Nothing)    part.InsertSketch2 True    part.CreateCircle 0, 0, 0, 0, Val(R.Text) / 10005, 0    part.ShowNamedView2 "*上下二等角轴测", 8    part.FeatureManager.F

13、eatureExtrusion True, False, False, 0, 0, Val(H.Text) / 1000, 0.01, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1           "建立模型    End Sub    点击"启动SolidWorks交互式绘图"后,程序调用SolidWorks自动绘制的

14、圆台三维图如图5所示。可交互式修改参数,直至达到满意的效果。操作完成后点击"退出SolidWorks环境"可以自动关闭并退出SolidWorks环境。          图5 交互式绘图后结果3 小结本文同样以一个简单实例的实现过程为例,采用VB语言编制了相关程序,详细介绍了二次开发的具体实现过程,给出了重要文件的引用、属性设置、接口程序的编制和事件处理等过程的完整代码。通过上述实例的实现过程,可以看出: VB语言简单易学,学习过程中很容易上手;功能齐全,程序员可以轻松的使用VB提供的组件进行二

15、次开发,快速建立属于自己的应用程序,在其各项高效强大集成功能的支持下,最终可方便快速地完成二次开发任务。参照连载1中的通过宏录制实现的二次开发过程,可以清楚地看到,利用VB二次开发实现圆台绘制的具体命令源代码不需要自己编写,可以直接对宏录制的相关源码拷贝过来加以利用即可,只需要修改其中的相关变量参数诸如Val(R.Text)即可,易于实现,减轻了程序员的工作量,提高了程序的开发速度。简单说明SolidWorks API的应用本文通过介绍“自定义属性”这个程序的开发和使用过程,来简单地说明SolidWorks API的应用,希望起到抛砖引玉的作用。SolidWorks API是SolidWork

16、s的OLE应用程序开发接口,用户可以利用它和支持OLE编程的开发工具,如VB、VBA(Excel,Access)、C、VC+等对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks 功能模块。一、问题的提出大多数工程图纸的标题栏中应该包括一些基本的设计信息,如零件名称、零件代号、材料以及设计人员和设计日期等,其中,零件的名称、代号、材料、数量、重量及一些重要的后处理要求等信息还应该出现在装配图的材料明细表(BOM)中。这些内容如果在工程图中一一进行编写和修改,其工作量是很大的,并且这种处理方法也不利于保证设计信息的一致性,对模型文件(零件或装配体文件)和图纸文件的管

17、理来讲是脱节的。SolidWorks是一个全相关的三维机械设计软件,模型文件中的设计数据,如尺寸、注释、文件属性等内容与工程图相关,因此,我们在处理上述工程图标题栏和材料明细表中的设计数据时,应该将这些内容保存在模型文件中,并且自动显示在工程图相应的位置上。当需要对工程图中的内容进行修改时,直接修改模型文件中的相应数据即可实现。这样的处理方法不仅保证了设计信息的一致性,而且可以大大提高设计效率。根据这个设想,笔者将这些设计信息进行了归纳,并将它们作为模型文件的自定义属性保存在模型文件指定配置的属性(在SolidWorks中,选择菜单“文件属性”,单击“指定配置”标签,如图1所示)中,针对模型文

18、件指定配置的这些属性可以自动带入到工程图的标题栏和材料明细表。对于材料明细表模板进行修改或建立新的明细表模板就可以在装配图中的材料明细表中显示所需要的设计信息(工程图格式文件的定义和材料明细表模板的定义,请参阅SolidWorks2001中文版实用技术精粹一书)。因此,无论何时需要修改设计信息,只需在SolidWorks中打开相应的模型文件,修改指定配置属性即可。然而,即使采用这样的处理方法,在修改文件当前配置属性时仍然显得有些繁琐,能否为SolidWorks建立一个工作界面,可以更加方便地添加和修改这些信息就成了问题的关键。二、自定义属性Cpbom 为了更大程度地提高工作效率,我们利用VB6

19、.0通过SolidWorks API建立了自定义属性设置程序Cpbom,这个程序通过一个对话界面直接对当前模型文件的当前配置进行添加或修改,其基本功能如下: 针对配置添加模型文件的自定义属性; 设置的项目包括:零件代号、材料名称、后处理、设计者姓名、设计日期; 确定自定义属性后,自动保存文件;如当前文件还没有保存,提示文件保存路径和文件名称; 针对装配文件,可以选择是否删除“材料”和“后处理”两个属性。本程序利用VB进行编译生成可执行文件。自定义属性界面 “自定义属性”程序就是通过SolidWorks API对当前模型文件中当前配置的自定义属性的名称和值进行“读”和“写”的操作,程序非常简单,

20、这里介绍一下该程序中用到的一些SolidWorks API的对象和方法。1.SolidWorks对象这里指的是SolidWorks API的最高级别的对象。通过该对象可以控制SolidWorks软件的执行或退出,以及SolidWorks文件的建立、打开、关闭等操作。在VB中利用CreateObject方法来获得SolidWorks对象,利用该对象的activedoc方法可以获得当前SolidWorks文件对象,文件对象为空时,表示SolidWorks 没有打开任何文件。Dim swApp As ObjectDimactiveDocument As ObjectSet swApp=CreateO

21、bject("SldWorks.Application")Set activeDocument = swApp.activedocIf (activeDocument Is Nothing) Then Dim Msg, Style, title Style = vbExclamationtitle = "模型自定义属性"Msg = "请首先打开一个Solidworks模型文件"Call MsgBox(Msg, Style, title) ' Display error messageEndEnd If2.获取当前文件信息自定义

22、属性程序是对模型文件设置自定义属性,与工程图文件无关,因此需要利用GetType方法获得当前文件的类型,并利用Gettitle()方法和Getpathname()方法获得当前文件的名称和存盘路径。Dim docType As LongDimdocName As StringDimfilename As StringDimFilePath as StringdocType = activeDocument.GetTypeIf (docType = swDocPART)Then docName = "零件"With CPbomfrm .deldescription.Enable

23、d = False .delmaterial.Enabled = FalseEnd With Picture5.Picture = Picture3.PictureElseIf (docType = swDocASSEMBLY) Then docName = "装配" Picture5.Picture = Picture2.PictureElseIf (docType = swDocDRAWING) Then Style = vbExclamation Msg = "当前文件是工程图文件,请打开零件或装配文件"Call MsgBox(Msg, Style

24、, title) ' Display error messageEndEndIf filename = activeDocument.GETTITLE()FilePath = activeDocument.getpathname()3.获取文件配置名称SolidWorks API提供了按照配置名称访问自定义属性的方法CustomInfo2(读取自定义属性的值)、deletecustominfo2(删除指定的自定义属性)、ADDcustominfo3(添加自定义属性的名称和参数值),这些方法都要求指定文件的配置名称。因此,为了对当前模型文件和当前配置设定自定义属性,必须首先要获得当前配置

25、的名称,利用GetActiveConfiguration()方法可以获得当前模型文件配置的对象,并利用Name方法获得当前配置的名称。Dim ConfName As StringSetCurCFG = activeDocument.GetActiveConfiguration()ConfName = CurCFG.Name4.按照配置访问自定义属性在本程序中,笔者对于指定配置的属性设置按照如下的步骤:(1)按照配置名称读取文件中的自定义属性值,并赋值于相应的文本框;(2)判定当前文件和当前配置是否已经改变,如其中之一发生变化,则提示错误信息;(3)根据配置名称删除指定的自定义属性;(4)将相应

26、文本框中的内容按照配置名称添加到模型文件自定义属性名称和参数值。下面对上述控制配置自定义属性的三种方法加以介绍。 CustomInfo2:获取或设置当前文档指定配置的自定义属性的值。value = ModelDoc.CustomInfo2 (configuration, fieldName)其中,configuration为配置名称;fieldName为自定义属性的名称。 deletecustominfo2:删除当前文档指定配置的自定义属性的值retval = ModelDoc.DeleteCustomInfo2(configuration, FieldName ) ADDcustominfo

27、3:向当前文档中指定的配置添加自定义属性以及值retval = ModelDoc.AddCustomInfo3 ( configuration, FieldName, FieldType, FieldValue )其中,FieldType为自定义属性的类型;FieldValue为自定义属性的值。下面这段代码是单击“确定”的子程序,为了简单,只给出了其中一个自定义属性的处理过程。Private Sub cmd_OK_Click()On Error GoTo ERR_91Dim swApp2 As ObjectDimactiveDocument2 As ObjectDimcurcfg2 As Ob

28、jectDimcfgname2 As StringDimretval As BooleanSetswApp2 = CreateObject("SldWorks.Application")Set activeDocument2 = swApp2.activedocSet curcfg2 = activeDocument2.GetActiveConfiguration()cfgname2 = curcfg2.Name' 判断文件或配置是否改变,如改变,则提示错误。If cfgname2 = ConfName And FilePath = activeDocument2.

29、getpathname() Then' 删除属性设置retval = activeDocument2.deletecustominfo2(ConfName, "PartID")' 添加属性retval = activeDocument2.ADDcustominfo3(ConfName, "PartID", swCustomInfoText, frmPartID)' 保存文件retval = activeDocument2.Save()Else Style = vbExclamationtitle = "模型自定义属性&q

30、uot;Msg = "错误:打开的文件或配置已经改变!" & Chr(10) & "请重新执行本程序"Call MsgBox(Msg, Style, title)EndEndIfERR_91: Style = vbExclamation title = "模型自定义属性"Msg = "程序运行错误,文件可能已经关闭" & Chr(10) & "自定义属性无法添加,单击确定退出!"Call MsgBox(Msg, Style, title)EndEnd Sub三、在

31、SolidWorks界面中执行应用程序对于使用VB编译的EXE、DLL文件,目前SolidWorks还不能直接支持这些文件作为插件使用,如果要在SolidWorks 中直接调用通过VB编译的可执行程序,可以使用SolidWorks“宏”操作来进行。利用“宏”在SolidWorks界面中添加指定的应用程序后,就好像SolidWorks调用了自身的功能一样,利用类似的方法,可以在SolidWorks添加任何可执行的文件。下面利用“自定义属性”程序来说明一下步骤。1.建立“宏”文件在SolidWorks中,我们利用录制并修改“宏”的方法来建立所需要的“宏”文件。主要步骤如下:(1)选择菜单“工具宏操

32、作录制”。(2)停止录制,并保存宏文件。给定文件名称,如:Cpbom.swp。(3)选择菜单“工具宏操作编辑”,把Cpbom.swp “宏”文件录制的内容全部删除,并输入下面的内容。Sub main()MyAppID = Shell("C:Program FilesCPbomCPbom.exe", 1) AppActivate MyAppIDEnd Sub(4)保存并退出宏编辑,返回到SolidWorks环境。2.指定“宏”操作在SolidWorks中可以指定宏命令的文件位置,并定制工具栏,将所执行的宏操作按钮添加到指定的位置上。(1)选择菜单“工具自定义宏”,在“自定义”

33、对话框中单击“宏”标签。(2)参考图4的内容添加宏,单击“应用”完成。(3)在“自定义”对话框中单击“命令”标签,从“类别”列表框中选择“宏”,将所定义的宏(第1个)的图标按钮拖到相应的工具栏中,如图5所示。(4)单击“确定”按钮,完成宏定义和工具栏定义。3.执行应用程序定义“宏”以后,单击相应的图标就可以在SolidWorks 中直接执行应用程序。 在SolidWorks中执行应用程序四、总结笔者利用这个“自定义属性”程序,明显提高了工作效率。需要说明的是,SolidWorks API的对象和方法十分丰富,涵盖了所有SolidWorks数据模型,这里介绍的只冰山之一角。另外,程序中提及的自定

34、义属性与企业的要求有关,根据自己的需要开发适合需要的自定义属性设置程序。复制是可以的,打开vs2008>工具>选项>项目和解决方案>常规>Visual studio用户项目模板位置。找到该位置后把swCSharpAddin.zip复制到此位置即可在新建项目时看到SwCSharpAddin模板了我说的是VC+,CSharp模板向导是有的,VC+没用SolidWorks COM add-in的向导。闲聊 运用3种开发工具的SolidWorks二次开发对比编程实践(一)SolidWorks, 工具, 实践, 开发SolidWorks, 工具, 实践, 开发1 前言随着计

35、算机技术与网络技术的迅速发展,越来越多的企业已经加大对于企业数字化信息化的建设,购买了相应的三维设计软件及其相关产品,这无疑对加速企业产品开发进程,缩短产品制造周期,提高产品质量,增强企业市场竞争力与创新能力发挥着重要作用。然而在工程实践中,其专业针对性不强。为此,人们通常通过对CAD软件的二次开发,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,更好地满足企业设计要求,更好地发挥CAD的效能。SolidWorks软件是一款基于Windows平台开发的著名的全参数化三维实体造型软件,其设计过程全相关性,可以在设计过程的任何阶段修改设计,同时牵动相关部分的改变。同

36、时SolidWorks具有良好的开放性和兼容性。基于这些优点,本文着重对SolidWorks的二次开发进行分析与研究。通过对该软件的二次开发,使其实现专业化、本地化,更大程度上发挥软件的价值,为制造业信息化与快速化服务。2 SolidWorks二次开发的大体思路与一般方法SolidWorks通过COM(Component Object Model,组件对象模型)技术为用户提供了强大的二次开发接口(SolidWorks API),凡支持COM编程的开发工具,如Visual Basic, Delphi等均可用于SolidWorks的二次开发。SolidWorks中常用的API对象如图1所示。Sld

37、Works对象为对SolidWorks工作环境进行访问处理提供了接口。通过此对象可以对SolidWorks工作环境添加菜单、删除菜单、添加工具条、打开文件、新建文件、退出SolidWorks系统。SolidWorks的API对象涵盖了全部的SolidWorks的数据模型,通过对这些对象属性的设置和方法的调用,就可以在用户自己开发的DLL中实现与SolidWorks相同的功能。进行二次开发时,调用SolidWorks中的API函数,可以完成零件的造型和修改,零件各特征的建立、修改、删除和压缩等各项控制,零件特征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各种几何和拓扑信息,零件的装

38、配信息,零件工程图纸中的各项信息等1。下载 (95.66 KB)2010-7-27 09:52图1 SolidWorks API对象层次图SolidWorks开发系统图如图2所示。其基本工作流程为:基于OLE技术的SolidWorks API将SolidWorks的各种功能封装在SolidWorks对象之中供编程调用,开发者使用二次开发编程语言通过调用SolidWorks的对象体系结构,操纵对象的属性和调用对象的方法便可以建立自主的应用程序,实现二次开发2-3。下载 (8.45 KB)2010-7-27 09:52图2 SolidWorks开发系统框图随着计算机技术与网络技术的迅速发展,越来越

39、多的企业已经加大对于企业数字化信息化的建设,购买了相应的三维设计软件及其相关产品,这无疑对加速企业产品开发进程,缩短产品制造周期,提高产品质量,增强企业市场竞争力与创新能力发挥着重要作用。然而在工程实践中,其专业针对性不强。为此,人们通常通过对CAD软件的二次开发,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,更好地满足企业设计要求,更好地发挥CAD的效能。3 运用3种开发工具进行SolidWorks二次开发编程对比为更好地帮助新人快速入门,笔者以一个简单的圆台参数化交互式调用为例,分别使用VBA语言、VB语言及Delphi这三种不同的开发语言对其进行开发实现

40、4,接下来详细对比分析这几种语言二次开发时的优缺点及需注意的关键问题。文中所使用的软件版本依次为SolidWorks 2007企业版,Visual Basic 6.0企业版及Delphi企业版软件。3.1 编程准备在程序编制前,首先是针对具体的开发工具,进行一些相关的应用或是设置工作。3.1.1 类型库的导入因为在使用VB语言及Delphi语言这两种开发工具进行SolidWorks二次开发时一般采用的是DLL动态链接库方式,必须导入相关的类型库,接下来才能调用SolidWorks的对象、方法与属性。而对于采用VBA语言,即采用宏录制实现SolidWorks二次开发的方式,由于宏是内嵌于Soli

41、dWorks的编程语言,不需要导入相关类型库。对于VB而言,添加引用的步骤是:单击菜单栏中【工程】【引用】命令,选择“SolidWorks exposed Type Libraries For add-in Use”(SolidWorks插件库文件)、“SolidWorks 2007 Type Libray”(SolidWorks库文件)和“SolidWorks Consant Type library”(SolidWorks常数库),如图3所示。      对于Delphi而言,导入类型库的步骤是:单击主窗口中 “Project” “Import Ty

42、pe Library”命令,在弹出的如图4所示的“Import Type Library”对话框中对SolidWorks类型库进行注册,将类型库文件SldWorks.tlb装载到Delphi中。选中“SolidWorks 2007 Type Library(Version f.0)“,单击“Creat Unit”按钮,Delphi将在其Import子目录下生成该类型库的Object Pascal文件Sldworks_TLB.Pas,该文件包括SolidWorks提供的所有API函数。接下来单击主窗口中 “Project” “Add to Project”菜单命令,在弹出的 “Add to Pr

43、oject”对话框中,选择Delphi的Import子目录下SolidWorks类型库单元文件Sldworks_TLB.pas,将其添加入工程中。下载 (110.11 KB)2010-7-27 09:57图4 Delphi中导入SolidWorks类型库对话框3.1.2 编辑窗体界面在编辑窗体一栏,三者的区别不大。其中VB语言与宏因为基于同一语言,编辑窗体时操作一致,Delphi语言的窗体编辑业余前两者相似,只是组件名的稍微区别(如文本编辑组件在Delphi中使用Edit控件,而在VB中使用TextBox控件)。三种语言下编辑好的窗体界面如图4所示,接下来便是设置相应控件属性。下载 (13.85 KB)2010-7-27 09:59图4 编辑后窗体界面3.2 程序编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论