预订演示
前页 后页

为元素添加自定义分区

当您以正常的矩形格式在图表上显示元素时,可以在该框架内显示许多隔间以显示附加的特征,例如属性、操作和注记,使用图表“属性”和“元素”隔间可见性' 对话框。如果要显示其他添加的特征,例如相关元素或端口和部件,可以使用形状脚本将自定义隔间添加到元素的图表显示中。您通常会将此形状脚本脚本添加到配置文件中的构造型元素中。

创建自定义隔间后,您可以将链接的注记添加到元素以显示隔间的内容,就像您可以为元素的其他特征一样。

访问

在配置文件中定义构造型元素,并使用特殊属性“形状脚本”来指定添加自定义隔间的形状脚本。

功能区

设计>元素>特征>属性:[创建一个名为“_image”的属性]>单击“初始值”字段中的Browse.图标

设置>参考> UML类型>构造型:(选择或指定构造型):形状脚本>分配

上下文菜单

在图表中,右键单击元素|特征|属性:[创建一个名为 '_image' 的属性] |单击“初始值”字段中的Browse.

键盘快捷键

F9:[创建一个名为“ Browse. ”的属性] > 单击“初始值”字段中的浏览图标图标

向元素添加自定义隔间

此表提供有关创建定义自定义注记的形状脚本的注释,以及各种示例。

进程

描述

也见

开发脚本

对于选定的构造型,打开形状编辑器。

在脚本中,将shape main替换为:

  • 形状 ChildElement
  • 形状相关元素
如果您愿意,可以保持shape main ,以调整主元素的某些属性(例如颜色);但是,主要形状需要调用“DrawNativeShape()”才能正常工作。

此时,您可以使用 'HasProperty' 查询方法来搜索子元素或相关元素,以查找要在隔间中显示的特定属性(例如构造型)。形状脚本属性确定通过连接器链接到当前元素的元素A属性。

由形状脚本定义的每个单独的自定义隔间的可见性是使用“隔间可见性”对话框控制的。 ChildElement 隔间默认可见,可以使用隔间可见性选项隐藏,而 RelatedElement 隔间是隐藏的 默认情况下,必须使用隔离专区可见性选项显式启用。

还要注意,当子元素与父元素在图表上或不在图表上时(如示例1和 3 中所示),子元素可以显示在自定义隔间中。如果相关元素不在同一图表上(如示例 4 和 5 中所示),则它们只能在隔间中列出。

形状编辑器 绘图方法 查询方法 显示元素/连接器属性

附上链接注记

您可以使用以下两种方法之一来创建链接的注记以显示自定义隔间内容:

  • 方法1 (元素当前显示自定义隔间) - 突出显示自定义隔间中的相关或子元素名称,然后右键单击它并选择“创建链接注记”选项;自定义隔间会自动关闭,链接的注记会添加到列出该隔间中所有元素名称的图表中
  • 方法 2(元素不一定显示自定义隔间) - 从元素的“公共”页面图表一个注记工具箱,并使用注释链接连接器将其链接到包含自定义隔间的元素
    右键单击连接器并选择“将此注记链接到元素特征”选项,以显示“将注记链接到元素特征”对话框;单击“特征类型”字段中的下拉箭头,然后单击自定义隔间的名称,例如“属性”,然后单击确定按钮
    该隔间的内容显示在注记中
在方法 2 中,如果显示隔间,则该方法不会隐藏该隔间。如果隔间已隐藏,建议您使用此方法。

您对隔间中的元素列表或其名称所做的任何更改都会立即反映在注记中,以保持显示信息的准确性。

脚本示例1 : 添加隔间而不调整父元素

//为子元素添加隔间。

形状子元素

{

//选择子元素是否具有属性stereotype,如果有则设置

//属性的隔间名称。

if(HasProperty("stereotype", "属性"))

{

SetCompartmentName("属性");

}

//选择子元素是否具有公共范围,如果有,则添加+

//子隔间的符号。

如果(HasProperty(“范围”,“公共”))

{

AppendCompartmentText("+");

}

//将子元素名称添加到子隔间。

AppendCompartmentText("#NAME#");

}

属性属性检查所有子元素以查看它们是否具有 <<property>> 的形状脚本型。如果找到此构造型,则“SetCompartmentName”函数设置一个名为“属性”的隔间。

然后脚本检查子元素是否具有“公共”范围,如果有,则附加“+”符号。

最后,“AppendCompartmentText”函数将子元素的名称添加到隔间。

如果“SetCompartmentName”已经声明了一个隔间,则属于同一隔间的任何其他子元素都会自动添加到该隔间,而无需声明新的隔间名称(即,所有具有构造型 <<property>> 的子元素最终进入“属性”隔间)。

脚本示例2: 调整父元素的颜色并添加子隔间

//形状主要影响父级

主要形状

{

//设置父元素的颜色为红色

setfillcolor(255,0,0);

//绘制父母的原生形状

绘制形状();

}

//形状将子分隔添加到父元素。

形状子元素

{

if(HasProperty("stereotype", "part"))

{

SetCompartmentName("零件");

}

else if(HasProperty("stereotype", "mystereotype"))

{

SetCompartmentName("我的构造型");

}

AppendCompartmentText("#NAME#");

}

'shape main' 部分将主元素的颜色设置为红色,并根据原型子元素添加子隔间。

该脚本检查子元素是否应用了原型值“part”或“mystereotype”。如果有多个子元素,具有“part”和“mystereotype”原型的组合,则会创建两个隔间,称为“Parts”和“My构造型”。

为了显示隔间,必须调用“AppendCompartmentText”将内容插入隔间。

传递给“SetCompartmentName”和“AppendCompartmentText”的值不能包含换行符。

脚本示例3: 如果子元素在图上不可见,则仅列出隔间中的子元素

形状子元素

{

//选择子元素是否在图表上。

if(hasproperty("IsVisible", " False "))

{

//为零件创建一个隔间。

如果(有属性(“类型”,“部分”))

{

SetCompartmentName("零件");

}

//为端口创建一个隔间。

else if(hasproperty("type", "port"))

{

SetCompartmentName("端口");

}

//将子元素名称添加到隔间。

AppendCompartmentText("#NAME#");

}

}

此脚本为属于当前元素但在当前图表上不可见的端口和部件元素添加自定义隔间。

如果子元素属性True元素则返回False 。

如果子元素已经在图表上可见,这可以用来防止子元素被列在自定义隔间中,从而避免显示冗余信息。

脚本示例4:从拥有形状脚本的元素中显示作为依赖连接器目标的元素

形状相关元素

{

//选择我们正在处理的当前连接器是否有

//依赖类型。

if(HasProperty("连接器.类型", "依赖"))

{

//选择如果我们当前正在检查的元素是

//当前连接器的目标。

if(HasProperty("元素.IsTarget"))

{

//设置车厢名称

SetCompartmentName("dependsOn");

if(HasProperty("元素.构造型", ""))

{

}

else

{

AppendCompartmentText("«#Element.Stereotype#»");

}

AppendCompartmentText("#Element.Name#");

}

}

}

使用此脚本,如果 Class1 具有带有“RelatedElement”形状脚本脚本的构造型,并且 Class1 是目标 Class2 的 Dependency 连接器的源,则名称 Class2 将显示在类的隔间1 ,称为“dependsOn”。

脚本示例5: 在一个元素的一个隔间内显示一个已实现接口的列表

形状相关元素

{

//选择当前正在处理的连接器是否为Realization

if(HasProperty("连接器.类型", "实现"))

{

//只有相关元素we才显示这个隔间

//正在检查的是有这个的连接器的目标

//形状脚本元素作为源

if(HasProperty("元素.IsTarget"))

{

//如果元素是接口,则显示在

//'realizedInterfaces' 隔间

if(HasProperty("元素.类型", "接口"))

{

SetCompartmentName("realizedInterfaces");

AppendCompartmentText("#Element.Name#");

}

}

}

}

如果元素类1具有此形状脚本,并且是元素接口1的实现连接器的源,则名称 '接口1 ' 将显示在类1的 'realizedInterfaces' 隔间中。

注记

  • 如果您在分隔名称中使用标点符号,则会在保存脚本时将其删除;例如:“端口、部件和属性”变为“端口部件和属性”
  • 'RelatedElement'形状脚本具有检查连接器和连接器另一端的元素的扩展功能;它们仅适用于元素并且仅用于检索要在该元素的隔间内显示的信息

了解更多