c# - 如何以编程方式创建 Enterprise Architect 包、类、属性

标签 c# enterprise-architect

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

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

我试过了CSAddinDemo来自 Sparx,它工作正常,但没有显示如何添加/创建新的。

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

像这样的东西??

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");
}

最佳答案

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

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

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

Package 然后包含其他集合,例如 PackagesElementsDiagramsDiagram 具有 DiagramObjects 的集合。

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

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

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

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

帮助文件中有一些很好的入门资料。查看 Automation and Scripting -- Enterprise Architect Object Model,并阅读标题为Using the Automation Interface 的部分。

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

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

关于c# - 如何以编程方式创建 Enterprise Architect 包、类、属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376164/

相关文章:

c# - 在quickgraph中获取2个节点之间的最短路径

c# - 在c#中将XML文件转换为csv文件格式

uml - 企业架构师,序列图 : alternative return paths

c# - 获取Enterprise Architect包节点的所有子节点

interface - 企业架构师和 UML : subtleties when choosing interface or abstract class

c# - Boo 100% C# 兼容吗?

c# - 如何将 C# 数组传递到 QuantumSimulator Run() 命令中的 Q# 操作?

c# - 注入(inject)属性(递归)而不将其作为参数传递

code-generation - 如何在 Enterprise Architect 代码生成模板中转义引号

xml - 从 SVG 文件到 XML 文件的转换