You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cameo Systems Modeler:如何用图例自动为状态机转换按信号着色

在Cameo Systems Modeler中按触发信号为状态机转换着色的方案

方案一:用Legend的「Elements by Condition」结合OCL筛选

这是你尝试的方向,核心是用OCL表达式精准匹配触发特定SignalEvent的Transition:

  • 打开Legend面板,点击「Add Legend Item」
  • 在「Apply To」区域选择「Elements by Condition」,目标元素类型选「Transition」
  • 在「Condition」输入框中输入对应信号的OCL表达式:
    • 匹配触发Top信号的Transition:
      self.trigger->exists(t | t.event.oclIsKindOf(SignalEvent) and t.event.name = 'Top')
      
    • 匹配Middle信号:把表达式里的'Top'换成'Middle'
    • 匹配Bottom信号:换成'Bottom'
  • 给每个图例项设置专属颜色(比如Top用橙色、Middle用蓝色、Bottom用绿色)
  • 重复上述步骤,为三个信号分别创建图例项

注:OCL表达式的逻辑是检查当前Transition的触发集合中,是否存在关联目标SignalEvent的触发项。如果你的Transition只有单个触发信号,这个表达式完全适用;如果有多个触发,可调整为self.trigger->forAll(t | t.event.name = 'Top')来匹配所有触发都是Top信号的情况。

方案二:自定义属性+简化条件筛选

如果觉得OCL太繁琐,可以用自定义属性简化筛选:

  • 打开「Settings > Project Settings > Stereotypes」,创建一个名为SignalTriggered的构造型,添加字符串属性signalName,并将构造型应用到Transition元类
  • 给每个Transition应用SignalTriggered构造型,在属性栏设置signalName为对应的信号名(Top/Middle/Bottom)
  • 在Legend中设置条件为:
    self.signalName = 'Top'
    
  • 同样为三个信号分别配置颜色即可

方案三:直接样式批量应用(快速直观)

如果不需要自动动态匹配,手动批量设置样式更直接:

  • 按住Ctrl选中所有触发Top信号的Transition,右键选择「Format > Line」设置颜色
  • 点击「Style > Save as Style Template」,将这个样式保存为「TopSignalTransition」,之后遇到同类型Transition直接右键应用模板即可

内容的提问来源于stack exchange,提问作者Phil Hoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:18:19