public static MonitorProjectSetup GetProjectSetup(Document doc) { MonitorProjectSetup projectSetup = new MonitorProjectSetup(); try { if (null == m_schema) { m_schema = CreateSchema(); } if (null != m_schema) { IList <DataStorage> savedStorage = GetProjectSetupStorage(doc, m_schema); if (savedStorage.Count > 0) { DataStorage storage = savedStorage.First(); Entity entity = storage.GetEntity(m_schema); projectSetup.IsMonitorOn = entity.Get <bool>(m_schema.GetField(s_IsMonitorOn)); projectSetup.ProjectState = entity.Get <string>(m_schema.GetField(s_ProjectState)); projectSetup.IsStateCA = entity.Get <bool>(m_schema.GetField(s_IsStateCA)); } } } catch (Exception ex) { string message = "Cannot get Project Setup Information:" + ex.Message; } return(projectSetup); }
private void buttonOK_Click(object sender, RoutedEventArgs e) { if (VerifySelection()) { projectSetup = SaveMonitorSetup(); ProjectSetupDataStroageUtil.StoreProjectSetup(m_doc, projectSetup); this.DialogResult = true; } }
public SettingWindow(Document doc, MonitorProjectSetup setup) { m_doc = doc; projectSetup = setup; InitializeComponent(); this.Title = "Project Setup Information v" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); FillStateList(); DisplayStoredValues(); }
private MonitorProjectSetup SaveMonitorSetup() { MonitorProjectSetup projectSetup = new MonitorProjectSetup(); try { projectSetup.IsMonitorOn = (bool)checkBoxEnabled.IsChecked; projectSetup.ProjectState = comboBoxState.SelectedItem.ToString(); if (projectSetup.ProjectState == "CA") { projectSetup.IsStateCA = true; } } catch (Exception ex) { string message = ex.Message; } return(projectSetup); }
public void RefreshMonitorSetup(Document doc, MonitorProjectSetup projectSetup) { try { if (projectSetup.IsMonitorOn) { #if RELEASE2013 if (!UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId())) { doorUpdater.Register(doc, projectSetup); doc.DocumentClosing += UnregisterDoorUpdaterOnClose; } #elif RELEASE2014 || RELEASE2015 || RELEASE2016 || RELEASE2017 if (!UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId(), doc)) { doorUpdater.Register(doc, projectSetup); doc.DocumentClosing += UnregisterDoorUpdaterOnClose; } #endif } else { #if RELEASE2013 if (UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId())) { UpdaterRegistry.UnregisterUpdater(doorUpdater.GetUpdaterId()); } #elif RELEASE2014 || RELEASE2015 || RELEASE2016 || RELEASE2017 if (UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId(), doc)) { UpdaterRegistry.UnregisterUpdater(doorUpdater.GetUpdaterId(), doc); } #endif } } catch (Exception ex) { string message = ex.Message; } }
public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements) { m_app = commandData.Application; m_doc = m_app.ActiveUIDocument.Document; try { MonitorProjectSetup projectSetup = ProjectSetupDataStroageUtil.GetProjectSetup(m_doc); SettingWindow settingWindow = new SettingWindow(m_doc, projectSetup); if (settingWindow.ShowDialog() == true) { projectSetup = settingWindow.ProjectSetup; settingWindow.Close(); if (projectSetup.IsMonitorOn) { List <MonitorMessage> errorMessages = VerifyDoorParameters(projectSetup); if (errorMessages.Count > 0) { MessageWindow msgWindow = new MessageWindow(errorMessages); if (msgWindow.ShowDialog() == true) { List <MonitorMessage> selectedMessages = msgWindow.SelectedItems; msgWindow.Close(); ShowElements(selectedMessages); } } } AppCommand.Instance.RefreshMonitorSetup(m_doc, projectSetup); } } catch (Exception ex) { MessageBox.Show("Failed to execute Setting Commands.\n" + ex.Message, "Setting Command", MessageBoxButton.OK, MessageBoxImage.Warning); } return(Result.Succeeded); }
internal void Register(Document doc, MonitorProjectSetup projectSetup) { ElementFilter catFilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors); FilteredElementCollector collector = new FilteredElementCollector(doc); List <FamilyInstance> doorInstances = collector.WherePasses(catFilter).WhereElementIsNotElementType().Cast <FamilyInstance>().ToList(); collector = new FilteredElementCollector(doc); List <Family> doorFamilies = collector.OfClass(typeof(Family)).Cast <Family>().ToList(); bool existParam = FindClearanceParameter(doorInstances, doorFamilies); if (existParam) { UpdaterRegistry.RegisterUpdater(this, doc); if (pullParameters.Count > 0) { foreach (Parameter param in pullParameters) { UpdaterRegistry.AddTrigger(updaterId, doc, catFilter, Element.GetChangeTypeParameter(param)); } } if (pushParameters.Count > 0) { foreach (Parameter param in pushParameters) { UpdaterRegistry.AddTrigger(updaterId, doc, catFilter, Element.GetChangeTypeParameter(param)); } } if (stateCAParameters.Count > 0) { UpdaterRegistry.AddTrigger(updaterId, doc, catFilter, Element.GetChangeTypeElementAddition()); foreach (Parameter param in stateCAParameters) { UpdaterRegistry.AddTrigger(updaterId, doc, catFilter, Element.GetChangeTypeParameter(param)); } } } }
private void RegisterDoorUpdaterOnOpen(object source, DocumentOpenedEventArgs args) { if (null != args.Document) { Document doc = args.Document; MonitorProjectSetup projectSetup = ProjectSetupDataStroageUtil.GetProjectSetup(doc); if (projectSetup.IsMonitorOn) { #if RELEASE2013 if (!UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId())) { doorUpdater.Register(doc, projectSetup); } #elif RELEASE2014 || RELEASE2015 || RELEASE2016 || RELEASE2017 if (!UpdaterRegistry.IsUpdaterRegistered(doorUpdater.GetUpdaterId(), doc)) { doorUpdater.Register(doc, projectSetup); } #endif args.Document.DocumentClosing += UnregisterDoorUpdaterOnClose; } } }
public static bool StoreProjectSetup(Document doc, MonitorProjectSetup projectSetup) { bool saved = false; try { if (null == m_schema) { m_schema = CreateSchema(); } if (null != m_schema) { IList <DataStorage> savedStorage = GetProjectSetupStorage(doc, m_schema); if (savedStorage.Count > 0) { using (Transaction trans = new Transaction(doc)) { trans.Start("Store Project Setup"); try { foreach (DataStorage storage in savedStorage) { doc.Delete(storage.Id); } trans.Commit(); } catch (Exception ex) { string message = ex.Message; trans.RollBack(); } } } using (Transaction trans = new Transaction(doc)) { trans.Start("Store Project Setup"); try { DataStorage dataStorage = DataStorage.Create(doc); Entity entity = new Entity(schemaId); entity.Set <bool>(s_IsMonitorOn, projectSetup.IsMonitorOn); entity.Set <string>(s_ProjectState, projectSetup.ProjectState); entity.Set <bool>(s_IsStateCA, projectSetup.IsStateCA); dataStorage.SetEntity(entity); trans.Commit(); saved = true; } catch (Exception ex) { string message = ex.Message; trans.RollBack(); } } } } catch (Exception ex) { string message = "Cannot store project setup." + ex.Message; } return(saved); }
private List <MonitorMessage> VerifyDoorParameters(MonitorProjectSetup projectSetup) { List <MonitorMessage> warningMessages = new List <MonitorMessage>(); try { using (TransactionGroup transGroup = new TransactionGroup(m_doc)) { transGroup.Start("Verify Doors"); ElementFilter catFilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors); FilteredElementCollector collector = new FilteredElementCollector(m_doc); List <FamilyInstance> doorInstances = collector.WherePasses(catFilter).WhereElementIsNotElementType().Cast <FamilyInstance>().ToList(); foreach (FamilyInstance doorInstance in doorInstances) { #if RELEASE2013 || RELEASE2014 Parameter pullParam = doorInstance.get_Parameter(pullParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter pullParam = doorInstance.LookupParameter(pullParamName); #endif if (null != pullParam) { string pullValue = pullParam.AsValueString(); if (!pullValue.Contains("Approach")) { MonitorMessage message = new MonitorMessage(doorInstance, pullParamName, "Incorrect parameter value has been set."); warningMessages.Add(message); } } #if RELEASE2013 || RELEASE2014 Parameter pushParam = doorInstance.get_Parameter(pushParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter pushParam = doorInstance.LookupParameter(pushParamName); #endif if (null != pushParam) { string pushValue = pushParam.AsValueString(); if (!pushValue.Contains("Approach")) { MonitorMessage message = new MonitorMessage(doorInstance, pushParamName, "Incorrect parameter value has been set."); warningMessages.Add(message); } } #if RELEASE2013 || RELEASE2014 Parameter caParam = doorInstance.get_Parameter(stateCAParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter caParam = doorInstance.LookupParameter(stateCAParamName); #endif if (null != caParam) { int caVal = caParam.AsInteger(); int projectVal = Convert.ToInt32(projectSetup.IsStateCA); if (caVal != projectVal) { using (Transaction trans = new Transaction(m_doc)) { trans.Start("Set State Param"); try { caParam.Set(projectVal); MonitorMessage message = new MonitorMessage(doorInstance, stateCAParamName, "Parameter Value has been changed. (solved) "); warningMessages.Add(message); trans.Commit(); } catch (Exception ex) { string message = ex.Message; trans.RollBack(); } } } } } transGroup.Assimilate(); } } catch (Exception ex) { MessageBox.Show("Failed to verify door parameters.\n" + ex.Message, "Verify Door Parameters", MessageBoxButton.OK, MessageBoxImage.Warning); } return(warningMessages); }
public void Execute(UpdaterData data) { try { Document doc = data.GetDocument(); MonitorProjectSetup projectSetup = ProjectSetupDataStroageUtil.GetProjectSetup(doc); if (data.GetModifiedElementIds().Count > 0) { ElementId doorId = data.GetModifiedElementIds().First(); FamilyInstance doorInstance = doc.GetElement(doorId) as FamilyInstance; if (null != doorInstance) { #if RELEASE2013 || RELEASE2014 Parameter pushParameter = doorInstance.get_Parameter(pushParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter pushParameter = doorInstance.LookupParameter(pushParamName); #endif if (null != pushParameter) { if (data.IsChangeTriggered(doorId, Element.GetChangeTypeParameter(pushParameter))) { string pushValue = pushParameter.AsValueString(); if (!pushValue.Contains("Approach")) { AppCommand.Instance.IsDoorFail = true; AppCommand.Instance.FailingDoorId = doorId; DialogResult dr = MessageBox.Show(pushValue + " is not a correct value for the parameter " + pushParamName, "Invalid Door Parameter.", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } #if RELEASE2013 || RELEASE2014 Parameter pullParameter = doorInstance.get_Parameter(pullParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter pullParameter = doorInstance.LookupParameter(pullParamName); #endif if (null != pullParameter) { if (data.IsChangeTriggered(doorId, Element.GetChangeTypeParameter(pullParameter))) { string pullValue = pullParameter.AsValueString(); if (!pullValue.Contains("Approach")) { AppCommand.Instance.IsDoorFail = true; AppCommand.Instance.FailingDoorId = doorId; DialogResult dr = MessageBox.Show(pullValue + " is not a correct value for the parameter " + pullParamName, "Invalid Door Parameter.", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } #if RELEASE2013 || RELEASE2014 Parameter caParameter = doorInstance.get_Parameter(stateCAParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter caParameter = doorInstance.LookupParameter(stateCAParamName); #endif if (null != caParameter) { if (data.IsChangeTriggered(doorId, Element.GetChangeTypeParameter(caParameter))) { int caValue = caParameter.AsInteger(); int projectVal = Convert.ToInt32(projectSetup.IsStateCA); if (caValue != projectVal) { caParameter.Set(projectVal); } } } } } else if (data.GetAddedElementIds().Count > 0) { ElementId doorId = data.GetAddedElementIds().First(); FamilyInstance doorInstance = doc.GetElement(doorId) as FamilyInstance; if (null != doorInstance) { #if RELEASE2013 || RELEASE2014 Parameter caParameter = doorInstance.get_Parameter(stateCAParamName); #elif RELEASE2015 || RELEASE2016 || RELEASE2017 Parameter caParameter = doorInstance.LookupParameter(stateCAParamName); #endif if (null != caParameter) { int caValue = caParameter.AsInteger(); int projectVal = Convert.ToInt32(projectSetup.IsStateCA); if (caValue != projectVal) { caParameter.Set(projectVal);//default value 1 } } } } } catch (Exception ex) { MessageBox.Show("Failed to execute the door updater.\n" + ex.Message, "DoorUpdater:Execute", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }