由于有关 PDM 系统如何运行的公司政策,当用户签入文件时,本地副本将从用户缓存中删除。我的宏将文件签出、编辑并再次签入。如果我尝试编辑刚刚编辑过的文件,我会收到“找不到文件”错误(因为它已从缓存中删除)。我试图通过编写一个子程序来解决这个问题,以便在编辑它之前立即获取文件的最新副本,以确保始终存在一个文件,但代码似乎没有检索该文件。子如下。
Sub GetLatest(fName As String)
Dim vaultName As String
Dim eVault As IEdmVault13
Dim eFile As IEdmFile8
Dim BG As IEdmBatchGet
Dim files(1) As EdmSelItem
'log into the vault
vaultName = Config.ReadXMLElement(pathConfig, "vaultname")
Set eVault = New EdmVault5
If Not eVault.IsLoggedIn Then
Call eVault.LoginAuto(vaultName, 0)
End If
'get the file to get lastest
Set eFile = eVault.GetFileFromPath(fName)
'put the file in an array
files(0).mlDocID = 0
files(0).mlProjID = eFile.ID
Set BG = eVault.CreateUtility(EdmUtil_BatchGet)
Call BG.AddSelection(eVault, files())
Call BG.CreateTree(0, EdmGetCmdFlags.Egcf_SkipExisting)
Call BG.GetFiles(0, Nothing)
End Sub
如果我在编辑文件之前在 EPDM 浏览器中手动“获取最新”,则宏可以正常读取。该代码与 Michael Dekoning 在https://forum.solidworks.com/thread/51105上发布的代码略有修改