/// <summary> /// Opens project and checks if its open /// </summary> /// <param name="projectLinkFilePath">EPLAN project file (*.elk)</param> /// <param name="openMode">Set how the project should be opened</param> /// <param name="upgradeIfNeeded">Set if the project should be upgraded from an older version</param> /// <returns>EPLAN Project</returns> public static Project OpenProject(string projectLinkFilePath, ProjectManager.OpenMode openMode = ProjectManager.OpenMode.Standard, bool upgradeIfNeeded = true) { if (!File.Exists(projectLinkFilePath)) { throw new FileNotFoundException("EPLAN project link file not found", projectLinkFilePath); } using (new LockingStep()) { ProjectManager projectManager = new ProjectManager(); projectManager.LockProjectByDefault = false; Project project = projectManager.GetProject(projectLinkFilePath); // Check if openMode is OK if (project != null) { bool reOpen = false; switch (openMode) { case ProjectManager.OpenMode.Standard: if (project.IsExclusive || project.IsReadOnly) { reOpen = true; } break; case ProjectManager.OpenMode.ReadOnly: if (!project.IsReadOnly) { reOpen = true; } break; case ProjectManager.OpenMode.Exclusive: if (!project.IsExclusive) { reOpen = true; } break; default: throw new ArgumentOutOfRangeException(nameof(openMode), openMode, null); } if (reOpen) { project.Close(); project = OpenProject(projectLinkFilePath, openMode); } return(project); } return(projectManager.OpenProject(projectLinkFilePath, openMode, upgradeIfNeeded)); } }
/// <summary> /// Opens project and checks if its open /// </summary> /// <param name="projectLinkFilePath">EPLAN project file (*.elk)</param> /// <returns>EPLAN Project</returns> public static Project OpenProject(string projectLinkFilePath, ProjectManager.OpenMode openMode = ProjectManager.OpenMode.Standard, bool upgradeIfNeeded = true) { if (!File.Exists(projectLinkFilePath)) { throw new FileNotFoundException("EPLAN project link file not found", projectLinkFilePath); } using (new LockingStep()) { ProjectManager projectManager = new ProjectManager(); var project = projectManager.OpenProjects.FirstOrDefault(p => p.ProjectLinkFilePath.Equals(projectLinkFilePath)); if (project != null) { return(project); } else { return(projectManager.OpenProject(projectLinkFilePath, openMode, upgradeIfNeeded)); } } }
/// <summary> /// Opens project and checks if its open /// </summary> /// <param name="projectLinkFilePath">EPLAN project file (*.elk)</param> /// <param name="openMode">Set how the project should be opened</param> /// <param name="upgradeIfNeeded">Set if the project should be upgraded from an older version</param> /// <returns>EPLAN Project</returns> public static Project OpenProject(string projectLinkFilePath, ProjectManager.OpenMode openMode = ProjectManager.OpenMode.Standard, bool upgradeIfNeeded = true) { if (!File.Exists(projectLinkFilePath)) { throw new FileNotFoundException("EPLAN project link file not found", projectLinkFilePath); } using (new LockingStep()) { ProjectManager projectManager = new ProjectManager(); // Use filename because the path could be other (UNC / Pathvariable) var filenameWithoutExtendsion = Path.GetFileNameWithoutExtension(projectLinkFilePath); var project = projectManager.OpenProjects.FirstOrDefault(p => p.ProjectName.Equals(filenameWithoutExtendsion)); if (project != null) { return(project); } return(projectManager.OpenProject(projectLinkFilePath, openMode, upgradeIfNeeded)); } }