2017-06-08 27 views
1

我正在Enterprise Architect C#加載項中工作。我需要通過代碼來排列元素和連接器,以避免連接器重疊。我已將線路樣式設置爲圖表鏈接的自動路由。通過C#加載項在Enterprise Architect中設置連接器的起點和終點

在EA中是否有API用於將連接器的起點/終點設置爲源元素的尺寸值,以便連接器從元素的頂部開始。

請幫忙。提前致謝。

編輯:我曾嘗試通過API更新如下,但我無法看到起始位置在連接器的變化:

  for (short i = 0; i < Diagram.DiagramLinks.Count; i++) 
      { 

        EA.DiagramLink dl = Diagram.DiagramLinks.GetAt(i); 
        //set the line style and update 
        dl.LineStyle = EA.LinkLineStyle.LineStyleAutoRouting; 
        dl.Geometry = "EDGE=4;"; 
        dl.Update(); 
        Diagram.Update(); 
      } 

回答

2

這是可能的,但很困難。 DiagramLinks有一個屬性Geometry,它擁有一個csv風格的列表。詳細的描述可以在我的Inside書中找到,但是您可以簡單地查找指定相對X和Y位置的參數SXSY,它們可以改變+ - 起始對象的一半寬度/高度。類似EXEY結束。最後,EDGE參數指定連接器從起始對象開始的邊緣:1 = bottom; 2 =左; 3 =頂部; 4 =右

編輯1:我擺弄了一下,但我目前沒有開放的態度。你應該做的是創建一個空的EAP並在圖上放置兩個兩個元素並連接它們。現在在SQL暫存區中運行SELECT geometry FROM t_diagramlinks。移動連接器/元素,保存圖表(或更改將不會寫入數據庫)並重新發出SQL以查看SX等效果。

此外,您可以通過API更新Geometry是我推薦的。此外,您需要重新加載圖表以查看圖形中反映的更新。

編輯2:可能是您的問題的答案。 Edge屬性只是一個r/o屬性。重要的是座標參數。所以如果你想讓連接器從中間頂邊開始,你需要設置SX=0;SY=<halfheight>;,其中<halfheight>是元素高度的一半。還要注意,您可以提供超出範圍的值,並且EA只會呈現有趣的結果(意味着它們不檢查Update()上屬性的有效性)。

這一直是我的測試代碼(對不起,Perl的;-):

my $d = $rep->GetCurrentDiagram(); 
for my $dl (in $d->DiagramLinks) { 
    print $dl->Geometry . "\n"; 
    $dl->{Geometry} = 'SX=0;SY=10;EX=0;EY=0;'; 
    $dl->Update(); 
} 
$rep->ReloadDiagram($d->DiagramId); 

附:邊緣始終根據連接元件的相對位置確定(除非連接器末端已固定)。

+0

謝謝..我現在試試.. – rashmi

+0

我正在使用以下查詢,但我無法看到連接器起點的變化:Repository.Execute(「UPDATE t_diagramlinks SET t_diagramlinks.Geometry ='EDGE = 1;'WHERE t_diagramlinks.DiagramID = 5「); – rashmi

+0

晚上晚些時候我會看看。 –

相關問題