option explicit

!INC Local Scripts.EAConstants-VBScript

'
' An example of how to create a diagram and add an Element to it.
' 
' Related APIs
' =================================================================================
' Diagram API - http://www.sparxsystems.com/enterprise_architect_user_guide/12.1/automation_and_scripting/diagram2.html
' Diagram Object API - http://www.sparxsystems.com/enterprise_architect_user_guide/12.1/automation_and_scripting/diagramobjects.html
'
sub ManageDiagramsExample()

	' Show the script output window
	Repository.EnsureOutputVisible "Script"
	
	dim i

	Session.Output( "VBScript MANAGE DIAGRAMS EXAMPLE" )
	Session.Output( "=======================================" )

	' Create a new package in the first model node
	dim modelNode as EA.Package
	set modelNode = Repository.Models.GetAt( 0 )
	
	dim testPackage as EA.Package
	set testPackage = modelNode.Packages.AddNew( "TestPackage", "Class" )
	testPackage.Update()
	
	Session.Output( "Added package '" & testPackage.Name & "' to model" )
	
	' Create a diagram in the test package
	dim testDiagram as EA.Diagram
	set testDiagram = testPackage.Diagrams.AddNew( "My Logical Diagram", "Logical" )
	testDiagram.Notes = "Test diagram created by the ManageDiagramsExample script"
	testDiagram.Update()
	
	Session.Output( "Added diagram '" & testDiagram.Name & "' to package " & testPackage.Name )
	
	' Create an element (which will be added to the diagram later on)
	dim testElement as EA.Element
	set testElement = testPackage.Elements.AddNew( "TestClass", "Class" )
	testElement.Update()
	
	Session.Output( "Created element '" & testElement.Name & "' in package '" & _
		testPackage.Name & "'" )
		
	' Add the element to the diagram
	dim diagramObjects as EA.Collection
	set diagramObjects = testDiagram.DiagramObjects
	
	dim testDiagramObject as EA.DiagramObject
	set testDiagramObject = diagramObjects.AddNew( "l=200;r=400;t=200;b=600;", "" )
	testDiagramObject.ElementID( testElement.ElementID )
	testDiagramObject.Update()
	
	Session.Output( "Added element '" & testElement.Name & "' to diagram '" & _ 
		testDiagram.Name & "'" )
	
	Session.Output( "Done!" )
		
end sub

ManageDiagramsExample
