Растянуть компонент, а не разъем - PullRequest
0 голосов
/ 02 мая 2018

Иногда, когда компонент растягивается, мы не хотим растягивать соединитель (и), потому что он выглядит некрасиво. См. Например, примеры Modelica.Blocks.Sources.RealExpression ниже

Можно ли добавить графическую аннотацию при создании экземпляра соединителя (или другого компонента) в модели, чтобы избежать этого?

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Мне неизвестно о решении, которое позволяет использовать существующий блок RealExpression. В качестве обходного пути вы можете создавать новые версии этого блока - либо расширяя его, либо дублируя его.

Вариант 1: Расширить RealExpression и установить фиксированный размер

Вы можете создать новое, более широкое реальное выражение, которое расширяет исходное реальное выражение, скрывает исходный значок и рисует новое.

Недостаток: для этого требуется одна модель на размер, но если размер используется часто, это должно быть хорошо.

model RealExpression_600x200
  extends Modelica.Blocks.Sources.RealExpression annotation (
      IconMap(extent={{100,-100},{300,100}}, primitivesVisible=false),
      DiagramMap(extent={{100,-100},{300,100}}, primitivesVisible=false));

equation 

  annotation (
    Diagram(coordinateSystem(extent={{-300,-100},{300,100}})),
    Icon(coordinateSystem(extent={{-300,-100},{300,100}}), graphics={
        Rectangle(
          extent={{-300,40},{300,-40}},
          lineColor={0,0,0},
          lineThickness=5.0,
          fillColor={235,235,235},
          fillPattern=FillPattern.Solid,
          borderPattern=BorderPattern.Raised),
        Text(
          extent={{-300,100},{300,60}},
          textString="%name",
          lineColor={0,0,255}),
        Text(
          extent={{-296,15},{296,-15}},
          lineColor={0,0,0},
          textString="%y")}),
    uses(Modelica(version="3.2.2")));
end RealExpression_600x200;

Screenshot of new RealExpression with fixed size

Вариант 2: дублировать RealExpression и установить размер с помощью параметра

Вы также можете продублировать выражение RealExpression и ввести параметр, который управляет графическими аннотациями. Общие размеры могут быть добавлены на выбор. Вы не должны повторно масштабировать компонент, но вместо этого выберите размер с параметром width.

block RealExpression "Real expression with varying size, set via parameter"
  parameter Integer width = 10 
    annotation(choices(choice=20 "Regular", 
                       choice=40 "Wide", 
                       choice=80 "Wiiiiiiide"));

  Modelica.Blocks.Interfaces.RealOutput y=0.0 "Value of Real output"
    annotation (
      Dialog(group="Time varying output signal"), 
      Placement(transformation(extent={{10*width/2,-10},{10*width/2+20,10}})));

  annotation (
    Icon(
      coordinateSystem(
        preserveAspectRatio=true, 
        extent={{-100,-100},{100,100}}), 
      graphics={
        Rectangle(
          extent={{-10*width/2,40},{10*width/2,-40}},
          lineColor={0,0,0},
          lineThickness=5.0,
          fillColor={235,235,235},
          fillPattern=FillPattern.Solid,
          borderPattern=BorderPattern.Raised),
        Text(
          extent={{-10*width/2+4,15},{10*width/2-4,-15}},
          lineColor={0,0,0},
          textString="%y"),
        Text(
          extent={{-10*width/2,90},{10*width/2,50}},
          textString="%name",
          lineColor={0,0,255})}),
    uses(Modelica(version="3.2.2")));
end RealExpression;

Screenshot of realExpressions with variable size, set via parameter

0 голосов
/ 02 мая 2018

Я не вижу способа сделать именно то, что вы хотите в данный момент.

Обратите внимание, что можно предотвратить растяжение целого realExpression, используя

annotation (Icon(coordinateSystem(preserveAspectRatio=true),...),
  Diagram(coordinateSystem(preserveAspectRatio=true),...),

Однако не указано, что использование этого в соединителе RealExpression должно предотвращать растяжение соединителя - при этом все же допускается растяжение компонента.

...