Die TIA Openess API V15 stellt eine Möglichkeit bereit, sich an laufende Prozesse des TIA Portals anzuhängen (via
Attach()), was problemlos funktioniert. Es ist auch möglich, dass in TIA bereits ein Projekt geöffnet ist.
Leider finde ich keine Möglichkeit in diesem Fall an die
Project-Instanz zu gelangen, die man benötigt, um projektspezifische Funktionalität anzusteuern. Die mir bekannten Wege eine Project-Instanz zu erhalten sind die Funktionen
Create(),
Open() und
OpenWithUpgrade(), die jedoch allesamt nicht zu funktionieren scheinen, wenn bereits ein Projekt in TIA geöffnet ist. Dies gilt auch für den Projektpfad des bereits geöffneten Projektes, das über die
ProjectPath-Eigenschaft abgefragt werden kann, bevor man sich über
Attach() an einen Prozess anbindet.
Ich würde ungern selbst ein Projekt über die API anlegen bzw. öffnen, da ich zu diesem Zweck eine Eingabemöglichkeit erstellen müsste, die ohnehin schon in TIA umgesetzt ist. Kennt jemand eine Möglichkeit für ein bereits geöffnetes Projekt eine
Project-Instanz abzurufen?
Code:
var process = TiaPortal.GetProcesses().First();
var projectPath = process.ProjectPath;
using (TiaPortal portal = process.Attach())
{
// var project = ?
// var project = portal.Projects.Open(projectPath); -> Exception
}