0

我正在使用 Modelio 3.7。

我有两个引用相同模型对象的活动图。这两个图显示了相同的对象,具有不同的样式。(即它们代表相同的流程,用不同的颜色来表达两种不同的观点。

我正在尝试编写一个 Jython 脚本,该脚本将一个图表作为图形布局的参考,并确保第二个图表上的相应图形出现在完全相同的位置,并且第二个图形上的链接遵循与第一张图中的路径完全相同。

我对节点的布局没有问题:

def syncNodes(ref, target):
    if differentRectangles(ref.getBounds(), target.getBounds()):
        print "=======> ACTION: move bounds from " + target.getBounds().toString() + " to " + ref.getBounds().toString()
        target.setBounds(ref.getBounds())
    else:
        print "=======> NOOP: bounds from " + target.getBounds().toString() + " to " + ref.getBounds().toString()

但链接完全是另一个问题:

def syncLinks(ref, target):
    if differentPaths(ref.getPath(), target.getPath()):
        print "=======> ACTION: change path from " + target.getPath().toString() + " to "  + ref.getPath().toString()
        target.getPath().setPoints(ref.getPath().getPoints())
    else:
        print "=======> NOOP: change path from " + target.getPath().toString() + " to "  + ref.getPath().toString()
    
    if not target.getRouterKind().equals(ref.getRouterKind()):
        print "=======> ACTION: change routerkind from " + target.getRouterKind().toString() + " to "  + ref.getRouterKind().toString()
        target.setRouterKind(ref.getRouterKind())
        target.setRouterKind(IDiagramLink.LinkRouterKind.BENDPOINT)
    else:
        print "=======> NOOP: change routerkind from " + target.getRouterKind().toString() + " to "  + ref.getRouterKind().toString()

链接最终穿过图表外围的奇怪位置,路径中的点最终与我设置的不同target.getPath().setPoints(ref.getPath().getPoints())

有没有办法确保目标箭头遵循与参考图中相同的路径?

4

0 回答 0