【问题标题】:How to automatically create conversion script in Dymola如何在 Dymola 中自动创建转换脚本
【发布时间】:2019-05-16 18:42:56
【问题描述】:

https://trac.modelica.org/Modelica/ticket/2229#comment:2 中提到,Dymola 能够在将更改应用于库时自动更新转换脚本。我正在搜索 Dymola 手册,但找不到任何如何应用此功能的实际指南。

但是,我可以在选项中找到一些设置,但我无法强制 Dymola 创建/更新转换脚本。

有人对如何启用自动创建转换脚本的功能有一些指导吗?

【问题讨论】:

    标签: dymola


    【解决方案1】:

    生成转换命令

    为此提供了三个高级变量,即:

    Integer Advanced.ActivateSmartDelete = 3 "Updates other classes when deleting class/component [0 - no, 1 - ask, 2 yes (if possible)]";
    Integer Advanced.ActivateSmartRename = 3 "Updates other classes when renaming component [0 - no, 1 - ask, 2 yes, 3 - also script]";
    Integer Advanced.ActivateSmartRenameClass = 3 "Updates other classes when renaming class [0 - no, 1 - ask, 2 yes, 3 - also script]";
    

    如 cmets 所示,将这些变量设置为 3(使用 Dymola 命令窗口或在较新的 Dymola 版本中,可以在屏幕截图中看到的选项)会导致自动创建转换命令。

    Dymola 会将转换命令写入您库的模型注释中。它们看起来像这样:

      from(
        version="3.2.3",
        to="Intermediate",
        change(item=convertClass("Modelica.Blocks.Continuous.PID", "Modelica.Blocks.Continuous.PID_Controller"),
               item=convertClass("Modelica.Blocks.Continuous.FirstOrder", "Modelica.Blocks.Continuous.PT1")))
    

    将命令导出到文件

    在 Dymola 2022x 之前

    如果您想将转换脚本放在单独的文件中(而不是库的 package.mo),您必须稍微转换命令。

    在脚本中,上述命令如下所示:

    convertClear()
    convertClass("Modelica.Blocks.Continuous.PID", "Modelica.Blocks.Continuous.PID_Controller"),
    convertClass("Modelica.Blocks.Continuous.FirstOrder", "Modelica.Blocks.Continuous.PT1")
    

    所以相同的命令,但没有item= 和尾随,

    使用 Dymola 2022x

    Dymola 2022x 可以将命令导出到文件。

    • 从包浏览器打开库的属性对话框
    • 使用版本选项卡中的从预发布转换...按钮

    然后,Dymola 将从库注释中删除先前生成的命令,并将它们以正确的格式复制到指定的文件中。请注意,Dymola 还将更新库的版本号并调整from 命令。如果不需要,请将其改回。

    【讨论】:

    • 请注意,重命名组件需要您使用 GUI;即参数对话框或 Edit>Variables,脚本中不需要 convertClear()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多