您基本上要做的是创建一个概览图,然后从浏览器中拖放相关图表。这提供了一个选择框
您只留下第一个选择Diagram Frame。 EA 将使用图表名称中建议的名称创建一个新对象(您可以保留该名称,但如果您有需要也可以更改它)。现在,拖动的图表将出现在概览图上的命名框架内。您无法缩放此图表,因此它将具有原始图表的大小加上它周围的框架。
注意:您可以在上面的对话框中使用Hyperlink 在图表之间创建漂亮而简短的链接以进行导航。
现在是脚本部分。我将使用元语言,但您可能会猜到如何以您的首选语言使用它。首先是找到概览图。您可以通过在浏览器中右键单击它并使用Copy/Copy Node GUID... 来查询其图表指南。现在使用该 id,您可以通过(下面的示例 guid)找到它:
overview = rep.GetDiagramByGUID("{A006B95E-1237-4778-A339-D1B407C6FD5C}")
接下来是找到要在概览中显示的单个图表。这取决于您如何找到它们。最终,它们将位于存储库中的某些位置。要在第一个根目录的第一个视图中静态加载第一个包中的第一个图表,您可以调用
model = repository.Models.GetAt(0)
view = model.Packages.GetAt(0)
package1 = view.Packages.GetAt(0)
dia1 = package1.Diagrams.GetAt(0)
您可能会使用更智能的方法来迭代并找到相关图表。
现在有了这些图表对象,您可以创建图表框架。这需要放在包中的某个位置。为简单起见,我使用package1,但您最终会将它们放在概览图的包中。
frame = package1.Elements.AddNew(dia1.Name, "UMLDiagram")
frame.Update()
sql = "UPDATE t_object SET PDATA1=" + str(dia1.DiagramID) + " WHERE Object_ID=" + str(overview.diagramID
repository.Execute(sql)
这是巫毒教,我知道。 API 不提供将UMLDiagram 元素与引用的图表链接的方法。所以这必须直接戳到数据库中。
最后,可以将新创建的框架对象放在总览图中:
diagramObj = overview.DiagramObjects.AddNew("l=10;r=110;t=-20;b=-80","")
diagramObj.ElementID = frame.ElementID
diagramobj.Update()
从这个 EA 开始,y 轴的坐标从顶部开始朝向负数(l, r, t, b 代表,猜测)。 EA 会将他的框架扩展到指定大小之上的最小值。
为了查看结果,您需要关闭/打开概览图。我会把它作为练习留给你:-)