掲示板一覧   -   トピック一覧
   EA API
     APIを用いてポート要素をダイアグラムに配置できない


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
mogass
投稿日時: 2014-12-8 10:42
EA Administrator
投稿: 171

APIを用いてポート要素をダイアグラムに配置できない

サポートに頂きましたご質問と回答の要約です。

○ご質問

APIで、コンポーネント要素と付属要素のポートをダイアグラムに配置する、
下記のコードをC#で作成・実行したとき、EA11.1の場合、
最終行でCOMExceptionが発生してしまいます。

ただし、"同じPCで"EAのバージョンを11.1→10.0に落としたところ
同じコード、同じEAPファイルでもエラーは発生せずに正常に動作しました。

確認した環境は以下の通りです。
×(エラー発生した環境)
(1) EA 11.1.1111、Win 7 Ultimate SP1 (32bit)
(2) EA 11.0.1107、Win 7 Pro SP1 (64bit)
(3) EA 11.0.1106、Win 7 Pro SP1 (32bit)

○(正常に動作した環境)
(4) EA 10.0.1009、Win 7 Ultimate SP1 (32bit)
※(1)と(4)は同じPC
※いずれも.NET 4

なお、同様の操作をAPIを使用せずにGUI(EAアプリ)上で行った場合は
EA11.1でも問題なく動作します。

ご確認のほど、よろしくお願いいたします。

---確認用コード(ここから)---
Repository rep = new Repository();
rep.OpenFile(@"XXX.eap");

Package root = rep.Models.GetAt(0) as Package;

Package pack = root.Packages.AddNew("pack", "") as Package;
pack.Update();

Element comp = pack.Elements.AddNew("comp", "Component") as Element;
comp.Update();

Element port = comp.EmbeddedElements.AddNew("port", "Port") as Element;
port.Update();

Diagram diagram = pack.Diagrams.AddNew("diagram", "Component") as Diagram;
diagram.Update();

DiagramObject doComp = diagram.DiagramObjects.AddNew("", "");
doComp.ElementID = comp.ElementID;
doComp.Update();

DiagramObject doPort = diagram.DiagramObjects.AddNew("", "");
doPort.ElementID = port.ElementID;
doPort.Update();
---確認用コード(ここまで)---


○回答

このたびはご迷惑をお掛けし誠に申し訳ございません。

お問い合わせの内容を私どもの環境で再現致しました。
開発元に報告し、修正を依頼いたします。

この現象の回避を行うことは難しいと思われますので、
修正までお待ちいただくしかないかと思われます。

今しばらくご迷惑をお掛け致します。
誠に申し訳ございません。


○ご返信

いろいろ試していたところ回避方法を発見したのでご報告しておきます。

どうやらポート要素の"親要素"(のDiagramObject)を追加する際に
サイズ指定をするとエラーが発生しないようです。

【対策前】
DiagramObject doComp = diagram.DiagramObjects.AddNew("", "");
【対策後】
DiagramObject doComp =
diagram.DiagramObjects.AddNew("l=100;r=400;t=100;b=200;", "");

少なくとも私の使いたい環境では(今のところ)回避可能ですので
ひとまずこの方法で逃げておきます。

以上、デバッグ時の参考になれば幸いです。


○回答

この度はご迷惑をお掛けし誠に申し訳ございません。

いただきましたコードで、回避可能であることを確認しました。
教えていただき、誠にありがとうございます。
非常に助かります。

修正まではしばらくお時間を頂くことになるかと思いますので、
教えていただいた方法で回避していただきますようお願いいたします。

引き続きご迷惑をお掛けし誠に申し訳ございません。

今後とも宜しくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ