Dymola checkModel()

时间:2015-11-17 12:30:24

标签: dymola

checkmodel([Some Model])打开GUI“Dymola消息”,“翻译”标签,并显示ErrorsWarningsMessages

有没有人知道如何将这些信息写入日志文件或将其作为checkModel()的返回值获取。我在文档中找到的只是checkModel()只返回一个成功布尔值。这些信息暂时保存在某个地方吗?

请注意,我只想应用checkModel()但不实际翻译代码。

2 个答案:

答案 0 :(得分:2)

我终于找到了至少适用于Dymola 2016及更新的解决方案,所以如果有人感兴趣 - 这里(它不是非常用户友好,但它有效):

key-command是getLastError(),它不仅会返回上一个错误(正如人们想象的那样......),而是checkModel()检测到的所有错误以及整体统计信息。

所有信息都采用一个字符串进行采样,其中最后一行如下所示:

"[...]
Local classes checked, checking <[Some Path]>
ERROR: 2 errors were found
WARNING: 13 warnings were issued
= false
"

以下操作将返回实际错误的数量(对于警告,它或多或少相同):

b = checkmodel([Some Model])
s = getLastError()
ind1 = Modelica.Utilities.Strings.findLast(s,"ERROR:")
ind2 = Modelica.Utilities.Strings.findLast(s," errors were found")
nErrors = Modelica.Utilities.Strings.substring(s,ind1+6,ind2) //6 = len(ERROR:)
nErrors = Modelica.Utilities.Strings.replace(nErrors," ","")
nErrors
  = "2"

注意:

  1. 据我所知,我使用了findLast,感兴趣的行位于字符串的最后。所以这比使用find
  2. 快得多
  3. 这只适用于行&#34; ERROR:....&#34;实际存在。否则,substring调用将引发错误。
  4. 当然这可以用更少的行来完成,但也许这个版本更容易阅读。
  5. 注意:这仅适用于Dymola 2016及更新版本。在Dymola 2015及更早版本中,getLastError的返回字符串具有不同的结构。

答案 1 :(得分:1)

以下应该处理它:     清除日志(); //开始新鲜     Advanced.TranslationInCommandLog = TRUE;     checkModel(...);     savelog(...);

这在Dymola用户手册第1卷,第34节中提到;参数研究通过在“批处理模式”下运行Dymola一段时间&#34;在第630页左右。