Удаление аннотаций из модели Modelica

Я разрабатываю библиотеку Modelica, и мне нужно создать документ с перечислением исходного кода. Я хотел бы иметь возможность включать исходный код моделей Modelica без аннотаций.

Я мог бы вручную отредактировать их, но я ищу более автоматизированную стратегию. Я предполагаю, что наиболее удобный и простой подход - использовать какой-нибудь инструмент для сохранения .mo файлов без аннотаций и включения их в мой документ (я использую \lstinputlisting в LaTeX).

Можно ли сделать это? У меня есть доступ к Dymola, OpenModelica и JModelica. Dymola, очевидно, может создать такой список, так как он может включать его в автоматически сгенерированную документацию (Файл> Экспорт> HTML ...). Я изучал сценарии с Dymola и OpenModelica, но тоже не нашел способа сделать это.

JModelica кажется хорошим вариантом, но у меня нет опыта работы с Python. Если это возможно и кто-то дает мне несколько советов, я готов сам разобраться в этом. Я нашел упоминание о функции prettyprint, которая может выполнить эту работу, но я не уверен, где ее Начните. Я даже не могу найти ссылку на эту функцию в последней документации .

Мне также было бы удобнее найти способ сделать это с помощью Dymola / OpenModelica (через пользовательский интерфейс или с помощью скрипта). Я что-то упустил?


person Raúl    schedule 14.05.2017    source источник


Ответы (1)


Я думаю, вы могли бы использовать saveTotalModel("total.mo", MyModelName) в OpenModelica. Это удалит большинство аннотаций (не те, которые используются для генерации кода, если я правильно помню) и красиво распечатает исходный код, включая все зависимости. Затем вы просто копируете и вставляете модели / пакеты, которые хотите включить в список. Или, если хотите, вы можете сделать что-то вроде следующего, чтобы включить код только для определенной модели:

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);
person sjoelund.se    schedule 15.05.2017
comment
Спасибо за быстрый ответ, @ sjoelund.se. Я не знаю, как реализовать ваше решение. У меня есть один файл для каждой модели. В идеале хотелось бы иметь возможность сохранить полную версию библиотеки без аннотаций. Должен ли я вводить эти команды? Извините, я знаю о скриптах, но я не знаком с ними. Я пытаюсь ввести их в окно командной строки компилятора, которое я открыл в OMEdit. Я получил это saveTotalModel("total.mo",PVSystems.Electrical.PVArray) >> true, но я понятия не имею, где это закончилось! (cd ничего не возвращает) - person Raúl; 16.05.2017
comment
Вы можете использовать команду cd () как команду, чтобы увидеть, где она находится, или, если вы работаете в Windows, ее следует сохранить в% TEMP% \ OpenModelica \ OMEdit - person Adrian Pop; 18.05.2017
comment
Большое спасибо, @AdrianPop, действительно cd() работал, и я нашел файл в папке %TEMP%. Я пытался добиться желаемых результатов и обнаружил, что могу создать версию модели без аннотаций, используя saveTotalModel("ModelWithStuff.mo", PVSystems.Subpkg.Model). Но это включает в себя некоторые лишние вещи, которые мне не нужны. Затем я clear(), загружаю ту версию и извлекаю нужную часть с помощью writeFile("ModelClean.mo", list(PVSystems.Subpkg.Model)) - person Raúl; 19.05.2017
comment
Я принял этот ответ, спасибо, что нашли время написать его. Я действительно думаю, что его можно улучшить, объяснив, где можно вводить эти команды (я использовал CLI компилятора, но я изучаю создание сценария, не знаю, как это сделать). Я также изо всех сил пытался понять сами команды, зачем загружать Modelica, где что-то сохранялось, почему второй loadFile имеет синтаксис, отличный от первого, и т. Д. Спасибо! - person Raúl; 19.05.2017
comment
Вот полученный в результате - person Raúl; 19.05.2017