如何将自定义包添加到Dymola/Modelica中的启动路径?

如何将自定义包添加到Dymola/Modelica中的启动路径?,modelica,dymola,Modelica,Dymola,我有一个自定义包,我发现自己在Dymola模型中重复使用,我想把这个包放在一个公共目录中,每当我启动Dymola时,这个目录都会自动加载。我目前的策略是在加载我正在处理的模型时加载自定义包,然后保存总计。这并不优雅,因为自定义软件包的内容最终保存在我硬盘上的多个位置,如果我更改其中一个,更改不会反映到所有地方。我想要一个更强大的方式来分发这个自定义包到我的所有模型。有没有办法让Dymola每次都自动加载我的定制包 两条建议。首先,需要将包添加到MODELICAPATH。您必须查阅Dymola文档

我有一个自定义包,我发现自己在Dymola模型中重复使用,我想把这个包放在一个公共目录中,每当我启动Dymola时,这个目录都会自动加载。我目前的策略是在加载我正在处理的模型时加载自定义包,然后保存总计。这并不优雅,因为自定义软件包的内容最终保存在我硬盘上的多个位置,如果我更改其中一个,更改不会反映到所有地方。我想要一个更强大的方式来分发这个自定义包到我的所有模型。有没有办法让Dymola每次都自动加载我的定制包

两条建议。首先,需要将包添加到MODELICAPATH。您必须查阅Dymola文档,以准确了解您需要做什么。但通常情况下,这意味着您必须设置一个环境变量,该变量提供要搜索包的目录列表(
)。现在,它将把它放在您的路径中,这样它就可以自动找到它,但在需要它之前它不会加载它

如果希望它始终显示在包浏览器中,可能需要设置一个.mos文件(脚本)来加载它。Dymola有这个功能,但是您必须阅读手册才能弄清楚该脚本需要调用什么以及Dymola希望在哪里找到它


我希望这会有所帮助。

诀窍是在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用于搜索在第一次运行模型之前未加载的包的路径中,第二行加载指定的包。这两个命令可能有些冗余,但我同时执行这两个命令是因为除了加载用户定义的包之外,我还希望确保自定义包位于路径上

在Dymola 2018的安装文件夹->插入->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包在没有它的情况下可以正常加载,而且包菜单中添加的“实用程序”包是无用的。 但它没有打开附件60包

我尝试了很多不同的组合,无法加载多个包。我怀疑文本中也添加了“cd”和“Advanced.ParallelizeCode”。

由于不再使用文件settings.mos,自Dymola 2017 FD01以来,答案不起作用。用户设置存储在位于的setup.dymx文件中

C:\Users\USERNAME\AppData\Roaming\DassaultSystemes\Dymola
与setup.mos文件不同,setup.dymx中不能包含带有modelica脚本的自定义行

使用dymola.mos仍然有效,但您需要管理员权限才能修改此文件

以下是一个适用于所有Dyomola版本的简单解决方案: 可以将.mos脚本作为第一个参数传递给dymola.exe

例如,可以这样做:

  • 使用openModel()等命令在某处创建.mos脚本
  • 创建Dymola.exe的桌面快捷方式
  • 打开快捷方式的属性,并将路径添加到目标文本字段中的.mos脚本。然后它会像这样:
“C:\Program Files\Dymola 2018 FD01\bin64\Dymola.exe”“C:\\startup.mos”

  • 使用桌面快捷方式启动Dymola。将执行脚本,并在“命令”窗口中显示最终的错误或消息

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

  • 转到安装Dymola的文件夹(例如C:\Program Files\Dymola 2020)
  • 在插入文件夹中搜索Dymola.mos文件
  • 打开脚本(例如,在记事本++)
  • 使用openModel语句将链接添加到您的Dymola-library-package.mo文件中 e、 例如,openModel(“C:/IDEAS/package.mo”)
  • 保存脚本。现在,每次打开Dymola时,库都会自动加载

  • 好吧,Dymola手册似乎没有提供足够的信息来设置.mos脚本,所以这一个部分解决了。Chad,有两件事需要尝试。首先,Dymola手册的第5.5.16节展示了如何调用Dymola并要求它调用脚本。这可能行得通(我不使用“/nowindow”选项)。此外,第4.3.6节暗示(但实际上并没有直接说)在dymola启动时调用“dymola.mos”脚本。因此,您可以添加命令以在那里打开库。我似乎还记得,它也会在当前目录中查找“dymola.mos”文件,如果存在的话,会运行它。但没有承诺。你得试试看。我自己刚遇到这个问题,本来打算更新我的答案,但你抢先了我一步@MichaelTiller,openModel中的字符串可以修改为使用modelica://速记吗?您不需要“modelica://”语法。如果您想打开一个模型,只需说
    openModelFile(“full.Qualified.model.Name”)
    (例如
    openModelFile(“Modelica”)
    )。