2017-04-15 79 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