【问题标题】:How to add load libraries, change directory, etc. on startup?如何在启动时添加加载库、更改目录等?
【发布时间】:2017-01-24 15:56:19
【问题描述】:

有没有办法在启动 Dymola 时自动加载库、切换到某个工作目录等?

【问题讨论】:

标签: modelica dymola


【解决方案1】:

这个问题有点模棱两可 - 另一个答案对于一种情况来说非常好。 (第 2 步中的 openModel 调用可以修改。)

但是,如果您总是想要在特定目录等中启动 Dymola,则可以使用 GUI。取决于版本。

Dymola 2020 x(及更高版本) 允许通过 File>Working Directory

更改启动目录

并且有 Tools>Library Management>Modelica Path,您可以在其中添加包含外部库的目录。

要使库显示为预加载,您必须在相应的库中添加libraryInfo.mos 脚本;您可以查看 Dymola 安装中的 Modelica 标准库以获取灵感。

后者在“更多关于库以及库和演示菜单的构建”部分(在用户手册的某处)中进行了更详细的描述。

Dymola 2017 FD01(与 Dymola 2016 FD01 略有不同):

  1. 更改目录(文件>更改目录)
  2. 添加到 Modelica 路径(文件>Modelica 路径)
  3. 保存这些设置(编辑>选项>设置:选择启动和Modelica路径)

如果您想“预加载”库,有一些选项: 在启动脚本中,您可以使用 import MyPackage;openModel("...\\MyPackage.mo"); 或者如果您是管理员,您可以修改 Dymola/insert/dymodraw.ini 并添加一行:Dymola5LibraryMenu "MyPackage"(从技术上讲,它不会“加载” - 它只是显示包浏览器中的库)。

一个重要的区别是,即使在“全部清除”之后,更改 dymodraw.ini 也会使库保持“加载”状态。

【讨论】:

    【解决方案2】:

    近年来有两种选择可能对您有所帮助。

    1. File>Library Management>Install 此对话框允许您打开一个 zip文件或类似分布式库的东西,安装它, 更新 MODELICAPATH 以再次找到它,甚至更新 File>Libraries 菜单以包括它以供将来使用。一站式操作。

    2. Simulation>Edit startup.mos 如果您更喜欢编辑启动 脚本,这是找到它的便捷方法结束打开它 编辑。

    【讨论】:

      【解决方案3】:

      这是一个允许通过单击加载一组库的过程。 它利用了 dymola.exe 可以以 .mos 脚本作为第一个参数启动的事实。

      它专为以下情况而设计

      • 您使用的是 Windows
      • 您正在从事一个或多个项目
      • 每个项目都需要加载一组库
      • 每个项目都使用自己的工作目录
      • 其他用户可能会进行协作,因此他们需要相同的设置

      要求

      第一次设置有点麻烦,但很快就完成了后续项目。你需要:

      • 库中的start.mos 文件
      • 环境变量DYMOLA_WDMODELICA_LIBS
        (这只需要允许其他用户为其库和工作目录使用不同的路径)
      • dymola.exe 的文件快捷方式

      这是 start.mos 对于特定项目的外观(通常您只更改前两行):

      // user setup
      libs = {"Buildings 6.0.0", "PhotoVoltaics", "MyProject"}
      wd = "myproject"
      
      // open all libs
      lib_dir = Modelica.Utilities.System.getEnvironmentVariable("MODELICA_LIBS");
      lib_dir = Modelica.Utilities.Strings.replace(lib_dir, "\\", "/")
      for l in libs loop
          openModel(lib_dir + "/" + l + "/package.mo");
      end for;
      
      // change to wd
      wd = Modelica.Utilities.System.getEnvironmentVariable("DYMOLA_WD") + "/" + wd;
      wd = Modelica.Utilities.Strings.replace(wd, "\\", "/")
      Modelica.Utilities.Files.createDirectory(wd)
      cd(wd)
      

      现在您在 Windows 文件资源管理器中创建 dymola.exe 的快捷方式。在你设置的Target字段中

      "C:\Program Files\Dymola 2020\bin64\Dymola.exe" "%MODELICA_LIBS%\MyProject\Resources\scripts\start.mos"
      

      示例

      假设用户设置了环境变量

      MODELICA_LIBS = E:\modelica
      DYMOLA_WD = E:\dymola_wds
      

      用户硬盘上的文件夹结构必须如下所示,以上脚本才能运行:

      E:\modelica
      |- Buildings 6.0.0
         |- package.mo
         |- ...
      |- PhotoVoltaics
         |- package.mo
         |- ...
      |- MyProject
         |- package.mo
         |- ...
         |- Resources
         |  |- scripts
         |     |- start.mos
         |- ...
      

      现在使用 dymola.exe 快捷方式启动 Dymola,它会自动加载项目所需的库并更改工作目录。

      对于另一个项目,需要一个新的快捷方式以及一个新的start.mos 脚本。

      【讨论】:

        【解决方案4】:

        此方法已针对 Dymola 2017FD01 进行了测试。以前的版本通过不再可用的setup.mos 脚本使用不同的方法。截至本文发布时,还没有通过 Dymola GUI 执行此操作的选项。

        可以通过 .mos 文件轻松完成,步骤如下:

        1. 在有意义的位置创建一个 .mos 文件。例如,C:\Users\USERNAME\Documents\Dymola\startup.mos
        2. 将所需的操作添加到.mos 文件。例如,要加载库添加openModel("C:\\Users\\USERNAME\\Documents\\ModelicaLibrary\\package.mo");
        3. Dymola 始终将其自动生成的文件放在当前工作目录中。让该位置位于同一位置通常是个好主意,因此无需寻找输出文件的位置。因此,在.mos 文件末尾更改当前目录:cd("C:\\Users\\USERNAME\\Documents\\Dymola");
        4. 如果 Dymola.exe 文件不存在快捷方式,则创建一个。
        5. 右键单击快捷方式并转到Properties。在Shortcut>Target 的末尾附加"C:\Users\USERNAME\Documents\Dymola\startup.mos"。该单元格的内容现在应该如下所示:"C:\Program Files (x86)\Dymola 2017 FD01\bin64\Dymola.exe" "C:\Users\vmg\Documents\Dymola\startup.mos"
        6. 就是这样。从该快捷方式启动 Dymola 时,应执行 .mos 文件中指定的操作。

        【讨论】:

        【解决方案5】:

        另一个建议,您不需要将包硬编码到操作系统的环境变量中(对于没有经验的程序员来说可能更安全):

        1. 转到安装 Dymola 的文件夹(例如 C:\Program Files\Dymola 2020)。
        2. 在插入文件夹中搜索 Dymola.mos 文件。 'insert' folder
        3. 打开脚本(例如,在 notepad++ 中)
        4. 在此处使用 openModel 语句将链接添加到您的 Dymola-library-package.mo 文件 例如,openModel("C:/IDEAS/package.mo"); Dymola.mos script
        5. 保存脚本。现在,每次打开 Dymola 时,您的库都会自动加载。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多