Translate

2020/06/05

モデルファイル中にある全てのダイアグラムのファイル出力

モデルファイル中にある全ての図をファイル出力したい場合があります。

自分は RCP版Papyrus に TeXLipse プラグインを導入していまして、Papyrusで作成したモデル図を LaTeX のソースから includegraphics して使うことが多いです。

その際、モデルファイル中の図の一括出力機能を使っています。モデル側で修正があった場合に修正したモデルが関係するダイアグラム全ての表示がすべて変更されるため、ドキュメント側でも図全体の整合を取ることが出来ます。

図の一括出力の具体的なやり方ですが、まず、あるプロジェクト中にAという名称のモデルファイルがあるとし、その中のモデル階層がダイアグラムも含めて以下の図の様になっているとします。


ここで図(Diagram)の置かれている階層ですが、
  • ルートの Model "A" の直下に ClassDiagram1 と ComponentDiagram1 があり、
  • ルートA下のパッケージ "X" に ClassDiagram2 と useCaseDiagram1 があり、
  • パッケージ X 下のパッケージ "Y" に CompositeStructureDiagram1 がある

となっています。

プロジェクトエクスプローラ上のモデルファイルAを選択しマウス右クリックで表示されるメニュー最下部の「Export All Diagrams..」を選択します。


選択すると以下の「Export All Diagrams」というダイアログが上がってくるので、ここで、
  • Select the output format: で所望する形式に変更(自分はPDFが多いです)
  • Prefix with qualified name をチェック

します。


これで[OK]を押すとダイアグラムファイルの生成・出力処理が実行され、終了すると以下のダイアログが表示されます。


これでプロジェクトエクスプローラ上でPDFファイルが生成されていることが分かります。

ファイル名は Papyrus が自動的につけますが、

上位のパッケージ種別_パッケージ名_ダイアグラム名

となっているみたいです。

実際、各ダイアグラムのPropertiesを見てみると、



となっており、この「Root element」もしくは「Owner」の「モデル種別名」と「モデル名」を用いた名前となっている模様です。

注意しないといけないのは

「複数のモデルファイルが存在し、そこから図をExportする場合に名前の競合が起こらないように」

することです。

今は生成されるファイル名が重ならないことを確認してからExportしているので問題に遭遇していませんが、競合が起こりうる話しなので注意が必要かと思います。

なお「パッケージAの下にパッケージBがあり、その下にまたパッケージAがあって」の場合で「階層は違うパッケージAの下に同じダイアグラム名があった場合」とかですかね。
試してはいませんが、気になる所です。。。

なお「ダイアグラム名を日本語にしていた場合」は「図出力がなされません」。無視されます。

こちらの方が要注意点ですね笑

そのため、自分は「ダイアグラム名に日本語は使わない」という運用をしています。