我有一个自定义包,我发现自己在Dymola模型中反复重复使用,我想把这个包放在一个公共目录中,每当我启动Dymola时它会自动加载。我当前的策略是在加载我正在处理的模型时加载自定义包,然后保存总计。这并不优雅,因为自定义包的内容最终保存在我的硬盘驱动器的多个位置,如果我更改其中一个,则更改不会反映在任何地方。我想要一种更健壮的方式将这个自定义包分发给我的所有模型。有没有办法告诉Dymola每次自动加载我的自定义包装?
答案 0 :(得分:8)
诀窍是将以下行添加到c:/ Users / USERNAME / AppData / Roaming / Dynasim中的settings.mos:
Utilities.setenv("MODELICAPATH", "C:\Users\USERNAME\Documents\Dymola");
openModel("c:\Users\USERNAME\Documents\Dymola\UserDefined\package.mo")
第一行将目录添加到Dymola用于搜索在第一次运行模型之前尚未加载的包的路径,第二行加载指定的包。这两个命令可能有点多余,但我这两个都是因为我想确保我的自定义包除了加载UserDefined包之外还在路径上。
答案 1 :(得分:4)
两个建议。首先,您需要将包添加到MODELICAPATH。您必须查阅Dymola文档,以确切了解您需要做什么。但通常情况下,这意味着您必须设置一个环境变量,该变量提供要搜索包的目录列表(;
已分隔)。现在它将它放在你的路径中,以便它可以自动找到它,但它不会加载它直到它需要它。
如果您希望它始终显示在包浏览器中,您可能需要设置.mos文件(脚本)来加载它。 Dymola具备这种能力,但您必须阅读手册以确定该脚本必须被调用以及Dymola希望找到它的位置。
我希望有所帮助。
答案 2 :(得分:1)
在Dymola 2018的instalation文件夹中 - >插入 - > dymola.mos 我添加了这些行:
Utilities.setenv("MODELICAPATH", "C:\Users\XXXX\Documents\Dymola");
openModel("C:\Users\XXXX\Documents\Dymola\DCOL\package.mo");
openModel(“C:\Users\XXXX\Documents\Dymola\Annex60 1.0.0\package.mo”);
现在我没有得到实用程序句子,因为DCOL包在没有它的情况下加载正常,并且包菜单中添加的“实用程序”包没用。 但它没有打开Annex60包。
我尝试了很多不同的组合,无法加载多个包。我怀疑“cd”和“Advanced.ParallelizeCode”,它们也在文本作品中添加。
答案 3 :(得分:1)
自Dymola 2017 FD01以来,accepted答案无效,因为文件settings.mos已不再使用。用户设置存储在setup.dymx文件中,位于
中C:\Users\USERNAME\AppData\Roaming\DassaultSystemes\Dymola
与setup.mos文件相比,您不能在setup.dymx中包含带有modelica脚本的自定义行。
使用dymola.mos的answer仍然有效,但您需要管理员权限才能修改此文件。
这是一个适用于所有Dyomola版本的简单解决方案: 您可以将.mos-script作为第一个参数传递给dymola.exe。
这可以是例如这样做:
"C:\Program Files\Dymola 2018 FD01\bin64\Dymola.exe" "C:\<some-path>\startup.mos"
答案 4 :(得分:1)
另一个建议,您无需将软件包硬编码到操作系统的环境变量中(对于经验不足的程序员可能更安全):