今天我做了个,更新文件变量的例子,搞了好一会才弄出来。把代码贴下。
在未改变变量之前的文件
在VS里面创建一个类库类库中添加以下方法
''' <summary> ''' 获取文件 ''' </summary> ''' <param name="files">添加后的所有文件</param> ''' <param name="SetName">BOM条目名</param> ''' <remarks></remarks> Public Sub GetFiles(ByRef files() As EdmListFile, ByVal SetName As String) lst.CreateListEx(SetName, 0, cols) '调用IEdmBatchListing2中的方法,添加文件 lst.GetFiles(files) '获取files中的所有文件 End Sub ''' <summary> ''' 更新文件信息 ''' </summary> ''' <param name="vName">变量名称</param> ''' <param name="value">变量值</param> ''' <remarks></remarks> Public Sub BatchUpdateFileVariable(ByVal vName As String, ByVal value As Object) Dim varMgr As IEdmVariableMgr5 '定义变量的对象 varMgr = vault Dim var As IEdmVariable5 var = varMgr.GetVariable(vName) '获取vName所对应的变量 Dim Upate As IEdmBatchUpdate2 '定义update对象 Upate = vault.CreateUtility(EdmUtility.EdmUtil_BatchUpdate) Dim files() As EdmListFile = Nothing GetFiles(files, "") '获取文件 For Each efile As EdmListFile In files Dim file As IEdmFile8 = vault.GetObject(EdmObjectType.EdmObject_File, efile.mlFileID) If Not file.IsLocked Then file.LockFile(efile.mlFolderID, 0) End If Upate.SetVar(efile.mlFileID, var.ID, value, "", 1) '把添加需要更新的内容 Next Dim Errors() As EdmBatchError2 = Nothing Dim errcount As Integer = Upate.CommitUpdate(Errors) '提交并捕捉错误 If errcount > 0 Then MsgBox("有错误") Else MsgBox("更新成功") End If End Sub
然后再创建个窗体,更改变量之前要先读取文件(在SolidWorks EPDM二次开发入门(一)中写到了)添加 一个按钮
按钮代码如下
Try Finfo.BatchUpdateFileVariable("项目序号", "A395") '调用后台更新函数 Finfo.BatchUpdateFileVariable("项目名称", "SolidWorks") Catch ex As Exception MsgBox(ex.Message) End Try 下面是更改后的文件变量