// In the example below, a document is opened with two worksets specified to be opened. // Note that the WorksharingUtils.GetUserWorksetInfo() method can be used to access workset // information from a closed Revit document. Document OpenDocumentWithWorksets(ModelPath projectPath) { Document doc = null; try { // Get info on all the user worksets in the project prior to opening IList <WorksetPreview> worksets = WorksharingUtils.GetUserWorksetInfo(projectPath); IList <WorksetId> worksetIds = new List <WorksetId>(); // Find two predetermined worksets foreach (WorksetPreview worksetPrev in worksets) { if (worksetPrev.Name.CompareTo("Workset1") == 0 || worksetPrev.Name.CompareTo("Workset2") == 0) { worksetIds.Add(worksetPrev.Id); } } OpenOptions openOptions = new OpenOptions(); // Setup config to close all worksets by default WorksetConfiguration openConfig = new WorksetConfiguration(WorksetConfigurationOption.CloseAllWorksets); // Set list of worksets for opening openConfig.Open(worksetIds); openOptions.SetOpenWorksetsConfiguration(openConfig); doc = _app.OpenDocumentFile(projectPath, openOptions); } catch (Exception e) { TaskDialog.Show("Open File Failed", e.Message); } return(doc); }
public UIDocument DoOpenNewLocalFromModelPath(ModelPath centralPath, ModelPath localPath) { List <WorksetId> worksetsToOpen = new List <WorksetId>(); // First set to close all worksets WorksetConfiguration worksetConfig = new WorksetConfiguration(WorksetConfigurationOption.CloseAllWorksets); OpenOptions theOpenOptions = new OpenOptions(); try { // Create the new local at the given path WorksharingUtils.CreateNewLocal(centralPath, localPath); // Select specific worksets to open // Get a list of worksets from the unopened document IList <WorksetPreview> worksets = WorksharingUtils.GetUserWorksetInfo(localPath); foreach (WorksetPreview preview in worksets) { bool Include = true; ////// The inverse list is the inverse of the worksets checked. In other ////// words an exclusion list. //////foreach (string ws in InverseWorksetList) { ////// if (ws == "") { continue; } ////// if (preview.Name.StartsWith(ws)) { ////// Include = false; ////// continue; ////// } else { ////// } //////} if (Include) { worksetsToOpen.Add(preview.Id); } else { //System.Windows.MessageBox.Show("Excluding " + preview.Name); } } // Setup option to open the target worksets // then set specific ones to open worksetConfig.Open(worksetsToOpen); theOpenOptions.SetOpenWorksetsConfiguration(worksetConfig); // Now open the new local UIDocument openedDoc = _uiApp.OpenAndActivateDocument(localPath, theOpenOptions, false); return(openedDoc); } catch (Exception ex) { System.Windows.MessageBox.Show("Opening the file from its location.\n\n" + ex.Message, "This Is Not A Workshared File"); } // If here then not a workshared file. string fname = ModelPathUtils.ConvertModelPathToUserVisiblePath(centralPath); UIDocument openedDocN = _uiApp.OpenAndActivateDocument(fname); return(openedDocN); }
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); }