在脚本中使用元素 "diagram properties"

Working with elements "diagram properties" in script

我有自己的千年发展目标,由几个要素组成。当这些元素放置在不同的图表中时,我需要更改这些元素的视图。 MDG 中有一种称为“用户选择的设置”的机制,我使用它来更改元素的视图(例如,通过形状脚本函数“HasProp”)。但出于多种原因,我需要通过脚本更改元素的图 属性。有什么方法可以使用脚本中元素的图表 属性 吗?

这是可能的,但有点棘手。首先,您需要掌握存储在 t_diagram 中的右图 table 数据。发个SQL赞

SELECT StyleEx FROM t_diagram WHERE Diagram_ID = <theID>

当然<theID>必须是图的diagram id。现在你可以使用一些字符串操作了。下面是我的测试图带来的:

ExcludeRTF=0;DocAll=0;HideQuals=0;AttPkg=1;ShowTests=0;ShowMaint=0;SuppressFOC=1;MatrixActive=0;SwimlanesActive=1;KanbanActive=0;MatrixLineWidth=1;MatrixLineClr=0;MatrixLocked=0;TConnectorNotation=UML 2.1;TExplicitNavigability=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=1;m_bElementClassifier=1;ProfileData=;MDGDgm=VW VA Functional 3::Use case activity;STBLDgm=;ShowNotes=0;OPTIONS_9CEFE070=Structure=1:;VisibleAttributeDetail=0;ShowOpRetType=1;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;SuppressedCompartments=;Theme=:119;SaveTag=79E21B13;;

这是最好的 CSV。查看

OPTIONS_9CEFE070=Structure=1:;

实际上对图表属性进行编码。这里只有一个名称为 Structure 且其值设置为 1 的值。9CEFE070 指的是图表对象的 GUID。当然不是直接

所以用

找到图表本身的图表对象
SELECT Object_ID, ObjectStyle FROM t_diagramobjects

Object_ID 用于识别后面的对象(您可以使用连接来获取所需信息)。 ObjectStlye 包含类似(来自我的测试)

DUID=9CEFE070;HideIcon=0;

这就是十六进制字符串。现在你知道这个对象有一个图表 属性 集。

您应该手动发出一些查询以熟悉它。

现在,要设置 属性,您“只需”从图表的图表对象中找到 DUID(只需使用上面的查询)。现在您可以添加 OPTIONS_<duid> 部分,或者如果它已经存在,您需要使用相应的字符串操作对其进行修改。最后,您需要将图表 table 更新为

Repository.Execute("UPDATE t_diagram SET StyleEx = `<new string>` WHERE diagram_id = <theID>")

请注意,这是一个未记录的操作,您会得到

a) 没有支持和 b) 很容易破坏你的整个模型 c) a)的原因。

备份!