Vbscript Sparx企业架构师获得标记的´;值来自于otDiagram VB脚本代码

Vbscript Sparx企业架构师获得标记的´;值来自于otDiagram VB脚本代码,vbscript,enterprise-architect,Vbscript,Enterprise Architect,我有一个UML图,所有组件都有标记值。我想用元素名检索标记的值。类似这样的东西来获取标记值,我有代码,但不知道如何为图表启动它 function TVGetElementTaggedValue( theElement, taggedValueName, defaultValue ) TVGetElementTaggedValue = defaultValue if not theElement is nothing and Len(taggedValueName) > 0

我有一个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

图表上没有标记的值。

最后,这是我得到的解决方案,它最终成功了:

  • 首先选择如下类型:
    Repository.gettreeselectioneditemtype()=otDiagram
  • 调用函数并保留一个变量来存储数据,如下所示:
    Roles=TVGetElementTaggedValue(元素,“角色”、“角色”、“角色”)
  • 以下是函数:

  • 最终印刷品:


  • 谢谢您的帮助。

    图表不是一个好的工具!你想得到图表对象的标记值吗?是的,这是正确的,这是一个uml图表,我有我的标记值,想用vb脚本检索。这是一个uml图表,我有我的标记值,想用vb脚本检索。根据Ajay的自我回答,你有什么要做的吗在您的答案中更改/查看/增强?@xmojmr不太可能,无论自我回答中的代码在做什么(我不太清楚),它都不会对图表上定义的标记值做任何事情。@GeertBellekens对我来说,它的工作实际上是我在使用相同的代码。但请确定图表的类型。我的意思是,请使用以下命令:如果(Repository.gettreselectedItemType()=otDiagram)'显示脚本输出窗口Repository.EnsureOutputVisible“script”将图形变暗为EA.Diagram设置为Diagram=Repository.GetTreeSelectedObject(),然后调用函数:TVGetElementTaggedValue(元素,“您的taggedvaluename”,“”,“”)
    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
    
    Session.Output("Roles:   " + CStr(Roles))