Automated method to export Enterprise Architect diagrams?

前端 未结 4 2115
南旧
南旧 2021-02-13 12:59

Problem: A lot of our design and architecture documentation were created and maintained in Enterprise Architect - for better or worse, that is how it is. These documents are sto

4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-13 13:12

    In the Example code I just discovered a function whish will do exactly what you want. But hidden away by the not so helpfull name of ProjectInterfaceExample:

    option explicit
    
    !INC Local Scripts.EAConstants-VBScript
    
    '
    ' Examples of how to access and use the Project Interface.
    ' 
    ' Related APIs
    ' =================================================================================
    ' Project Interface API - http://www.sparxsystems.com/uml_tool_guide/sdk_for_enterprise_architect/project_2.html
    '
    
    ' Global reference to the project interface
    dim projectInterface as EA.Project
    
    sub ProjectInterfaceExample()
    
        ' Show the script output window
        Repository.EnsureOutputVisible "Script"
    
        Session.Output( "VBScript PROJECT INTERFACE EXAMPLE" )
        Session.Output( "=======================================" )
    
    
        set projectInterface = Repository.GetProjectInterface()
    
        ' Iterate through all model nodes
        dim currentModel as EA.Package
        for each currentModel in Repository.Models
    
            ' Iterate through all child packages and save out their diagrams
            dim childPackage as EA.Package
            for each childPackage in currentModel.Packages
                DumpDiagrams childPackage
            next
        next
    
        Session.Output( "Done!" )
    
    end sub
    
    '
    ' Recursively saves all diagrams under the provided package and its children
    '
    sub DumpDiagrams ( thePackage )
    
        ' Cast thePackage to EA.Package so we get intellisense
        dim currentPackage as EA.Package
        set currentPackage = thePackage
    
        ' Iterate through all diagrams in the current package
        dim currentDiagram as EA.Diagram
        for each currentDiagram in currentPackage.Diagrams
    
            ' Open the diagram
            Repository.OpenDiagram( currentDiagram.DiagramID )
    
            ' Save and close the diagram
            Session.Output( "Saving " & currentDiagram.Name )
            projectInterface.SaveDiagramImageToFile "c:\\temp\\" + currentDiagram.Name + ".emf"
            Repository.CloseDiagram( currentDiagram.DiagramID )
        next
    
        ' Process child packages
        dim childPackage as EA.Package
        for each childPackage in currentPackage.Packages    
            DumpDiagrams childPackage
        next
    
    end sub
    
    ProjectInterfaceExample
    

    You might have to fine tune it a litte (i.E. not writing everything into C:\Temp) but it is a good start.

提交回复
热议问题