连接至少具有两个重要变量。流变量和非流变量(然后是流内容,但不再赘述)。为了清楚起见,我将引用流体连接器及其变量m_flow(流量变量)和p(非流量变量)。在构建组件时,重要的是指定该组件是否正在设置m_flow或p的值。例如,您不想将两个压力损失组件(集合m_flow)连接在一起。MSL中的流体连接器定义为port_a(设计入口)和port_b(设计出口)。为了指定端口是否设置m_flow,DynamicPipe选择使用PartialTwoPort组件,该组件在图标层中具有一个对象(黑色椭圆),该对象根据参数(port_a_exposesState)切换其可见性,该参数可以在扩展PartialTwoPort时进行修改(即,PartialTwoPortFlow)。但是,此功能不起作用。更改参数后,该参数不会更改其显示(即,DynamicPipe上的黑色椭圆永远不会消失)。以下是演示该概念的简单示例。模拟模型“RunMe”时,参数showBall = false,因为数字1。但是,球仍然可见。部分模型设置应显示/消失的对象:partial model ballIcon// input Boolean showBall; // Tried this as well to no avail.protected parameter Boolean showBall = true; annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Ellipse( extent={{-40,40},{40,-40}}, lineColor={0,0,0}, fillPattern=FillPattern.HorizontalCylinder, fillColor={255,255,0}, visible=showBall)}), Diagram(coordinateSystem( preserveAspectRatio=false)));end ballIcon;扩展模型:model extendsBallIcon extends ballIcon(showBall=(number==1)); parameter Real number = 1;end extendsBallIcon;根据“数字”显示应该出现或消失的球的模型:model RunMe extendsBallIcon Ball(number=3) annotation (Placement(transformation(extent={{-10,-10},{10,10}})));end RunMe;有什么方法可以纠正此问题,以便组件的GUI在使用时(即在图层上)可以工作吗?或者连接器GUI是否需要捕获由组件定义的流/非流元素以帮助模型使用(即,将port_a从描述设计入口更改为定义的流变量)。使用Dymola 2017(在Dymola 2016上也进行了相同的测试) 更新:了解使用DynamicSelect的简单案例可以使我进入一个实际的应用程序。进行以下更改似乎导致该图标不切换其可见性。在extendsBallIcon中替换: extends ballIcon(showBall=(number==1)); parameter Real number = 1;与 // Boolean Example extends ballIcon(showBall=(number==true)); final parameter Boolean number = (modelStructure==Modelica.Fluid.Types.ModelStructure.av_b); parameter Modelica.Fluid.Types.ModelStructure modelStructure = Modelica.Fluid.Types.ModelStructure.av_b; (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 Modelica语言规范在第18.6.6节中指出:“图形注释中的任何值(坐标,颜色,文本等)都可以使用DynamicSelect表达式依赖于类变量。”也就是说,您的示例中的visible=DynamicSelect(true, showBall)仅在showBall为true时才会显示椭圆。关于modelica - 如何基于参数更新对象的可见性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39417878/ (adsbygoogle = window.adsbygoogle || []).push({});
10-08 21:23