导入包的 Modelica GUI 表示?

问题描述 投票:0回答:1

我希望在组件的 GUI 中看到导入包的清晰表示。在 OpenModelica 中,您可以选择一个组件图标并右键单击参数。这里你得到两个字段:

Path - describes from where the component is taken

Parameters - if the package has a redeclared package it is shown here

我认为最好在这两个字段中显示进口的来源。今天,您只能在“路径”字段中看到它,而在“参数”字段中看不到。

下面的小示例说明了包 DEMO_v91 和两个不同模型文件 D91_1 和 D91_3 的问题,它们仅在导入方式上有所不同。当我们想要在另一个包(例如 DEMO_v92)中重复使用该文件时,请注意文件 D91_3 中的便利性。您只需更改一行代码,而不是 D91_1 中的五行代码。

package DEMO_v91
   package A
       constant Real a=1;
       constant Real b=2;
       constant Real c=3;
   end A;   
   model M1
       replaceable package A = DEMO_v91.A;
       Real x, y, z;
   equation
       x = A.a;
       y = A.b;
       z = A.c;
       annotation(Diagram,Icon(graphics = {Rectangle(origin = {1, 0}, extent = {{-39, 40}, {39, -40}})}));
   end M1;
   model M2
       replaceable package A = DEMO_v91.A;
       Real x, y, z;
   equation
       x = 2*A.a;
       y = 2*A.b;
       z = 2*A.c;
       annotation(Diagram,Icon(graphics = {Rectangle(extent = {{-38, 40}, {38, -40}})}));
   end M2;
end DEMO_v91;

模型文件D91_1

model D91_1
  DEMO_v91.M1 m1(redeclare package A = DEMO_v91.A) 
  annotation(Placement(transformation(origin = {-76, -4}, extent = {{-10, -10}, {10, 10}})));
  DEMO_v91.M2 m2(redeclare package A = DEMO_v91.A) 
  annotation(Placement(transformation(origin = {40, -4}, extent = {{-10, -10}, {10, 10}})));
equation
end D91_1;

导入更方便的模型文件D91_3

model D91_3
   import DEMO_v91.*;
   M1 m1(redeclare package A = A) 
   annotation(Placement(transformation(origin = {-76, -4}, extent = {{-10, -10}, {10, 10}})));
   M2 m2(redeclare package A = A) 
   annotation(Placement(transformation(origin = {40, -4}, extent = {{-10, -10}, {10, 10}})));
equation
end D91_3;

比较 OpenModelica 中 D91_1 和 D91_3 两种实现的参数接口的屏幕截图

enter image description here

为什么 D91_3 的参数字段不能包含 D91_1 的完整路径?

(请注意,一般情况下,M1 和 M2 可能是从另一个包裹中取出的,而不是从 A 包裹中取出的。)

  • 这只是 OpenModelica 中的一个错误吗?
  • 是一个可以激励的刻意设计选择吗?
  • MSL 中的限制是否限制了 Modelica GUI 的实现?
  • 还有其他方法可以清楚地表示 D91_3 中 A 来自哪里吗?
modelica openmodelica graphical-interaction
1个回答
0
投票

似乎是 OpenModelica 中的一个选择。 如果修改Demo_v91如下:

replaceable package A = DEMO_v91.A annotation(choicesAllMatching=true);

这是一个标准的 Modelica 注释,允许更方便的选择,那么 Dymola 至少会在两种情况下显示

DEMO_v91.A
作为输入字段的工具提示(并缩短选择)。

© www.soinside.com 2019 - 2024. All rights reserved.