【问题标题】:Expand all sub packages in Enterprise Architect展开 Enterprise Architect 中的所有子包
【发布时间】:2018-06-07 09:29:18
【问题描述】:

我正在开发 Enterprise Architect C# 插件。我正在项目浏览器中创建多个包和元素。

我正在使用Repository.ShowInProjectView() API 来关注项目浏览器中的一个元素。目前我要求模型中第一个包的所有子包在元素创建完成后展开。

是否有一个 EA API 可用。请帮忙。提前致谢。

【问题讨论】:

    标签: c# packages enterprise-architect


    【解决方案1】:

    正如@Arshad 所说。

    您可以只编写一个递归方法来调用每个叶子包上的Repository.ShowInProjectView()

    就像(在元语言中)

    func unfold(root) {
      if root.packages.count == 0 { 
        Repository.ShowInProjectView(root.element);
        return;
      }
      for subRoot in root.packages { unfold(subRoot); }
    }
    

    这将通过一个包的所有子包递归。当到达叶子时,它会以Repository.ShowInProjectView 展开(当然还有它的所有父节点)。

    要关注包的第一个元素,请使用

    Repository.ShowInProjectView(package.elements.getat(0))
    

    【讨论】:

    • 子包在项目浏览器中显示时不会展开,因此您必须使用子包的自有元素来强制它展开。
    • @GeertBellekens 这不正是我要说的吗?
    • 不,我是说您必须深入到元素级别才能扩展所有包。如果只对包进行迭代,最底层的包是不会展开的。
    • @GeertBellekens@ThomasKilian 谢谢..如果有多个包并且其中是否包含元素..是否可以专注于该包中可用的第一个元素。
    • 是的,这是可能的。但我猜你在某种程度上有问题?请解释
    【解决方案2】:

    没有任何 API 调用可用于扩展项目浏览器中的所有子包。

    【讨论】:

    • 谢谢。我需要关注模型中第一个包的第一个元素。使用 Repository.ShowInProjectView() 焦点可以在新创建的元素上正常工作,但它并不总是如上所述的第一个元素。
    猜你喜欢
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2014-01-01
    • 2014-05-21
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多