public static void HandleDialogBoxShowing(object sender, Autodesk.Revit.UI.Events.DialogBoxShowingEventArgs e) { TaskDialogShowingEventArgs taskEvent = e as TaskDialogShowingEventArgs; MessageBoxShowingEventArgs msgEvent = e as MessageBoxShowingEventArgs; try { if (taskEvent != null) { // Click OK string dialogId = taskEvent.DialogId; int helpId = taskEvent.HelpId; string message = taskEvent.Message; LogFileManager.AppendLog("TaskDialog Message", message); taskEvent.OverrideResult((int)WinForms.DialogResult.OK); } else if (msgEvent != null) { int okid = (int)WinForms.DialogResult.OK; int dialogType = msgEvent.DialogType; int helpId = msgEvent.HelpId; string message = msgEvent.Message; LogFileManager.AppendLog("MessageBox Message", message); msgEvent.OverrideResult(okid); } else { LogFileManager.AppendLog("Windows MessageBox Id", e.HelpId.ToString()); e.OverrideResult(1); } } catch (Exception ex) { string message = ex.Message; } }
private string FindReviewDirectory(string revitFileName) { /*E-BIM\Software\Revit-AC*/ /*E-BIM\Review\Upgrade Test*/ string reviewDirectoryName = ""; try { string curDirectory = Path.GetDirectoryName(revitFileName); if (revitFileName.ToUpper().Contains("E-BIM") && revitFileName.ToUpper().Contains("REVIT")) { DirectoryInfo reviewDirectory = null; if (revitFileName.Contains("Software")) //upper version than 2011 { DirectoryInfo softwareDirectory = Directory.GetParent(curDirectory); while (softwareDirectory.Name != "Software") { softwareDirectory = Directory.GetParent(softwareDirectory.FullName); } DirectoryInfo bimDirectory = Directory.GetParent(softwareDirectory.FullName); foreach (DirectoryInfo directoryInfo in bimDirectory.GetDirectories()) { if (directoryInfo.Name == "Review") { reviewDirectory = directoryInfo; break; } } } else //2010 { DirectoryInfo bimDirectory = Directory.GetParent(curDirectory); while (bimDirectory.Name != "E-BIM") { bimDirectory = Directory.GetParent(bimDirectory.FullName); } foreach (DirectoryInfo directoryInfo in bimDirectory.GetDirectories()) { if (directoryInfo.Name == "Review") { reviewDirectory = directoryInfo; break; } } if (null == reviewDirectory) { string createdReviewFolder = Path.Combine(bimDirectory.FullName, "Review"); if (!Directory.Exists(createdReviewFolder)) { reviewDirectory = Directory.CreateDirectory(createdReviewFolder); } } } if (null != reviewDirectory) { string upgradeTest = Path.Combine(reviewDirectory.FullName, "UpgradeTest"); if (!Directory.Exists(upgradeTest)) { DirectoryInfo upgradeTestDir = Directory.CreateDirectory(upgradeTest); } string discipline = FindDiscipline(revitFileName); string revitdirectory = Path.Combine(upgradeTest, discipline); if (!Directory.Exists(revitdirectory)) { DirectoryInfo revitDirectoryInfo = Directory.CreateDirectory(revitdirectory); } if (Directory.Exists(revitdirectory)) { reviewDirectoryName = revitdirectory; } } } else { LogFileManager.AppendLog("This file is not located in HOK standard folder structure."); } } catch (Exception ex) { string message = ex.Message; LogFileManager.AppendLog("[Error] Find Review Directory", message); } return(reviewDirectoryName); }
public Document OpenRevitDocument(string revitFileName) { Document doc = null; try { LogFileManager.AppendLog("Open Revit Document: " + revitFileName); BasicFileInfo basicFileInfo = BasicFileInfo.Extract(revitFileName); FileOpenOptions fileOpenOptions = projectSettings.UpgradeOptions.UpgradeVersionOpenOptions; if (basicFileInfo.IsWorkshared) { ModelPath modelPath = ModelPathUtils.ConvertUserVisiblePathToModelPath(revitFileName); OpenOptions openOptions = new OpenOptions(); openOptions.Audit = fileOpenOptions.Audit; if (fileOpenOptions.DetachAndPreserveWorksets) { openOptions.DetachFromCentralOption = DetachFromCentralOption.DetachAndPreserveWorksets; } IList <WorksetPreview> wsPreviews = new List <WorksetPreview>(); IList <WorksetId> worksetIds = new List <WorksetId>(); WorksetConfiguration wsConfiguration = new WorksetConfiguration(); try { wsPreviews = WorksharingUtils.GetUserWorksetInfo(modelPath); if (wsPreviews.Count > 0) { foreach (WorksetPreview wsPreview in wsPreviews) { worksetIds.Add(wsPreview.Id); } if (fileOpenOptions.OpenAllWorkset) { wsConfiguration.Open(worksetIds); } else { wsConfiguration.Close(worksetIds); } openOptions.SetOpenWorksetsConfiguration(wsConfiguration); } } catch (Exception ex) { LogFileManager.AppendLog("[Warning] Open Worksets", ex.Message); } doc = uiApp.Application.OpenDocumentFile(modelPath, openOptions); } else { doc = uiApp.Application.OpenDocumentFile(revitFileName); } } catch (Exception ex) { string message = ex.Message; LogFileManager.AppendLog("[Error] Open Revit Document", message); } return(doc); }
public bool UpgradeRevitProject(Document document, string revitFileName) { bool upgraded = false; try { BasicFileInfo basicFileInfo = BasicFileInfo.Extract(revitFileName); FileSaveAsOptions fileSaveAsOptions = projectSettings.UpgradeOptions.UpgradeVersionSaveAsOptions; LogFileManager.AppendLog("Upgrade Revit Project: " + revitFileName); LogFileManager.AppendLog("The Original Revit file was saved in " + basicFileInfo.SavedInVersion); SaveAsOptions saveAsOptions = new SaveAsOptions(); saveAsOptions.OverwriteExistingFile = true; if (basicFileInfo.IsWorkshared) { WorksharingSaveAsOptions worksharingSaveAsOptions = new WorksharingSaveAsOptions(); worksharingSaveAsOptions.OpenWorksetsDefault = FindWorksetOption(fileSaveAsOptions.WorksetConfiguration); worksharingSaveAsOptions.SaveAsCentral = fileSaveAsOptions.MakeCentral; saveAsOptions.MaximumBackups = fileSaveAsOptions.NumOfBackups; saveAsOptions.SetWorksharingOptions(worksharingSaveAsOptions); } bool isFinalUpgrade = projectSettings.UpgradeOptions.IsFinalUpgrade; if (isFinalUpgrade) { string backupDirectory = FindBackupDirectory(revitFileName); if (!string.IsNullOrEmpty(backupDirectory)) { string fileName = Path.GetFileName(revitFileName); string newFilePath = Path.Combine(backupDirectory, fileName); File.Copy(revitFileName, newFilePath, true); if (File.Exists(newFilePath)) { document.SaveAs(revitFileName, saveAsOptions); LogFileManager.AppendLog("Backup Saved: " + newFilePath); if (fileSaveAsOptions.Relinquish) { RelinquishOptions roptions = new RelinquishOptions(false); roptions.UserWorksets = true; TransactWithCentralOptions coptions = new TransactWithCentralOptions(); WorksharingUtils.RelinquishOwnership(document, roptions, coptions); LogFileManager.AppendLog("Relinquish all worksets created by the current user."); } upgraded = true; } } else { LogFileManager.AppendLog("File Not Saved", "The backup directory cannot be found."); upgraded = false; } } else { string reviewDirectory = FindReviewDirectory(revitFileName); if (string.IsNullOrEmpty(reviewDirectory)) { reviewDirectory = fileSaveAsOptions.ReviewLocation; } string fileName = Path.GetFileName(revitFileName); if (!string.IsNullOrEmpty(reviewDirectory)) { revitFileName = Path.Combine(reviewDirectory, fileName); document.SaveAs(revitFileName, saveAsOptions); LogFileManager.AppendLog("File Saved: " + revitFileName); if (fileSaveAsOptions.Relinquish) { RelinquishOptions roptions = new RelinquishOptions(false); roptions.UserWorksets = true; TransactWithCentralOptions coptions = new TransactWithCentralOptions(); WorksharingUtils.RelinquishOwnership(document, roptions, coptions); LogFileManager.AppendLog("Relinquish all worksets created by the current user."); } upgraded = true; } else { LogFileManager.AppendLog("File Not Saved", "The review directory cannot be found."); upgraded = false; } } } catch (Exception ex) { string message = ex.Message; LogFileManager.AppendLog("[Error] Upgrade Revit Project", message); } return(upgraded); }