【问题标题】:Sparx Enterprise Architect to get the Tagged ´Value from otDiagram VB Script codeSparx Enterprise Architect 从 otDiagram VB 脚本代码中获取标记的“值”
【发布时间】:2014-10-30 00:43:34
【问题描述】:

我有一个 UML 图,所有组件都有标记值。我想用元素名称检索标记值。像这样获取我有代码但不知道如何为图表启动它的标记值。

function TVGetElementTaggedValue( theElement, taggedValueName, defaultValue )
    TVGetElementTaggedValue = defaultValue

    if not theElement is nothing and Len(taggedValueName) > 0 then
        dim taggedValue as EA.TaggedValue
        set taggedValue = theElement.TaggedValues.GetByName( taggedValueName )

        if not taggedValue is nothing then
            TVGetElementTaggedValue = taggedValue.Value
        end if
    end if

end function

【问题讨论】:

  • 图表不是EA.Element object
  • 您想获取图表对象的标记值吗?
  • 是的,它是一个 uml 图,我有我的标记值并想使用 vb 脚本检索。

标签: vbscript enterprise-architect


【解决方案1】:

图表上没有标记值。

【讨论】:

  • 它是一个 uml 图,其中我有我的标记值并想使用 vb 脚本检索。
  • 鉴于 Ajay 的自我回答 stackoverflow.com/a/26628799/2626313,您的回答有什么需要更改/审查/增强的吗?
  • @xmojmr 不,不是真的,无论自我答案中的代码在做什么(我不太清楚),它没有对图表上定义的标记值做任何事情。跨度>
  • @GeertBellekens 对我来说它的工作实际上我使用的是相同的代码。但是请输入图表的类型。我的意思是请使用这个:if (Repository.GetTreeSelectedItemType() = otDiagram) ' 显示脚本输出窗口 Repository.EnsureOutputVisible "Script" 将 theDiagram 调暗为 EA.Diagram 设置 theDiagram = Repository.GetTreeSelectedObject() 然后调用函数:TVGetElementTaggedValue (元素,“你的标记值名称”,“”,“”)
【解决方案2】:

最后这是我拥有的解决方案,它终于奏效了:

  1. 首先选择这样的类型:Repository.GetTreeSelectedItemType() = otDiagram
  2. 调用一个函数并保留一个变量来存储数据,如下所示: Roles = TVGetElementTaggedValue(element, "Roles", "", "")
  3. 这里是函数:

Function TVGetElementTaggedValue( theElement, taggedValueName, defaultValueMissing, defaultValueEmpty )

    if not theElement is nothing and Len(taggedValueName) > 0 then      
        dim taggedValue as EA.TaggedValue
        set taggedValue = theElement.TaggedValues.GetByName( taggedValueName )

        if taggedValue is nothing then
            TVGetElementTaggedValue = defaultValueMissing
' Dump warning          
'Session.Output(theElement.Name & " " & taggedValueName & " TAG Missing")           
        else
            if taggedValue.Value = "" then
                TVGetElementTaggedValue = defaultValueEmpty     
' Dump warning          
'Session.Output(theElement.Name & " " & taggedValueName & " Value Missing")         
            else
                TVGetElementTaggedValue = taggedValue.Value
            end if
        end if
    end if

end function
  1. 最终打印:

Session.Output("Roles:   " + CStr(Roles))

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多