Change iassembly member in presenation file

Change iassembly member in presenation file

Dan_Margulius
Advisor Advisor
320 Views
1 Reply
Message 1 of 2

Change iassembly member in presenation file

Dan_Margulius
Advisor
Advisor

Hello,

Is it possible to write a code trough ilogic or vba to change configurations in ipn files.

Once something is inserted in the ipn it cant be change. 

We are looking for something similar to "replace model reference" in drawings but for ipn files.

 

Thanks

Dan

0 Likes
321 Views
1 Reply
Reply (1)
Message 2 of 2

Vladimir.Ananyev
Alumni
Alumni

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

0 Likes