다음 방법은 패키지를 삭제합니다. 문제는 프로젝트 브라우저가 결코 새로 고쳐지지 않는다는 것입니다. Repository.RefreshModelView (0)를 호출하면 업데이트가 강제 실행되지만 모델이 다시 열리고 스크립트 실행이 중지됩니다.패키지 삭제 스크립트로 프로젝트 브라우저가 업데이트되지 않습니다.
function clearPackage(pkg) {
var parent as EA.Package;
parent = Repository.GetPackageByID(pkg.ParentID);
var pkgList as EA.Collection;
pkgList = parent.Packages;
for (var i = 0; i < pkgList.Count; i++) {
var p as EA.Package;
p = pkgList.GetAt(i);
if (p.PackageGUID == pkg.PackageGUID) {
pkgList.Delete(i);
pkgList.Refresh();
parent.Update(); // have tried with and without
return;
}
}
}
의 검사 pkgList.Count pkgList.Refresh 전후의 크기 변화를 보여주는가 후 : 여기
는 방법이다. 다시 한번 말하지만 문제는 프로젝트 브라우저에만 국한된 것으로 보입니다.프로젝트 브라우저를 새로 고치는 방법에 대한 아이디어가 있으십니까?
십자가는 Sparx Forums에 게시했습니다.
고맙습니다 만, 패키지의 루트 패키지에 매달려있는 경우 전체 모델을 다시로드합니다. (부모를 새로 고치는 것만 제외하면) 코드의 차이는 실제로 볼 수 없습니다. 또한, DeleteAt는 차이를 보이지 않습니다 - 두 번째 매개 변수 (새로 고침)는 구현되지 않은 것으로 문서화됩니다. – Chris
두 번째 매개 변수는 필수 항목이며 사용되지 않습니다 - EA입니다. 실제로는 삭제와 동일합니다. -/ 새로 고침 (0)에서 스크립트 실행 중지와 관련하여 버그 보고서를 보내야합니다. 좋아 보이지 않는다. 필자가 테스트 스크립트를 독립 실행 형으로 실행 한 이후 처음에는 그 사실을 알지 못했습니다. –
P. 새로 고침 문제를 극복하기 위해 전체 스크립트의 끝 부분에 플래그를 붙여서 연기하십시오 (또는 Geert가 제안하는 것을 수행하십시오). 청소 된 하위 패키지 목록을 반복해야하는 경우 객체를 다시 한 번로드하면됩니다 (GetPackageByID 또는 -GUID 사용). 어떤 경우에도 새로 고침을 사용하지 않습니다. 이것은 가장 불필요한 방법입니다. –