1、SolidWorks API 接口的应用SolidWorks API 是 SolidWorks 的 OLE 应用程序开发接口,用户可以利用它和支持 OLE 编程的开发工具,如 VB、VBA(Excel,Access)、C、VC+等对 SolidWorks 进行二次开发,建立适合用户需要的、专用的 SolidWorks 功能模块。 一、问题的提出 大多数工程图纸的标题栏中应该包括一些基本的设计信息,如零件名称、零件代号、材料以及设计人员和设计日期等,其中,零件的名称、代号、材料、数量、重量及一些重要的后处理要求等信息还应该出现在装配图的材料明细表(BOM)中。这些内容如果在工程图中一一进行编写和
2、修改,其工作量是很大的,并且这种处理方法也不利于保证设计信息的一致性,对模型文件(零件或装配体文件)和图纸文件的管理来讲是脱节的。SolidWorks 是一个全相关的三维机械设计软件,模型文件中的设计数据,如尺寸、注释、文件属性等内容与工程图相关,因此,我们在处理上述工程图标题栏和材料明细表中的设计数据时,应该将这些内容保存在模型文件中,并且自动显示在工程图相应的位置上。当需要对工程图中的内容进行修改时,直接修改模型文件中的相应数据即可实现。 这样的处理方法不仅保证了设计信息的一致性,而且可以大大提高设计效率。根据这个设想,笔者将这些设计信息进行了归纳,并将它们作为模型文件的自定义属性保存在模
3、型文件指定配置的属性(在 SolidWorks 中,选择菜单“文件属性“ ,单击“指定配置“标签,如图 1 所示)中,针对模型文件指定配置的这些属性可以自动带入到工程图的标题栏和材料明细表。 对于材料明细表模板进行修改或建立新的明细表模板就可以在装配图中的材料明细表中显示所需要的设计信息(工程图格式文件的定义和材料明细表模板的定义,请参阅SolidWorks2001 中文版实用技术精粹一书)。因此,无论何时需要修改设计信息,只需在 SolidWorks 中打开相应的模型文件,修改指定配置属性即可。然而,即使采用这样的处理方法,在修改文件当前配置属性时仍然显得有些繁琐,能否为 SolidWork
4、s 建立一个工作界面,可以更加方便地添加和修改这些信息就成了问题的关键。 二、自定义属性 Cpbom 为了更大程度地提高工作效率,我们利用 VB6.0 通过 SolidWorks API 建立了自定义属性设置程序-Cpbom,这个程序通过一个对话界面直接对当前模型文件的当前配置进行添加或修改,其基本功能如下: 针对配置添加模型文件的自定义属性; 设置的项目包括:零件代号、材料名称、后处理、设计者姓名、设计日期; 确定自定义属性后,自动保存文件;如当前文件还没有保存,提示文件保存路径和文件名称 ; 针对装配文件,可以选择是否删除“材料“和“ 后处理“两个属性。本程序利用 VB 进行编译生成可执行
5、文件。自定义属性界面 “自定义属性 “程序就是通过 SolidWorks API 对当前模型文件中当前配置的自定义属性的名称和值进行“读“和“ 写“的操作,程序非常简单,这里介绍一下该程序中用到的一些 SolidWorks API 的对象和方法。 1.SolidWorks 对象这里指的是 SolidWorks API 的最高级别的对象。通过该对象可以控制 SolidWorks 软件的执行或退出,以及 SolidWorks 文件的建立、打开、关闭等操作。在 VB 中利用 CreateObject 方法来获得 SolidWorks 对象,利用该对象的 activedoc 方法可以获得当前 Soli
6、dWorks 文件对象,文件对象为空时,表示 SolidWorks 没有打开任何文件。 Dim swApp As ObjectDim activeDocument As ObjectSet swApp=CreateObject(“SldWorks.Application“) Set activeDocument = swApp.activedocIf (activeDocument Is Nothing) Then Dim Msg, Style, title Style = vbExclamation title = “模型自定义属性“ Msg = “请首先打开一个 Solidworks 模型
7、文件“ Call MsgBox(Msg, Style, title) “ Display error message End End If 2. 获取当前文件信息自定义属性程序是对模型文件设置自定义属性,与工程图文件无关,因此需要利用 GetType 方法获得当前文件的类型,并利用 Gettitle()方法和 Getpathname()方法获得当前文件的名称和存盘路径。 Dim docType As LongDim docName As StringDim filename As StringDim FilePath as StringdocType = activeDocument. Get
8、TypeIf (docType = swDocPART) Then docName = “零件“With CPbomfrm .deldescription.Enabled = False .delmaterial.Enabled = FalseEnd With Picture5.Picture = Picture3.Picture ElseIf (docType = swDocASSEMBLY) Then docName = “装配“ Picture5.Picture = Picture2.Picture ElseIf (docType = swDocDRAWING) Then Style =
9、 vbExclamation Msg = “当前文件是工程图文件,请打开零件或装配文件“ Call MsgBox(Msg, Style, title) “ Display error message End End If filename = activeDocument.GETTITLE() FilePath = activeDocument.getpathname() 3. 获取文件配置名称 SolidWorks API 提供了按照配置名称访问自定义属性的方法 -CustomInfo2(读取自定义属性的值)、deletecustominfo2(删除指定的自定义属性)、ADDcustomin
10、fo3(添加自定义属性的名称和参数值),这些方法都要求指定文件的配置名称。因此,为了对当前模型文件和当前配置设定自定义属性,必须首先要获得当前配置的名称,利用 GetActiveConfiguration()方法可以获得当前模型文件配置的对象,并利用 Name 方法获得当前配置的名称。 Dim ConfName As StringSet CurCFG = activeDocument.GetActiveConfiguration() ConfName = CurCFG.Name 4. 按照配置访问自定义属性在本程序中,笔者对于指定配置的属性设置按照如下的步骤: (1)按照配置名称读取文件中的自
11、定义属性值,并赋值于相应的文本框; (2)判定当前文件和当前配置是否已经改变,如其中之一发生变化,则提示错误信息 ; (3)根据配置名称删除指定的自定义属性; (4)将相应文本框中的内容按照配置名称添加到模型文件自定义属性名称和参数值。下面对上述控制配置自定义属性的三种方法加以介绍。 CustomInfo2:获取或设置当前文档指定配置的自定义属性的值。 value = ModelDoc.CustomInfo2 (configuration, fieldName) 其中,configuration 为配置名称; fieldName 为自定义属性的名称。 deletecustominfo2:删除当
12、前文档指定配置的自定义属性的值 retval = ModelDoc.DeleteCustomInfo2(configuration, FieldName ) ADDcustominfo3:向当前文档中指定的配置添加自定义属性以及值 retval = ModelDoc.AddCustomInfo3 ( configuration, FieldName, FieldType, FieldValue ) 其中,FieldType 为自定义属性的类型;FieldValue 为自定义属性的值。 下面这段代码是单击“确定“ 的子程序,为了简单,只给出了其中一个自定义属性的处理过程。 Private Sub
13、 cmd_OK_Click()On Error GoTo ERR_91 Dim swApp2 As ObjectDim activeDocument2 As ObjectDim curcfg2 As ObjectDim cfgname2 As StringDim retval As BooleanSet swApp2 = CreateObject(“SldWorks.Application“) Set activeDocument2 = swApp2.activedoc Set curcfg2 = activeDocument2.GetActiveConfiguration() cfgname
14、2 = curcfg2.Name“ 判断文件或配置是否改变,如改变,则提示错误。 If cfgname2 = ConfName And FilePath = activeDocument2.getpathname() Then “ 删除属性设置 retval = activeDocument2.deletecustominfo2(ConfName, “PartID“)“ 添加属性 retval = activeDocument2.ADDcustominfo3(ConfName, “PartID“, swCustomInfoText, frmPartID) “ 保存文件 retval = act
15、iveDocument2.Save() Else Style = vbExclamation title = “模型自定义属性“ Msg = “错误:打开的文件或配置已经改变!“ & Chr(10) & “请重新执行本程序 “ Call MsgBox(Msg, Style, title) End End IfERR_91: Style = vbExclamation title = “模型自定义属性“ Msg = “程序运行错误,文件可能已经关闭“ & Chr(10) & “自定义属性无法添加,单击确定退出!“ Call MsgBox(Msg, Style, title) End End Su
16、b 三、在 SolidWorks 界面中执行应用程序 对于使用 VB 编译的 EXE、DLL 文件,目前 SolidWorks 还不能直接支持这些文件作为插件使用,如果要在 SolidWorks 中直接调用通过 VB 编译的可执行程序,可以使用 SolidWorks“宏“操作来进行。利用“宏“ 在 SolidWorks 界面中添加指定的应用程序后,就好像 SolidWorks 调用了自身的功能一样,利用类似的方法,可以在 SolidWorks 添加任何可执行的文件。下面利用“自定义属性“ 程序来说明一下步骤。 1.建立 “宏“文件在 SolidWorks 中,我们利用录制并修改“宏“ 的方法来
17、建立所需要的“宏“ 文件。主要步骤如下: (1)选择菜单“工具宏操作录制“ 。 (2)停止录制,并保存宏文件。给定文件名称,如:Cpbom.swp。 (3)选择菜单“工具宏操作编辑“ ,把 Cpbom.swp “宏“文件录制的内容全部删除,并输入下面的内容。 Sub main()MyAppID = Shell(“C:Program FilesCPbomCPbom.exe“, 1) AppActivate MyAppID End Sub (4)保存并退出宏编辑,返回到 SolidWorks 环境。 2. 指定 “宏“操作在 SolidWorks 中可以指定宏命令的文件位置,并定制工具栏,将所执行
18、的宏操作按钮添加到指定的位置上。 (1)选择菜单“工具自定义宏“ ,在 “自定义“对话框中单击“宏“标签。 (2)参考图 4 的内容添加宏,单击 “应用“完成。 (3)在“自定义“ 对话框中单击 “命令“标签,从“类别“列表框中选择“宏“,将所定义的宏(第 1 个)的图标按钮拖到相应的工具栏中,如图 5 所示。 (4)单击“确定“ 按钮,完成宏定义和工具栏定义。 3. 执行应用程序定义“宏“以后,单击相应的图标就可以在 SolidWorks 中直接执行应用程序。 在 SolidWorks 中执行应用程序 四、总结 笔者利用这个“自定义属性“ 程序,明显提高了工作效率。需要说明的是,SolidWorks API 的对象和方法十分丰富,涵盖了所有 SolidWorks 数据模型,这里介绍的只冰山之一角。另外,程序中提及的自定义属性与企业的要求有关,根据自己的需要开发适合需要的自定义属性设置程序。