2013-10-15 56 views
3

我想在C#中使用/理解Interop.EA和EA类以及如何以编程方式创建图表。如何以编程方式创建Enterprise Architect包,类和属性

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

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

我的目标是在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"); 
} 

回答

8

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

除了Repository类(它是EA与所有交互的顶级类)之外,您不需要自己创建对象。相反,您在你遍历各个CollectionsAddNew()调用 - 这也适用于包,元件,图,框图对象,连接器,属性,标记值,等等等等

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

A Package然后包含额外的收藏,例如Packages,ElementsDiagrams。 A Diagram有一个DiagramObjects的集合。

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

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

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

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

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

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

最后,请注意,加载项是扩展EA并从EA进程内运行的一段代码。如果您想要创建新模型或对现有模型进行更改,则这不是必需的;如果您想与EA的GUI集成或响应由EA触发的各种事件,则只需编写一个加载项即可。

+0

谢谢您的详细解答 – izbrannick

相关问题