我有自己的千年发展目标,包括几个要素。当这些元素放置在不同的图表时,我需要改变它的视图。千年发展目标中有一种名为“用户选择的设置”的机制,我使用它来改变元素的视图(例如,通过形状脚本函数"HasProp“)。但出于几个原因,我需要通过脚本更改元素的图表属性。是否有任何方法处理脚本中元素的关系图属性?
发布于 2020-10-21 21:27:22
这是可能的,但有点棘手。首先,您需要掌握存储在t_diagram中的正确图表的表数据。发出类似的SQL
SELECT StyleEx FROM t_diagram WHERE Diagram_ID = <theID>当然,<theID>必须是图的图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功能3::用例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_diagramobjectsObject_ID用于标识背后的对象(您可以使用一个连接来获取所需的信息)。ObjectStlye包含的内容类似于(从我的测试)
DUID=9CEFE070;HideIcon=0;还有那根六角线。现在您知道这个对象有一个图表属性集。
您应该手动发出一些查询来熟悉这一点。
现在,要设置一个属性,您必须从关系图的图对象中找到DUID (只需使用上面的查询)。现在您可以添加这个OPTIONS_<duid>部件,或者如果它已经存在,您需要根据字符串操作来修改它。最后,您需要用
Repository.Execute("UPDATE t_diagram SET StyleEx = `<new string>` WHERE diagram_id = <theID>")请注意,这是一个无文档的操作,您将得到
( a)没有支撑和( b)可以轻易地打击你的整个模型,这是( c)的原因))。
有后援!
https://stackoverflow.com/questions/64471543
复制相似问题