Source code for Application.PowerFactory

import sys


[docs] class PowerFactory: """ PowerFactory Main Class. author: IB """ def __init__(self, path): self.path = path self.app = None self.user = None self.project = None
[docs] @staticmethod def clear_path() -> None: """ Delete previous PowerFactory Versions in path. """ index = [] # iterate threw all system PATH paths for i, path in enumerate(sys.path): # get all paths not containing PowerFactory if "PowerFactory" not in path: index.append(i) new_path = [sys.path[i] for i in index] sys.path = new_path
[docs] def add_path(self) -> None: """ Add directory of power factory module to sys.path. """ sys.path.append(self.path)
[docs] def get_user(self): """ Get current user. :return: **-** (powerfactory.DataObject) - application \ user instance """ return self.app.GetCurrentUser()
[docs] def activate_project(self, project_name: str): """ Open Project. TODO: Error Handling if inserted project name does not \ exist TODO: Get Return Type :param project_name: power factory project name :type project_name: str :return: **-** (?) - powerfactory active project """ # check if the get_user method has already been called if self.user is None: # if not get the project user self.user = self.get_user() # get the project object of the power factory object of the # inserted project name project = self.user.GetContents(project_name + ".IntPrj")[0] return project.Activate()
[docs] def open_app(self, project_name: str): """ Open PowerFactory Application and activate project. TODO: Problem when importing powerfactory module, if several \ PowerFactory versions in sys.path! Import should be \ @toplevel. TODO: Errorhandling if PowerFactory cannot be imported. :param project_name: power factory project name :type project_name: str :return: **-** (?) - powerfactory application instance """ # remove all power factory versions from system path self.clear_path() # add the inserted power factory version to system path self.add_path() import powerfactory # load the power factory application if it has not been loaded # yet if self.app is None: self.app = powerfactory.GetApplicationExt() # activate the power factory project if there is no active # project yet if self.project is None: self.project = self.activate_project(project_name) return self.app