0

我目前正在使用 IBD 和 BDD 从 Cameo Systems Modeler 19.0 工作。

我目前正在建模的系统涉及一个由两个子组件(:first、:second)组成的组件(:Parent),并且我已经在我的主要 BDD 中建立了同样多的内容。每个 :Parent 由 1 个唯一的 :first 和 1 个唯一的 :second 组成。已经建立了从 :Parent 到 :first 和 :Parent 到 :second 的 1 对 1 组合关系。

在系统上下文中使用了这个主要组件的多个实例 - 在系统的 ibd 上,我可以根据需要实例化尽可能多的 :Parent 类(即 Parent 1:Parent,Parent 2:Parent,父母 3:父母等)

我的问题是,当我显示每个父实例组成的部分时(以显示每个 :Parent 由一个唯一的 :first 和 :second 实例组成),每个嵌套类都显示为同一个实例。对 Parent 1 上的 :first 和 :second 子项的更改:Parent 将相同的更改应用于 :Parent 的所有实例。

我想将这些嵌套块实例化为它们的父级所独有的 - 到目前为止,我让它工作的唯一方法就是简单地定义冗余块并根据需要显示它们,但我觉得必须有一些东西我错过了这将允许我为每个父实例实例化单独的子引用。

4

1 回答 1

0

当您显示系统的部件树时,它看起来像这样(我在父部件中添加了名称):

 - «System» System1
  - «part» part1:Parent
     - «part» itsFirst:first
     - «part» itsSecond:second
  - «part» part2:Parent
     - «part» itsFirst:first
     - «part» itsSecond:second

该系统的一个实例将包含两个第一个实例和两个第二个实例。相同类型的两个实例看起来相同,但仍然是可区分的实例。为了说明这一事实,您可以创建一个对象图,显示与您的 ibd 一致的七个唯一 InstanceSpecifications 的示例。

它们必须是单个实例的事实由组合关系给出。它的语义是排他性。任何实例只能是一个组合的一部分。请注意,我说的是“可以”。的一个实例first也可以放在某个架子上,并且根本不是复合的一部分。因此,关系是 0..1 到 1。一个实例first也可以是其他组合的一部分,只是不能同时 - 因此是排他性的。

现在您说您想更改 的 的某些属性firstsecond具有不同的值,具体取决于它们是否是part1或的嵌套部分part2。例如,它们可能在系统内具有物理位置。当然,每个实例都会有所不同。为此,SysML 引入了特定于上下文的初始值。Cameo Systems 建模器很好地支持它们。您将在系统 ibd 中部件的上下文菜单中找到一个条目(您必须显示 和 的嵌套部分part1part2。只需选择“工具/定义特定于上下文的初始值”。

其工作方式是,该工具随后创建带有值槽的 InstanceSpecifications,并将它们设置为相应系统部件的默认值。因此,当您在系统块旁边发现全新的元素时,请不要感到惊讶。

于 2020-06-04T14:36:16.193 回答