2016-09-27 4 views
1

개체 모델과 C#을 사용하여 새 패키지를 만들고 있습니다. 하위 패키지가있는 패키지를 재귀 적으로 만들고 있는데 제대로 작동합니다. 그러나 수동으로 ctrl시프트F11으로 프로젝트를 새로 고치지 않으면 스크립트가 완료된 후 EA에서 변경 사항이 표시되지 않습니다. 그 후에 작성한 패키지가 의도 한대로 표시됩니다.새로 생성 된 패키지는 수동 새로 고침 후에 만 ​​표시됩니다.

새로 생성 된 패키지 newPackage.Update();을 업데이트하고 상위 패키지 parentPackage.Packages.Refresh(); 패키지를 새로 고칩니다.

재귀 적으로 모든 패키지를 만든 후 나는 또한 Repository.Exit()으로 Model.Update(), Repository.Models.Refresh();, Model.Packages.Refresh(); aswell를 호출합니다.

EA는보기를 다시 그리는 것처럼 보이지만 새로 만든 패키지를 표시하지 않습니다.

마지막으로보기를 업데이트하는 호출이 누락 되었습니까?

나는이 코드를 사용하고 있습니다 :

eaApplication = new EA.App(); // Create interface to EA 
eaRepository = eaApplication.Repository; 
eaRepository.EnableUIUpdates = true; 
eaRepository.OpenFile(pathToEAPfile) 
EA.Package eaModel = eaRepository.Models.GetAt(0); 
EA.Package testModelPackage = (getting it via for loop); 
EA.Package newPack = testModelPackage.Packages.AddNew("foopackage", "System.__ComObject"); 
newPack.Update(); 
testModelPackage.Packages.Refresh(); 

eaRepository.RefreshModelView(0); 
eaRepository.Exit(); 

답변

0

을 내가 외부 응용 프로그램에서이 전화를 가정합니다. 모든 EA 클라이언트는 기본 데이터베이스 업데이트에 대한 통지를받지 못합니다. 사용자가 명시 적으로 적절한 부분을 읽을 때만.

위 코드를 EA 내부에서 추가 기능으로 실행하거나 수동으로 새로 고침해야합니다.

초기 질문에 대한 답변 : 다음은 초기 애매한 질문에 대한 답변입니다. 나는 다른 사람들이 참고할 수 있도록 남겨두고있다.

Repository.RefreshModelView(0) 


전화는 루트에서 전체보기를 다시로드합니다. 또는 새로 고치려는 패키지의 PackageId를 전달하십시오.

N.B. 모든 추가 통화는 불필요합니다. 변경된 오브젝트에 대해서만 Update()으로 호출하십시오. Refresh() 호출은 변경된 콜렉션을 이후에 (오브젝트 추가 또는 삭제 후에) 트래버스하는 경우에만 필요합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그러나, 그것은 여전히 ​​트릭을하지 않습니다. 나는 또한 성공하지 않고 새로 생성 된 모든 패키지에 대한 개별 패키지 ID를 전달하려고 시도했다. – Lukas

+0

부모 패키지를 전달해야합니다. 그것은 아래로 캐스케이드 것입니다. '0'을 먼저 사용하여 전체보기를 새로 고침 해보십시오. –

+0

상위 패키지 ID를 전달하는 기능이 작동하지 않습니다. – Lukas

관련 문제