2017-04-15 2 views
0

VBS를 사용하여 다이어그램에있는 요소를 다이어그램이있는 상위 패키지로 이동합니다. Enterprise Architect 리소스별로 다이어그램 객체에서 요소 ID를 얻습니다. elementID를 사용하는 부모 패키지를 검색하려고하면 정의되지 않은 값을 갖기 때문에 diagramObject 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

없습니다. 일단 그렇게하면 모든 것이 잘되어야합니다.

+0

감사합니다. 해결되었습니다! – Cgrillo

1

Object Model Reference

에 대한 링크입니다 당신 DiagramObject에서 먼저 요소를 가져와야합니다. CT 당신은 결코 그 PackageID을 변경 한 후 element를 업데이트하지 않습니다 요소

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