你将基本上做的是创建一个概览图,只需从浏览器中拖放相关图即可。这提供了一个选择框
,你只是离开第一选择Diagram Frame
。 EA将创建一个新的对象,其名称中提供了一个名称(如果您有需要,您可以离开它,但也可以更改它)。现在拖动的图表将显示在总览图上的命名框架内。您无法缩放此图,因此它将具有原始图的大小加上其周围的框架。
注意:您可以在上面的对话框中使用Hyperlink
来创建用于导航的图表之间的好的和短的链接。
现在用于脚本部分。我将使用元语言,但您可能会猜测如何使用您的首选语言。首先要找到总览图。您可以通过在浏览器中右键单击并使用Copy/Copy Node GUID...
来查询其图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会将框架扩展到指定尺寸以上的最小值。
为了查看结果,您需要关闭/打开总览图。我会把这个作为锻炼留给你:-)