EAでHTML出力をC#でやってみた結果
最初の方法は使いものにならなかったorz
- ここからしばらく無駄な作業
EAひらいたらプロジェクト-リソースを開いてRTFテンプレートで何か名前をつけて作成。コピー元をデータベース設計 ドキュメントにしておく。
HTMLテンプレートだと使えないらしい。HTMLテンプレートが使いたいのに。
まんまここに書いてあることやってみただけなのだけども。。>https://www.sparxsystems.jp/forum/modules/xhnewbb/viewtopic.php?topic_id=4548
ソリューション作成して、参照DLLにEnterprise Architect Object Model X.XXを追加。
using EA; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ExportEAHtml { class Program { static void Main(string[] args) { Console.WriteLine("start export Html"); EA.Repository repo = new EA.Repository(); repo.OpenFile("hoge.eap"); Collection coll = repo.Models; //階層ある場合はパッケージの位置まで掘り下げ //getName()で名前みながらどこか確かめる Package package = coll.GetAt(0).Packages.GetAt(0).Packages.GetAt(0); DocumentGenerator generator =repo.CreateDocumentGenerator(); //テンプレート名指定 bool result = generator.NewDocument("sample"); if (result) { Console.WriteLine("success create documnt"); result = generator.DocumentPackage(package.PackageID, 0, "sample"); } if (result) { Console.WriteLine("success documnt package"); result = generator.SaveDocument("sample.html", EA.DocumentType.dtHTML); } if (result) { Console.WriteLine("success"); } else { Console.WriteLine("fail"); Console.WriteLine(generator.GetLastError()); } repo.CloseFile(); Console.WriteLine("end export Html"); } } }
で、最後に書いてあったRunHTMLReportという方を使ってみた。そしたら出来た。
using EA; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ExportEAHtml { class Program { static void Main(string[] args) { Console.WriteLine("start export Html"); EA.Repository repo = new EA.Repository(); repo.OpenFile("hoge.eap"); Collection coll = repo.Models; //階層ある場合はパッケージの位置まで掘り下げ //getName()で名前みながらどこか確かめる Package package = coll.GetAt(0).Packages.GetAt(0).Packages.GetAt(0); Diagram diagram = package.Diagrams.GetAt(0); DocumentGenerator generator =repo.CreateDocumentGenerator(); Project proj = repo.GetProjectInterface(); //出力先と画像の拡張子、指定があればスタイル、最後はhtmlファイルの拡張子 proj.RunHTMLReport(package.PackageGUID, "C:\\hoge", "png", "", "html"); repo.CloseFile(); Console.WriteLine("end export Html"); } } }
ほんとに全体のイメージだけみたいなら上の方で、開発時にテーブル定義とか中まで見たいときは下ので出せた