Я изо всех сил пытаюсь загрузить свою модель внешней библиотекой. RoomM — это моя модель, а Buildings — это мой библиотечный пакет, экспортированный извне в Modelica. Ниже приведен код:
from OMPython import OMCSessionZMQ
from OMPython import ModelicaSystem
omc = OMCSessionZMQ()
omc.sendExpression("loadModel(Modelica)")
omc.sendExpression("loadModel(C:\OpenModelica1.18.1-64bit\lib\omlibrary\Buildings-9.1.0\Buildings-9.1.0\Buildings\Buildings.mo)")
model_path=omc.sendExpression("loadFile(\"C:\Modelica-python\Modelica-Model/RoomM.mo\")")






Используйте loadModel для загрузки библиотек Modelica, которые расположены в месте, известном OpenModelica (каталог установки OpenModelica, %HOME%/.openmodelica/libraries и местоположения из переменной среды OPENMODELICALIBRARY).
Если вы установили библиотеку Buildings с помощью менеджера пакетов, вы можете использовать
import OMPython
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
omc.sendExpression("loadModel(Buildings, {\"9.1.0\"})")
False возвращается в случае, если omc не может найти указанную библиотеку для данной версии. Вы можете использовать менеджер пакетов для его установки.
Если вы хотите вместо этого загрузить файл package.mo, вам нужно использовать loadFile:
import OMPython
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
omc.sendExpression("loadFile(\"C:\OpenModelica1.18.1-64bit\lib\omlibrary\Buildings-9.1.0\Buildings-9.1.0\Buildings\Buildings.mo\")")
Не забудьте экранировать строки в кавычках с помощью \", если функция API имеет строковые входные данные.
См. также раздел OMPython Руководства пользователя OpenModelica. В нем есть пример загрузки библиотек и файлов Modelica.
@ AnHeuermann спасибо за ответ. Выше приведен код, и все еще синтаксис «имитации» дает ошибку «Не удалось построить модель».
omc не загружается Buildings (возвращается False). Попробуйте установить библиотеку с помощью менеджера пакетов. Если это не поможет, загрузите package.mo с помощью loadFile.
@sophie Это сработало для вас? Если это так, вы можете принять этот ответ. В противном случае вы можете обновить свой вопрос, указав, что вы пытались сделать для решения своей проблемы.
Спасибо AnHeuermann. Это сработало, и я принял ответ.
Однако запуск кода на ........mod=ModelicaSystem("RoomM.mo","RoomM",["C:\OpenModelica1.18.1-64bit\lib\omlibrary\Buildings- 9.1.0\Buildings-9.1.0\Buildings\package.mo"]) больше не загружает библиотеку Buildings
omc.sendExpression("loadModel(Buildings, {\"9.1.0\"})") ...False omc.sendExpression("simulate(RoomM, stopTime=3.0)") ...{'resultFile': '' , 'simulationOptions': "startTime = 0.0, stopTime = 3.0, numberOfIntervals = 500, допуск = 1e-06, method = 'dassl', fileNamePrefix = 'RoomM', options = '', outputFormat = 'mat', variableFilter = ' .*', cflags = '', simflags = ''", 'messages': 'Не удалось построить модель: RoomM',