2017-07-03 19 views
1

図のすべてのコネクタラベルの「上部」部分を非表示にしたい。このために、私は、スクリプトを設定しようとしたが、現在は(また、私は残しておきたい「底」のラベル)ALLラベル非表示にします。Enterprise Architect:コネクタの「トップ」ラベルのみをプログラムで非表示にする

// Get a reference to the current diagram 
var currentDiagram as EA.Diagram; 
currentDiagram = Repository.GetCurrentDiagram(); 

if (currentDiagram != null) 
{ 
    for (var i = 0; i < currentDiagram.DiagramLinks.Count; i++) 
    { 
     var currentDiagramLink as EA.DiagramLink; 
     currentDiagramLink = currentDiagram.DiagramLinks.GetAt(i); 

     currentDiagramLink.Geometry = currentDiagramLink.Geometry 
      .replace(/HDN=0/g, "HDN=1") 
      .replace(/LLT=;/, "LLT=HDN=1;") 
      .replace(/LRT=;/, "LRT=HDN=1;"); 
     if (!currentDiagramLink.Update()) 
     { 
      Session.Output(currentDiagramLink.GetLastError()); 
     } 
    } 
} 

は私が手動で(コンテキストメニューのみトップラベルを隠しますコネクター/可視性/ラベル表示の設定)、DiagramLinksのジオメトリプロパティは変更されないため、詳細なラベルの可視性情報はモデルの他の場所に含める必要があります。

誰かが自分のスクリプトを変更する方法を知っていますか?

ありがとうございます!

EDIT:次のように詳細なラベルの可視性を編集するための ダイアログが見えます: Enterprise Architect Label Visibility Dialog

私の目標は、プログラム「トップラベル」のチェックボックスのチェックを外しています。 Geometry

+0

「トップ」とは正確に何を意味するのかを写真で明確にすることはできますか? –

+0

イメージを追加しました。 – blackcomb

答えて

0

は、あなたがそうLLT、次のセミコロンの間にあなたがHDN=0を見つけて、HDN=1でそれを交換する必要が

LLT=CX=36:CY=13:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0; 

のような部分文字列を検索します属性。上記のような単純なグローバルな変更はうまくいかない。正しく動作させるには、正規表現LLT=([^;]+);のようなワイルドカードが必要です。

+0

ありがとうございます、私はLLTとLRTのためだけにHDNを1に設定する必要があります。グローバルではありません。私はこの置き換えコードで解決しました: 'currentDiagramLink.Geometry = currentDiagramLink.Geometry \t \t \t \t .replace(/(LLT = [^;] * HDN)= 0([^;] *;)/、" $ 1 = 1 $ 2" ) \t \t \t \t .replace(/(LRT = [^;] * HDN)= 0([^;] *;)/、 "$ 1 = 1 $ 2") \t \t \t \t .replace(/LRT =; /、 "LRT = HDN = 1;");/LLT =; /、 "LLT = HDN = 1;" – blackcomb

関連する問題