2

I have recently migrated to modelica version 4.0.0, am am having some problems, it turns out that some visualizer settings for the SignalArrow and sensors, such as the absoluteSensor had their diameter settings removed,

Changes in Modelica Version 4

Namely:

WorldForce  The parameters diameter and N_to_m have been removed.

AbsoluteSensor The parameter arrowDiameter has been removed.
RelativeSensor The parameter arrowDiameter has been removed.
Distance      The parameter arrowDiameter has been removed.

And many other things. This is somewhat frustrating, however I managed to find these missing settings have been moved into the world class,

seen here

However these changes do not affect the diameter sizes of these arrows from sensors and visualizers.

For example, in this image, the yellow and pink arrows should be 5mm (the same diameter of the black coordinate arrows), and not whatever modelica has calculated them to be.

enter image description here

I have attempted removing all visualizers and reinserting them, disabling then renabling them and everything else I can think of. Their diameters are being calculated from something somewhere. I however cannot seem to find it.

How can this be fixed or is this just broken in 4.0.0?

Added Code v 3.2.3

example

model asdfa
  inner Modelica.Mechanics.MultiBody.World world(label2 = "z", label1 = "x", n = {0, 0, -1}) annotation(Placement(visible = true, transformation(origin = {-110, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Joints.Revolute revolute1(n = {0, 1, 0}) annotation(Placement(visible = true, transformation(origin = {-50, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation fixedTranslation1(r = {0, -1, 0}, animation = false) annotation(Placement(visible = true, transformation(origin = {10, 72.396}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.PointMass pointMass1(m = 1) annotation(Placement(visible = true, transformation(origin = {52.304, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Visualizers.SignalArrow signalArrow1(diameter = 0.008) annotation(Placement(visible = true, transformation(origin = {85, 55}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation fixedTranslation2(r = {1, 0, 0}, animation = false) annotation(Placement(visible = true, transformation(origin = {17.792, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Sensors.AbsoluteSensor absoluteSensor1(get_r = true, resolveInFrame = Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.world, arrowDiameter = 0.008, arrowColor = {255, 0, 255}) annotation(Placement(visible = true, transformation(origin = {45, -21.932}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(revolute1.frame_a, world.frame_b) annotation(Line(visible = true, origin = {-80, 30}, points = {{20, 0}, {-20, -0}}));
  connect(revolute1.frame_b, fixedTranslation2.frame_a) annotation(Line(visible = true, origin = {-16.104, 30}, points = {{-23.896, 0}, {23.896, 0}}));
  connect(fixedTranslation1.frame_a, world.frame_b) annotation(Line(visible = true, origin = {-27.5, 51.198}, points = {{27.5, 21.198}, {22.5, 21.198}, {22.5, -21.198}, {-72.5, -21.198}}));
  connect(absoluteSensor1.r, signalArrow1.r_head) annotation(Line(visible = true, origin = {60, -16.449}, points = {{-25, -16.483}, {-25, -21.483}, {25, -21.483}, {25, 59.449}}));
  connect(fixedTranslation1.frame_b, signalArrow1.frame_a) annotation(Line(visible = true, origin = {36.25, 63.698}, points = {{-16.25, 8.698}, {-11.25, 8.698}, {-11.25, -8.698}, {38.75, -8.698}}));
  connect(fixedTranslation2.frame_b, pointMass1.frame_a) annotation(Line(visible = true, origin = {40.048, 30}, points = {{-12.256, 0}, {12.256, 0}}));
  connect(absoluteSensor1.frame_a, pointMass1.frame_a) annotation(Line(visible = true, origin = {39.922, -5.546}, points = {{-4.922, -16.386}, {-9.922, -16.386}, {-9.922, -1.386}, {12.383, -1.386}, {12.383, 35.546}}));
  annotation(Diagram(coordinateSystem(extent = {{-150, -90}, {150, 90}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})), Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5}), graphics = {Rectangle(visible = true, lineColor = {0, 114, 195}, fillColor = {255, 255, 255}, extent = {{-100, -100}, {100, 100}}, radius = 25), Text(visible = true, textColor = {64, 64, 64}, extent = {{-150, 110}, {150, 150}}, textString = "%name")}));
end asdfa;

Migrated to v4.0.0

version 4 arrows

model asdfa
  inner Modelica.Mechanics.MultiBody.World world(label2 = "z", label1 = "x", n = {0, 0, -1}, defaultArrowDiameter = 0.008) annotation(Placement(visible = true, transformation(origin = {-110, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Joints.Revolute revolute1(n = {0, 1, 0}) annotation(Placement(visible = true, transformation(origin = {-50, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation fixedTranslation1(r = {0, -1, 0}, animation = false) annotation(Placement(visible = true, transformation(origin = {10, 72.396}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.PointMass pointMass1(m = 1) annotation(Placement(visible = true, transformation(origin = {52.304, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Visualizers.SignalArrow signalArrow1 annotation(Placement(visible = true, transformation(origin = {85, 55}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  /*diameter = 0.008*/
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation fixedTranslation2(r = {1, 0, 0}, animation = false) annotation(Placement(visible = true, transformation(origin = {17.792, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Sensors.AbsoluteSensor absoluteSensor1(get_r = true, resolveInFrame = Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.world, /*arrowDiameter = 0.008,*/ arrowColor = {255, 0, 255}) annotation(Placement(visible = true, transformation(origin = {45, -21.932}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(revolute1.frame_a, world.frame_b) annotation(Line(visible = true, origin = {-80, 30}, points = {{20, 0}, {-20, -0}}));
  connect(revolute1.frame_b, fixedTranslation2.frame_a) annotation(Line(visible = true, origin = {-16.104, 30}, points = {{-23.896, 0}, {23.896, 0}}));
  connect(fixedTranslation1.frame_a, world.frame_b) annotation(Line(visible = true, origin = {-27.5, 51.198}, points = {{27.5, 21.198}, {22.5, 21.198}, {22.5, -21.198}, {-72.5, -21.198}}));
  connect(absoluteSensor1.r, signalArrow1.r_head) annotation(Line(visible = true, origin = {60, -16.449}, points = {{-25, -16.483}, {-25, -21.483}, {25, -21.483}, {25, 59.449}}));
  connect(fixedTranslation1.frame_b, signalArrow1.frame_a) annotation(Line(visible = true, origin = {36.25, 63.698}, points = {{-16.25, 8.698}, {-11.25, 8.698}, {-11.25, -8.698}, {38.75, -8.698}}));
  connect(fixedTranslation2.frame_b, pointMass1.frame_a) annotation(Line(visible = true, origin = {40.048, 30}, points = {{-12.256, 0}, {12.256, 0}}));
  connect(absoluteSensor1.frame_a, pointMass1.frame_a) annotation(Line(visible = true, origin = {39.922, -5.546}, points = {{-4.922, -16.386}, {-9.922, -16.386}, {-9.922, -1.386}, {12.383, -1.386}, {12.383, 35.546}}));
  annotation(Diagram(coordinateSystem(extent = {{-150, -90}, {150, 90}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})), Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5}), graphics = {Rectangle(visible = true, lineColor = {0, 114, 195}, fillColor = {255, 255, 255}, extent = {{-100, -100}, {100, 100}}, radius = 25), Text(visible = true, textColor = {64, 64, 64}, extent = {{-150, 110}, {150, 150}}, textString = "%name")}));
end asdfa;
  • Can you please provide the full Modelica source code of yout model when using Modelica Standard Library < v4.0.0! I can then check what it looks like after conversion to v4.0.0. – tbeu Jan 12 '22 at 06:09
  • @tbeu Hallo, gladly! please see the updated code example. I have migrated within WSM already to version 4, and commented out the offending diameter parameters that prevent it from compiling already, and added a diameter 0.008mm to the `defaultArrowDiameter` parameter in the world class, which should have an affect but does not which is seen in the images. Thanks for having a look! – DrMrstheMonarch Jan 12 '22 at 12:06
  • 1
    Thanks for reporting and sharing the example code. Seems like an issue of the Modelica Standard Library v4.0.0 to me when the arrow visualization was refactored. There now is an GitHub issue for it: https://github.com/modelica/ModelicaStandardLibrary/issues/3931 Make sure to subscribe there. – tbeu Jan 16 '22 at 22:04
  • @tbeu thanks for creating an issue at the github! I've suscribed to the issue on github aswell. – DrMrstheMonarch Jan 17 '22 at 00:02

0 Answers0