Search code examples
enterprise-architect

Obtain an element object's package ID from a diagram object


I am using VBS to move an element found in a diagram to the parent package of where the diagram lives. Per Enterprise Architect resources, I obtain an element ID from a diagram object. It seemsthat the diagramObject elementID is not equivalent to an element's elementID since attempting to retrieve the parentpackage of using the elementID gives me an undefined value.

Is there a way I can get to the element's parent package from the diagram object?

EDIT: Added code that I am using

Specific Portion ():

        dim diagObject
        set diagObject = package.Diagrams.GetAt(i).DiagramObjects.GetAt(j)
        'add element to list and track its origin
        dim elementID 
        elementID = diagobject.ElementID
        dim element
        set element = Repository.GetElementByID(elementID)
        Session.Prompt elementID, promptOK
        Session.Prompt "Test: " & element.PackageID, promptOK

Whole Function:

Function prepare(package)
'define parent package id
dim parentID 
parentID = package.PackageID
'iterate through diagrams
Dim i
For i = 0 to Package.Diagrams.Count-1
    'iterate through diagram objects
    Session.Prompt "iterate through diagram objects", promptOK
    Dim j
    For j = 0 to package.Diagrams.GetAt(i).DiagramObjects.Count-1
        'Check if the object is a element
        Session.Prompt package.Diagrams.GetAt(i).DiagramObjects.GetAt(j).ObjectType, promptOK
        If (19  =  package.Diagrams.GetAt(i).DiagramObjects.GetAt(j).ObjectType) Then
            Session.Prompt "IS A element", promptOK
            dim diagObject
            set diagObject = package.Diagrams.GetAt(i).DiagramObjects.GetAt(j)
            'add element to list and track its origin
            dim elementID 
            elementID = diagobject.ElementID
            dim element
            set element = Repository.GetElementByID(elementID)
            Session.Prompt elementID, promptOK
            Session.Prompt "Test: " & element.PackageID, promptOK

            originList.Add elementID, element.PackageID
            Session.Prompt PackageID, promptOK
            'move element to currently selected package
            element.PackageID = parentID
            Session.Prompt "Moved", promptOK
        End If
    Next
Next

Solution

  • You are never updating element after altering its PackageID. Once you do that, everything should be fine.