FileDescriptor.ReplaceReference method works in my test.
Each run replaces file reference in the active IPN file to the next iAssembly member.
Sub Presentation_ReplaceMember()
Dim oMainDoc As PresentationDocument
Set oMainDoc = ThisApplication.ActiveDocument
Dim oAsmDoc As AssemblyDocument
Set oAsmDoc = oMainDoc.ReferencedDocuments.Item(1)
Dim oDocDescriptor As DocumentDescriptor
Set oDocDescriptor = oMainDoc.ReferencedDocumentDescriptors.Item(1)
Dim oFileDescriptor As FileDescriptor
Set oFileDescriptor = oDocDescriptor.ReferencedFileDescriptor
Debug.Print "Current File Descriptor: " + oFileDescriptor.FullFileName
Dim oAsmDef As AssemblyComponentDefinition
Set oAsmDef = oAsmDoc.ComponentDefinition
' Make sure we have an iAssembly member
If oAsmDef.IsiAssemblyMember = False Then
MsgBox "Document is not an iAssembly Member.", vbExclamation
Exit Sub
End If
Dim oMember As iAssemblyMember
Set oMember = oAsmDef.iAssemblyMember
' current index
Dim index As Integer
index = oMember.Row.index
Debug.Print "Current index = " + CStr(index)
Dim oFactory As iAssemblyFactory
Set oFactory = oMember.ParentFactory
'calc next index
If index = oFactory.TableRows.Count Then
index = 1
Else
index = index + 1
End If
Dim oRow As iAssemblyTableRow
Set oRow = oFactory.TableRows.Item(index)
'replace file reference
Dim filename As String
filename = oFactory.MemberCacheDir + "\" + oRow.DocumentName
Debug.Print "Next member: " + filename
oFileDescriptor.ReplaceReference (filename)
oMainDoc.Save
Beep
End Sub
Hope this could help.
Cheers,
Vladimir Ananyev
Developer Technical Services
Autodesk Developer Network