A simple data class that holds Performance Adviser rule information for use with TestDisplayDialog
Example #1
0
        /// <summary>
        /// Implement this method as an external command for Revit.
        /// </summary>
        /// <param name="commandData">An object that is passed to the external application
        /// which contains data related to the command,
        /// such as the application object and active view.</param>
        /// <param name="message">A message that can be set by the external application
        /// which will be displayed if a failure or cancellation is returned by
        /// the external command.</param>
        /// <param name="elements">A set of elements to which the external application
        /// can add elements that are to be highlighted in case of failure or cancellation.</param>
        /// <returns>Return the status of the external command.
        /// A result of Succeeded means that the API external method functioned as expected.
        /// Cancelled can be used to signify that the user cancelled the external operation
        /// at some point. Failure should be returned if the application is unable to proceed with
        /// the operation.
        /// </returns>
        public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            //A list of rule information to be used below
            List <RuleInfo> ruleInfoList = new List <RuleInfo>();

            #region Get Rule info through iteration from PerformanceAdviser

            ///Here, we query the information about rules registered in PerformanceAdviser so that
            ///we can later decide in a dialog which rules we want to run.

            PerformanceAdviser performanceAdviser = PerformanceAdviser.GetPerformanceAdviser();


            ICollection <PerformanceAdviserRuleId> allIds = performanceAdviser.GetAllRuleIds();
            foreach (PerformanceAdviserRuleId ruleID in allIds)
            {
                string ruleName        = performanceAdviser.GetRuleName(ruleID);
                string ruleDescription = performanceAdviser.GetRuleDescription(ruleID);
                bool   isEnabled       = performanceAdviser.IsRuleEnabled(ruleID);

                //We want to mark user-defined (API) rules, so we check to see if the current rule ID is
                //equal to the rule ID we created.
                bool isOurRule = (ruleID == FlippedDoorCheck.Id);

                RuleInfo oneRule = new RuleInfo(ruleID, isOurRule, ruleName, ruleDescription, isEnabled);
                ruleInfoList.Add(oneRule);
            }

            #endregion

            #region Prepare and show UI

            //This dialog box will allow the user to select and run performance rules, so it needs
            //the PerformanceAdviser and active document passed to it.
            TestDisplayDialog tdd = new TestDisplayDialog(PerformanceAdviser.GetPerformanceAdviser(), commandData.Application.ActiveUIDocument.Document);

            foreach (RuleInfo r in ruleInfoList)
            {
                /// Add the rule data we just collected in the previous loop the the dialog box
                /// we are about to show.
                tdd.AddData(r.RuleName, r.IsOurRule, r.IsEnabled);
            }

            tdd.ShowDialog();
            #endregion

            return(Autodesk.Revit.UI.Result.Succeeded);
        }
Example #2
0
        /// <summary>
        /// Implement this method as an external command for Revit.
        /// </summary>
        /// <param name="commandData">An object that is passed to the external application 
        /// which contains data related to the command, 
        /// such as the application object and active view.</param>
        /// <param name="message">A message that can be set by the external application 
        /// which will be displayed if a failure or cancellation is returned by 
        /// the external command.</param>
        /// <param name="elements">A set of elements to which the external application 
        /// can add elements that are to be highlighted in case of failure or cancellation.</param>
        /// <returns>Return the status of the external command. 
        /// A result of Succeeded means that the API external method functioned as expected. 
        /// Cancelled can be used to signify that the user cancelled the external operation 
        /// at some point. Failure should be returned if the application is unable to proceed with 
        /// the operation.
        /// </returns>
        public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            //A list of rule information to be used below
             List<RuleInfo> ruleInfoList = new List<RuleInfo>();

             #region Get Rule info through iteration from PerformanceAdviser

            ///Here, we query the information about rules registered in PerformanceAdviser so that
            ///we can later decide in a dialog which rules we want to run.

            PerformanceAdviser performanceAdviser = PerformanceAdviser.GetPerformanceAdviser();

            ICollection<PerformanceAdviserRuleId> allIds = performanceAdviser.GetAllRuleIds();
            foreach (PerformanceAdviserRuleId ruleID in allIds)
            {
               string ruleName = performanceAdviser.GetRuleName(ruleID);
               string ruleDescription = performanceAdviser.GetRuleDescription(ruleID);
               bool isEnabled = performanceAdviser.IsRuleEnabled(ruleID);

               //We want to mark user-defined (API) rules, so we check to see if the current rule ID is
               //equal to the rule ID we created.
               bool isOurRule = (ruleID == FlippedDoorCheck.Id);

               RuleInfo oneRule = new RuleInfo(ruleID, isOurRule, ruleName, ruleDescription, isEnabled);
               ruleInfoList.Add(oneRule);
            }

             #endregion

             #region Prepare and show UI

               //This dialog box will allow the user to select and run performance rules, so it needs
               //the PerformanceAdviser and active document passed to it.
               TestDisplayDialog tdd = new TestDisplayDialog(PerformanceAdviser.GetPerformanceAdviser(), commandData.Application.ActiveUIDocument.Document);

               foreach (RuleInfo r in ruleInfoList)
               {
                  /// Add the rule data we just collected in the previous loop the the dialog box
                  /// we are about to show.
                  tdd.AddData(r.RuleName, r.IsOurRule, r.IsEnabled);
               }

              tdd.ShowDialog();
            #endregion

              return Autodesk.Revit.UI.Result.Succeeded;
        }