2016-09-27 31 views
1

我正在使用對象模型和C#創建新包。 我正在用遞歸的方式創建包,並且工作正常。然而,我的變化不會在EA現身腳本完成後的工作,除非我手動刷新項目,CTRL轉變F11,在這之後我創建的包顯示爲目的。新創建的包僅在手動刷新後才顯示

我正在更新新創建的包newPackage.Update();,以及刷新父包parentPackage.Packages.Refresh();的包。

遞歸創建所有包後,我另外打電話給Model.Update(),Repository.Models.Refresh();,Model.Packages.Refresh();以及Repository.Exit()

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

相關問題