今天我做了个,更新文件变量的例子,搞了好一会才弄出来。把代码贴下。
在未改变变量之前的文件
在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
下面是更改后的文件变量