我正在尝试使用/理解 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
然后包含其他集合,例如 Packages
、Elements
和 Diagrams
。 Diagram
具有 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/