3

我正在尝试使用/理解 C# 中的 Interop.EA 和 EA 类以及如何以编程方式创建图表。

我正在处理来自另一个 Web 应用程序的用户数据(.XML 文件(不是 XMI))。

我已经从 Sparx 尝试了 CSAddinDemo,它工作正常,但没有显示如何添加/创建新的。

我的目标是在 C# 中创建 EA 类图表单 XML 数据。

像这样的东西??

public void EA_create()
{
    EA.DiagramObject d = new DiagramObject();
    EA.Element e = new Element();

    EA.Element elementEa = EA.Element.AddNew("Requirement", "non-functional");
    elementEa.Update();
    elements.Refresh();
    //MessageBox.Show("Class created");
}
4

1 回答 1

8

首先,您需要一个 EA 项目(又名“存储库”)来工作。为了创建一个新的 EA 项目(.EAP 文件),请使用Repository.CreateModel(). 要打开现有的,请使用Repository.OpenFile().

除了Repository作为所有与 EA 交互的顶级类的类之外,您不需要自己创建对象。相反,你调用你遍历AddNew()的各种Collections——这适用于包、元素、图表、图表对象、连接器、属性、标记值等。

Repository.Models是这样一个集合(的Packages)。

然后A包含其他集合,Package例如和。A有一个集合。PackagesElementsDiagramsDiagramDiagramObjects

ADiagramObject是一 (1) 个图表中元素的图形表示(请记住,元素仅存储在一个包中,但可以显示在任意数量的图表中)。

EA 不允许您在包树的顶层(称为根节点)创建任何图表或元素;您必须首先创建一个子包。所以至少你需要为每个元素创建 one Packageand one Diagram, number of Elementsand one 。DiagramObject

因此,在您拥有的代码中,AddNew()它不起作用,因为您试图在 an 上调用它,Element而您需要在 a 上调​​用它Collection

假设是 a ,您对Update()and的使用是正确的。您必须始终在对对象进行任何更改后调用 Update,并在对集合进行任何更改后调用 Refresh。Refresh()elementsCollection

帮助文件中有一些很好的入门资料。查看自动化和脚本 - Enterprise Architect 对象模型,并阅读标题为使用自动化接口的部分。

然后,查看参考 - 代码示例,尤其是Open the RepositoryAdd and Manage Diagrams

最后,请注意,插件是扩展 EA 并在 EA 进程内运行的一段代码。如果您想创建新模型或对现有模型进行更改,则无需这样做;如果您想与 EA 的 GUI 集成或响应 EA 触发的各种事件,您只需要编写一个 Add-In。

于 2013-10-15T13:07:01.603 回答