2017-05-14 178 views
1

我正在开发一个Modelica库,需要使用源代码列表生成一个文档。我希望能够在没有注释的情况下包含Modelica模型的源代码。从Modelica模型中删除注释

我可以手动编辑它们,但我正在寻找更自动化的策略。我猜最简便直接的方法是使用一些工具来保存没有注释的.mo文件,并将其包含在我的文档中(我在LaTeX中使用\lstinputlisting)。

可以做到这一点吗?我可以访问Dymola,OpenModelica和JModelica。 Dymola显然能够生成这样的列表,因为它能够将其包含在自动生成的文档中(文件>导出> HTML ...)。我一直在研究与Dymola的脚本和OpenModelica,但还没有找到一种方法来做到这一点。

JModelica好像可能是个不错的选择,但我没有使用Python的经验。如果这是可能的,并且有人给我一些指示,我愿意亲自调查一下。我发现了一个提到prettyprint函数可以完成这项工作,但我不知道从哪里开始。我甚至无法在latest documentation中找到对该功能的参考。

对于我来说,使用Dymola/OpenModelica(无论是通过UI还是使用脚本)来找到一种方法也会更方便。我错过了什么吗?

回答

1

我想你可以在OpenModelica中使用saveTotalModel("total.mo", MyModelName)。如果我没有记错的话,这将删除大多数注释(不是用于代码生成的注释),并且漂亮地打印包括所有依赖项的源代码。然后,您只需复制粘贴要包含在列表中的模型/包。或者,如果您愿意,您可以执行以下操作,仅包含特定型号的代码:

loadModel(Modelica); 
loadFile("MyModel.mo"); 
saveTotalModel("total.mo", MyModel.A.B); 
clear(); 
loadFile(MyModel); 
str := list(MyModel.A.B); 
writeFile("MyModel.A.B.listing", str); 
+0

感谢您的快速回复,@ sjoelund.se。我不确定如何实施您的解决方案。我有[每个模型一个文件](https://github.com/raulrpearson/PVSystems)。理想情况下,我希望能够保存库的完整版本而无需注释。我是否应该输入这些命令?对不起,我知道脚本,但我不熟悉它们。我试图在OMEdit中打开的编译器CLI窗口中输入它们。我得到了这个'saveTotalModel(“total.mo”,PVSystems.Electrical.PVArray)>> true',但我不知道哪里结束了! ('cd'什么都不返回) –

+0

你可以使用cd()作为命令来查看它的位置,或者如果你在Windows上,它应该保存在%TEMP%\ OpenModelica \ OMEdit –

+0

非常感谢@AdrianPop, cd()'工作,我在'%TEMP%'文件夹中找到了该文件。我一直在试图创建我想要的结果,并发现我可以使用'saveTotalModel(“ModelWithStuff.mo”,PVSystems.Subpkg.Model)'创建一个无注释版本的模型。但是那包括了一些我不想要的东西。然后我清除()',加载_that_版本,并用'writeFile(“ModelClean.mo”,list(PVSystems.Subpkg.Model))提取我想要的部分' –