1 件の投稿を表示中 (合計 1 個)
  • 作成者
    投稿
  • #11231
    匿名
    休止中

    PlantUML を使って、UML図を作成し、ビュワで開くマクロです。
    使い方は、ソースコードのコメントを参照下さい。

    PlantUML の例えば次のようなコードを選択して実行すると、この場合には、シーケンス図が表示されます。

    @startuml
    title シーケンス図
    scale 2.0
    participant 送り手 #Yellow
    participant 受け手 #Pink
    送り手 -> 受け手 : データ
    @enduml

    私はこのマクロを CTRL-U に割り当てています。

    //////////////////////////////////////////////////////////////////
    // @startuml~@enduml までの間にカーソルを置いて起動することにより、
    // 内容をクリップボードにコピーし、ファイル化して、
    // PlantUML に渡すことにより、UML 図を作成し、ビュワで開く。
    // 初回は、ビュワを起動するために @startulm の行にカーソルを置く。
    // 次回以降は、上記以外の行にカーソルを置くことで、ビュワ(=.png が Microsoft Office Picture Manager に割り付けられていると仮定)
    // の再起動を行わないで表示更新のみが行われる。
    // 動作の前提条件
    // PlantUML がインストールされている。
    // C:binEmEditor フォルダをワークフォルダとして使用する。
    // C:binPlantUML フォルダに plantuml.jar があると仮定する。
    //////////////////////////////////////////////////////////////////
    // 後でカーソルを戻すために現在の位置を記録する。
    // カーソルは、@startuml よりも後ろで、@enduml よりも前に置いてあると仮定する。
    yPosOld = document.selection.GetActivePointY(eePosView); // 現在行
    xPosOld = document.selection.GetActivePointX(eePosView); // 現在桁
    // @startuml を探す。
    bIsStartFound = document.selection.Find(“@startuml”, eeFindPrevious);
    if (!bIsStartFound) {
    alert(“Couldn’t find @startuml”);
    Quit();
    }
    yPosStart = document.selection.GetActivePointY(eePosView); // @startuml のある行が見つかった。
    xPosStart = document.selection.GetActivePointX(eePosView) – 9; // @startuml のある行が見つかった。
    // 引き続き @enduml を探す。
    bIsEndFound = document.selection.Find(“@enduml”, eeFindNext);
    if (!bIsEndFound) {
    alert(“Couldn’t find @enduml”);
    Quit();
    }
    yPosEnd = document.selection.GetActivePointY(eePosView); // @enduml のある行が見つかった。
    // 選択範囲の開始位置を @startuml の始まりの位置に設定する。
    // これで、@startuml~@enduml の範囲が選択される。
    document.selection.SetAnchorPoint(eePosView, xPosStart, yPosStart);
    // 選択範囲のテキストを変数に得る。
    strUml = document.selection.Text;
    // 選択範囲をコピーする。
    document.selection.Copy();
    // 選択範囲を解除する。
    document.selection.Collapse();
    // 検索のハイライトを解除する。
    document.HighlightFind=false;
    // カーソルの位置を戻す。
    document.selection.SetActivePoint(eePosView, xPosOld, yPosOld);
    // ファイルシステムオブジェクトを作成し、PlantUML.txt に書き込む。
    objFileSystem = new ActiveXObject(“Scripting.FilesystemObject”);
    objfileUmlTxt = objFileSystem.OpenTextFile(“C:binEmEditorPlantUML.txt”, 2, true/*create*/); // 1:Read, 2:Write, 8:Append
    objfileUmlTxt.Write(strUml);
    objfileUmlTxt.Close();
    // PlantUML を呼び出す。
    WshShell = new ActiveXObject(“WScript.Shell”); // シェルを用意する。
    WshShell.Run(“C:binPlantUMLplantuml.jar -jar C:binEmEditorPlantUML.txt”, 1, true); // シェルで外部プログラムを動作させる。
    if (yPosOld == yPosStart) {
    WshShell.Run(“C:binEmEditorPlantUML.png”, 1, false); // シェルで外部プログラムを動作させる。
    }

1 件の投稿を表示中 (合計 1 個)
  • このトピックに返信するにはログインしてください。