forked from Energinet-SimTools/MTB
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglobals.py
More file actions
44 lines (38 loc) · 1.4 KB
/
globals.py
File metadata and controls
44 lines (38 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
pfp = None
pfdyn = None
pfplot = None
mtb = None
from powfacpy.base.active_project import ActiveProject
from powfacpy.applications.dynamic_simulation import DynamicSimulation
from powfacpy.pf_class_protocols import PFApp
from powfacpy.applications.plots import Plots
from typing import Optional, Tuple
import sys
if getattr(sys, "gettrace", None) is not None:
sys.path.append("C:\\Program Files\\DIgSILENT\\PowerFactory 2025\\Python\\3.12")
import powerfactory as pf # type: ignore
def connectPF(project_name) -> Tuple[PFApp, int]:
"""
Connects to the powerfactory application and returns the application and project.
"""
global pfp
global pfdyn
global pfplot
global mtb
app: Optional[pf.Application] = pf.GetApplicationExt()
if not app:
raise RuntimeError("No connection to powerfactory application")
app.ClearOutputWindow()
app.PrintInfo(
f"Powerfactory application connected externally. Executable: {sys.executable}"
)
app.PrintInfo(f"Imported powerfactory module from {pf.__file__}")
version: str = pf.__version__
pfVersion = 2000 + int(version.split(".")[0])
app.PrintInfo(f"Powerfactory version registred: {pfVersion}")
app.ActivateProject(project_name)
pfp = ActiveProject(app)
pfdyn = DynamicSimulation(app)
pfplot = Plots(app)
mtb = pfp.get_unique_obj("MTB.ElmNet", include_subfolders=True)
return app, pfVersion