Как автоматически создать скрипт конвертации в Dymola - PullRequest
2 голосов
/ 16 мая 2019

В https://trac.modelica.org/Modelica/ticket/2229#comment:2 упоминается, что Dymola имеет возможность автоматически обновлять скрипт преобразования, когда изменения применяются к библиотеке.Я искал руководства для Dymola, но не смог найти никаких реальных указаний, как применить эту функцию.

Однако в настройках я мог найти некоторые настройки, но я не могу заставить Dymola создавать / обновлять скрипт преобразования.

enter image description here

Есть ли у кого-нибудь рекомендации по включению функции автоматического создания сценария преобразования?

1 Ответ

4 голосов
/ 17 мая 2019

Для этого есть три дополнительные переменные, а именно:

Integer Advanced.ActivateSmartDelete = 3 "Updates other classes when deleting class/component [0 - no, 1 - ask, 2 yes (if possible)]";
Integer Advanced.ActivateSmartRename = 3 "Updates other classes when renaming component [0 - no, 1 - ask, 2 yes, 3 - also script]";
Integer Advanced.ActivateSmartRenameClass = 3 "Updates other classes when renaming class [0 - no, 1 - ask, 2 yes, 3 - also script]";

Как показывают комментарии, установка этих переменных на 3 (с помощью окна «Команда Dymola» или, в более новых версиях Dymola, параметры, которые можно увидеть на скриншоте) приводит к автоматически создаваемым командам преобразования.

Dymola запишет команды преобразования в аннотацию модели вашей библиотеки. Они будут выглядеть примерно так:

  from(
    version="3.2.3",
    to="Intermediate",
    change(item=convertClass("Modelica.Blocks.Continuous.PID", "Modelica.Blocks.Continuous.PID_Controller"),
           item=convertClass("Modelica.Blocks.Continuous.FirstOrder", "Modelica.Blocks.Continuous.PT1")))

Обратите внимание, что вам нужно немного преобразовать их, если вы хотите иметь скрипт преобразования в отдельном файле (вместо package.mo вашей библиотеки).

В скрипте вышеприведенные команды будут выглядеть следующим образом:

convertClear()
convertClass("Modelica.Blocks.Continuous.PID", "Modelica.Blocks.Continuous.PID_Controller"),
convertClass("Modelica.Blocks.Continuous.FirstOrder", "Modelica.Blocks.Continuous.PT1")

так что те же команды, но без item= и трейлинг ,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...