拉伸组件,而不是连接器

时间:2018-05-02 12:14:57

标签: annotations modelica

有时当组件被拉伸时,我们不希望拉伸连接器,因为它看起来很难看。例如,请参阅下面的Modelica.Blocks.Sources.RealExpression

的实例

是否可以在模型中实例化连接器(或其他竞争对手)时添加图形注释以避免这种情况?

祝你好运, Rene Just Nielsen

enter image description here

2 个答案:

答案 0 :(得分:3)

我认为目前无法完全按照你的意愿行事。

请注意,可以使用

阻止整个 realExpression的拉伸
annotation (Icon(coordinateSystem(preserveAspectRatio=true),...),
  Diagram(coordinateSystem(preserveAspectRatio=true),...),

但是,没有指定在RealExpression的连接器中使用它应该可以防止连接器的拉伸 - 同时仍然允许拉伸组件。

答案 1 :(得分:2)

我不知道允许使用现有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