Skip to content

Commit 092958e

Browse files
committed
[ModelicaSystem] consider relativ path if ModelicaSystem is run locally
1 parent 6ea4393 commit 092958e

1 file changed

Lines changed: 22 additions & 9 deletions

File tree

OMPython/ModelicaSystem.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import logging
3939
import numbers
4040
import os
41+
import pathlib
4142
import queue
4243
import textwrap
4344
import threading
@@ -446,18 +447,30 @@ def model(
446447
# set variables
447448
self._model_name = name # Model class name
448449
self._libraries = libraries # may be needed if model is derived from other model
449-
if file is not None:
450-
file_name = self._session.omcpath(file).resolve()
451-
else:
452-
file_name = None
453-
self._file_name = file_name # Model file/package name
454450
self._variable_filter = variable_filter
455451

456-
if self._file_name is not None and not self._file_name.is_file(): # if file does not exist
457-
raise IOError(f"{self._file_name} does not exist!")
458-
459452
if self._libraries:
460453
self._loadLibrary(libraries=self._libraries)
454+
455+
self._file_name = None
456+
if file is not None:
457+
file_path = pathlib.Path(file)
458+
# special handling for OMCProcessLocal - consider a relative path
459+
if isinstance(self._session.omc_process, OMCProcessLocal) and not file_path.is_absolute():
460+
file_path = pathlib.Path.cwd() / file_path
461+
if not file_path.is_file():
462+
raise IOError(f"Model file {file_path} does not exist!")
463+
464+
self._file_name = self.getWorkDirectory() / file_path.name
465+
if (isinstance(self._session.omc_process, OMCProcessLocal)
466+
and file_path.as_posix() == self._file_name.as_posix()):
467+
pass
468+
elif self._file_name.is_file():
469+
raise IOError(f"Simulation model file {self._file_name} exist - not overwriting!")
470+
else:
471+
content = file_path.read_text(encoding='utf-8')
472+
self._file_name.write_text(content)
473+
461474
if self._file_name is not None:
462475
self._loadFile(fileName=self._file_name)
463476

@@ -1685,7 +1698,7 @@ def convertFmu2Mo(
16851698
raise ModelicaSystemError(f"Missing FMU file: {fmu_path.as_posix()}")
16861699

16871700
filename = self._requestApi(apiName='importFMU', entity=fmu_path.as_posix())
1688-
filepath = self._getconn.omcpath(filename)
1701+
filepath = self._session.omcpath(filename)
16891702

16901703
# report proper error message
16911704
if not filepath.is_file():

0 commit comments

Comments
 (0)