2017-06-08 16 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には、CSV形式のリストを保持する属性Geometryがあります。詳細な説明は私の内部の本で見つけることができますが、相対的なXとYの位置を指定するパラメータSXSYを探して、開始オブジェクトの半分の幅と高さを変えることができます。同様に、EXEYが終了します。最後にEDGEパラメーターは、開始オブジェクトでコネクターが開始するエッジからのエッジを指定します。 2 =左; 3 =上; 4 =右

編集1:私はちょっと振り回されましたが、私は現時点では心が開いていません。空のEAPを作成し、2つの2つの要素をダイアグラムに配置し、それらを接続する必要があります。今すぐSELECT geometry FROM t_diagramlinksをSQLスクラッチパッドで実行してください。コネクター/要素を移動してダイアグラムを保存する(または変更はデータベースに書き込まれません)、SQLを再発行してSXなどへの影響を確認してください。

さらに、GeometryをAPI私がお勧めするものです。さらに、図をリロードして、グラフィックスに反映された更新を確認する必要があります。

編集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); 

P.S.エッジは常に、接続された要素の相対的な位置決めによって決まります(コネクタの端部が固定されていない場合)。

+0

ありがとうございます。今すぐ試してみます – rashmi

+0

次のクエリを使用していますが、コネクタの開始点に変更が見られません:Repository.Execute( "UPDATE t_diagramlinks SET t_diagramlinks.Geometry = 'EDGE = 1; 'WHERE t_diagramlinks.DiagramID = 5'); – rashmi

+0

私は夜遅くに見ていきます。 –

関連する問題