Назначьте определенный стиль соединения для соединителя в Modelica

В Modelica можно определить аннотации, прикрепленные к объекту, например к соединителю, которые изменяют свой графический вид.

Можно ли также определить, как будет выглядеть соединение от одного разъема к другому? Например, два экземпляра класса соединителя «foo» всегда будут иметь пунктирную линию в качестве соединения, а два экземпляра класса «bar» будут иметь более толстую сплошную линию.

До сих пор я заметил, что линии соединений принимают цвет внешнего цвета обводки разъема, но это все. И я не нашел ничего в документации, связанной с этим.


person Gerome Pistre    schedule 28.04.2016    source источник


Ответы (2)


Да, это возможно:

Если вы посмотрите на Modelica.Blocks.Examples.BusUsage_Utilities.ControlBus, вы увидите, что он простирается от значка (Modelica.Icons.SignalBus) и помещает маленький желтый прямоугольник поверх значка:

Значок с прямоугольником

Если вы измените спецификацию прямоугольника в аннотации соединителя, видимые линии между соединителями будут отображаться в стиле прямоугольника, например.

изменение внешнего вида соединения с помощью аннотации

Подключенные шины ControlBus выглядят следующим образом: Соединение между шинами управления

На информационном слое Modelica.Blocks.Examples.BusUsage есть несколько замечаний по этому поводу.

С уважением, Рене Жюст Нильсен

person Rene Just Nielsen    schedule 28.04.2016

В дополнение к ответу Рене Джаста Нильсена также возможны условные присвоения, как показано для LinePattern в следующем примере:

parameter Boolean dashy=true;
.....
equation
  connect(pipe3.port_b,pipe4. port_a) annotation (Line(
      points={{20,0},{20,0},{20,10},{0,10},{0,16},{0,20},{0,20}},
      color={0,127,255},
      thickness=0.5,
      pattern=if dashy then LinePattern.Dash else LinePattern.Solid));

Та же идея работает и в других местах, для значков, соединений, соединителей и атрибутов, таких как толщина, цвет, видимость. Таким образом, вы можете установить Boolean на другое значение в ваших двух классах, или, если вам нужно больше вариантов, чем просто true и false, используйте перечисление или даже сравнение, например if m_flow<0.

person matth    schedule 28.04.2016