2017-04-15 80 views
0

我正在使用VBS将图中找到的元素移动到图所在的父包。根据Enterprise Architect资源,我从图表对象中获取元素ID。看起来diagramObject elementID不等于元素的elementID,因为试图检索使用elementID的父包给我一个未定义的值。从图对象中获取元素对象的包ID

有没有一种方法可以从图表对象中获取元素的父包?

 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 

整体功能:

编辑:我使用

特定部分()添加的代码

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 
+0

请发布您正在使用的代码。 ESP。你如何检索父包。 –

+0

我已更新我的问题以包含我正在使用的代码。 – Cgrillo

回答

2

改变其PackageID后,您永远不会更新element。一旦你这样做,一切都应该没问题。

+0

谢谢,这解决了它! – Cgrillo

1

这里是到Object Model Reference

链接你必须首先从DiagramObject获取元素,如DiagramObje CT是不是元素

element=Repository.GetElementByID(yourDiagramObject.ElementID) 
packageID=element.PackageID