/// <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 Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Document document; document = commandData.Application.ActiveUIDocument.Document; // only a family document can retrieve family manager if (document.IsFamilyDocument) { m_familyManager = document.FamilyManager; List<string> errorMessages = ValidateParameters(m_familyManager); using(MessageForm msgForm = new MessageForm(errorMessages.ToArray())) { msgForm.StartPosition = FormStartPosition.CenterParent; msgForm.ShowDialog(); return Autodesk.Revit.UI.Result.Succeeded; } } else { message = "please make sure you have opened a family document!"; return Autodesk.Revit.UI.Result.Failed; } }
/// <summary> /// The method is to validate parameters via FamilyParameter and FamilyType /// </summary> /// <param name="doc">the document which need to validate parameters</param> private void validateParameters(Document doc) { List<string> errorInfo = new List<string>(); FamilyManager familyManager; if (doc.IsFamilyDocument) { familyManager = doc.FamilyManager; errorInfo = Command.ValidateParameters(familyManager); } else { errorInfo.Add("The current document isn't a family document, so the validation doesn't work correctly!"); } using (MessageForm msgForm = new MessageForm(errorInfo.ToArray())) { msgForm.StartPosition = FormStartPosition.CenterParent; msgForm.ShowDialog(); } }