Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 private void buttonOK_Click(object sender, RoutedEventArgs e)
 {
     if (VerifySelection())
     {
         projectSetup = SaveMonitorSetup();
         ProjectSetupDataStroageUtil.StoreProjectSetup(m_doc, projectSetup);
         this.DialogResult = true;
     }
 }
Ejemplo n.º 3
0
 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();
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 8
0
        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;
                }
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
            }
        }