2017-03-27 47 views
0

我們已經通過廣告創建了連接器,連接器將在圖表中自動更新。但問題是,當我們嘗試在圖表鏈接表中找到連接器時,連接器將不會更新。那麼我們如何平行地創建連接器並將線條樣式添加到連接器圖表鏈接中。更新圖表鏈接表中的連接器創建

連接器使用的是下面的API

EA.Connector con = pPortsource.Connectors.AddNew("", "Association"); 
con.SupplierID = Porttarget.ElementID; 
con.Update(); 

使用此上述API創建是否在圖中的圖鏈路將自動創建或我們應該用下面的代碼來創建圖鏈路

EA.DiagramLink link=Diagram.AddNew("",""); 
    link.ConnectorID=con.ConnectorID; 
    Link.update(); 
+0

你的意思是元素/關係窗口? –

+0

關係窗口 –

+0

你能用句子回答嗎? –

回答

0

掌握了您的基本問題是:設置默認線條樣式。你可以用Tools > Options > Links > Default Style > Routing和/或Tools > Options > Links > Generalization link style Default = Tree來做到這一點。這是EA提供的。

如果你想要別的東西,你或多或少都會迷路,除非你在加載項中付出了很多棘手的努力。爲什麼?考慮你添加一個新的連接器。這不僅會出現在您正在處理的圖表中,而且會出現在出現兩個連接元素的所有圖表中。在這裏,我開始試驗,並確認了OP的問題:如果您創建無可見圖新的連接器

,EA將創建t_diagramlinks的條目。它只會在修改線條樣式時創建一個條目。缺失的條目讓EA創建一個默認的連接器樣式。現在,您可以做的是在連接器創建後立即發出

Repository.Execute("INSERT INTO t_diagramlinks (diagramId, connectorId, style) VALUES (<diagramId>, <con.connectorID> 'Mode=2;')"); 

。這將爲單個圖中的連接器設置自動路由。您可以使用簡單的查詢來查找所連接的兩個元素都存在的所有圖表,並相應地重複上述SQL。爲了使它完成,您還需要訂閱EA_OnPostNewDiagramObject,因爲這可能也是導致連接器出現在圖表上的原因。我沒有測試過這個,EA是否會立即在t_diagramobject中創建一個條目,以便您可以調整該條目以及是否需要重新加載圖表以使更改可見。無論如何,大量的提前調整都可能破壞已經存在問題的EA用戶界面。

原來的答覆

爲了創建新的連接器,並讓它們顯示你可以使用這個(對不起,Perl的)代碼:根據需要

my $e = $rep->GetElementByGuid("{EB86E518-5BDC-477b-8CF8-2BEE0A102CF7}"); 
my $e1 = $rep->GetElementByGuid("{28636F81-2B1E-40af-A777-81ECEB067F31}"); 
my $con = $e1->Connectors->AddNew("", "Dependency"); 
$con->{SupplierId} = $e->ElementId; 
$con->Update(); 

my $dia = $rep->GetCurrentDiagram(); 
$rep->ReloadDiagram ($dia->DiagramID); 

這將創建一個新的鏈接, EA將在圖表重新加載後顯示。你不必提琴DiagramLinks。只有在你想調整連接器時才需要。也就是說,要隱藏它們或添加彎曲等。

+0

如何在創建連接器本身時設置連接器線型。在連接器窗口中,我們有主選項卡,它具有屬性Style我們如何通過API或EA訪問它,哪個表中包含該標記值 –

+0

@ManuV t_diagramLinks將在連接器顯示在圖中時更新。您不希望做這個EA.DiagramLink鏈接= Diagram.AddNew(「」,「」);如果連接器對象在任何圖表中都可見,則在該圖表下將顯示添加的連接器 – Arshad

+0

通過API我能夠獲得連接器的DigarmLinks,但是如果我轉到EA並在SQL便箋式中,如果我嘗試查看t_diagramlink表顯示爲空 –