checkmodel([Some Model])
打开GUI“Dymola消息”,“翻译”标签,并显示Errors
,Warnings
和Messages
。
有没有人知道如何将这些信息写入日志文件或将其作为checkModel()
的返回值获取。我在文档中找到的只是checkModel()
只返回一个成功布尔值。这些信息暂时保存在某个地方吗?
请注意,我只想应用checkModel()
但不实际翻译代码。
答案 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"
注意:
findLast
,感兴趣的行位于字符串的最后。所以这比使用find
substring
调用将引发错误。注意:这仅适用于Dymola 2016及更新版本。在Dymola 2015及更早版本中,getLastError
的返回字符串具有不同的结构。
答案 1 :(得分:1)
以下应该处理它: 清除日志(); //开始新鲜 Advanced.TranslationInCommandLog = TRUE; checkModel(...); savelog(...);
这在Dymola用户手册第1卷,第34节中提到;参数研究通过在“批处理模式”下运行Dymola一段时间&#34;在第630页左右。