【问题标题】:How to create Enterprise Architect packages, classes, attributes programmatically如何以编程方式创建 Enterprise Architect 包、类、属性
【发布时间】:2013-10-16 18:09:57
【问题描述】:

我正在尝试使用/理解 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");
}

【问题讨论】:

    标签: c# enterprise-architect


    【解决方案1】:

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

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

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

    然后Package 包含其他集合,例如PackagesElementsDiagrams。一个Diagram 有一个DiagramObjects 的集合。

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

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

    所以在你得到的代码中,AddNew() 不起作用,因为你试图在 Element 上调用它,而你需要在 Collection 上调用它。

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

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

    然后,查看参考——代码示例,尤其是打开存储库添加和管理图表

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

    【讨论】:

    • 感谢您的详细解答
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多