Example #1
0
        //private void btnCancel_Click(object sender, EventArgs e)
        //{

        //    //this.Close();
        //}

        #region convertTextNotesToUpperByView
        private void convertTextNotesToUpperByView()
        {
            // Iterate through the document and find all the TextNote elements
            FilteredElementCollector collector = new FilteredElementCollector(document, document.ActiveView.Id);

            collector.OfClass(typeof(TextNote));
            if (collector.GetElementCount() == 0)
            {
                return;
            }

            // Record all TextNotes that are not yet formatted to be 'AllCaps'
            ElementSet textNotesToUpdate = new Autodesk.Revit.DB.ElementSet();

            foreach (Element element in collector)
            {
                TextNote textNote = (TextNote)element;

                // Extract the FormattedText from the TextNote
                FormattedText formattedText = textNote.GetFormattedText();

                if (formattedText.GetAllCapsStatus() != FormatStatus.All)
                {
                    textNotesToUpdate.Insert(textNote);
                }
            }

            // Check whether we found any TextNotes that need to be formatted
            if (textNotesToUpdate.IsEmpty)
            {
                //Do something if there are no notes to format
                TaskDialog.Show("Nothing to do!", "There are no Text Notes to change to uppercase!");
            }

            // Apply the 'AllCaps' formatting to the TextNotes that still need it.
            using (frmConvertTextNotes frm = new frmConvertTextNotes(document))
            {
                foreach (TextNote textNote in textNotesToUpdate)
                {
                    Autodesk.Revit.DB.FormattedText formattedText = textNote.GetFormattedText();
                    formattedText.SetAllCapsStatus(true);
                    textNote.SetFormattedText(formattedText);
                }
            }
        }
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 virtual Result Execute(ExternalCommandData commandData
                                      , ref string message, ElementSet elements)
        {
            try
            {
                Document document = commandData.Application.ActiveUIDocument.Document;


                // Iterate through the document and find all the TextNote elements
                FilteredElementCollector collector = new FilteredElementCollector(document);
                collector.OfClass(typeof(TextNote));
                if (collector.GetElementCount() == 0)
                {
                    message = "The document does not contain TextNote elements";
                    return(Result.Failed);
                }

                // Record all TextNotes that are not yet formatted to be 'AllCaps'
                ElementSet textNotesToUpdate = new Autodesk.Revit.DB.ElementSet();
                foreach (Element element in collector)
                {
                    TextNote textNote = (TextNote)element;

                    // Extract the FormattedText from the TextNote
                    FormattedText formattedText = textNote.GetFormattedText();

                    // If 'GetAllCapsStatus()' returns 'FormatStatus.All' then all the characters in
                    // the text have the 'AllCaps' status.
                    // If there are no characters that have the 'AllCaps' status then 'GetAllCapsStatus()'
                    // will return 'FormatStatus.None'.  And if only some of the characters have
                    // the 'AllCaps' status then 'GetAllCapsStatus()' returns 'FormatStatus.Mixed'
                    //
                    // Note that it is also possible to test whether all characters are
                    // bold, italic, underlined, or have superscript or subscript formatting.
                    // See 'GetBoldStatus', 'GetItalicStatus', 'GetUnderlineStatus',
                    // 'GetSuperscriptStatus', and 'GetSubscriptStatus' respectively.
                    //
                    // Note that it is also possible to only test a subset of characters in the FormattedText
                    // This is done by calling these methods with a 'TextRange' that specifies
                    // the range of characters to be tested.

                    if (formattedText.GetAllCapsStatus() != FormatStatus.All)
                    {
                        textNotesToUpdate.Insert(textNote);
                    }
                }

                // Check whether we found any TextNotes that need to be formatted
                if (textNotesToUpdate.IsEmpty)
                {
                    message = "No TextNote elements needed updating";
                    return(Result.Failed);
                }


                // Apply the 'AllCaps' formatting to the TextNotes that still need it.
                using (Transaction transaction = new Transaction(document, "Capitalize All TextNotes"))
                {
                    transaction.Start();

                    foreach (TextNote textNote in textNotesToUpdate)
                    {
                        Autodesk.Revit.DB.FormattedText formattedText = textNote.GetFormattedText();

                        // Apply the 'AllCaps' status to all characters.
                        // Note that there are also methods to apply bold, italic, underline,
                        // superscript and subscript formatting.
                        // And that the formatting can be applied both to the entire text
                        // (as is done here), or to a subset by calling these methods with a 'TextRange'

                        formattedText.SetAllCapsStatus(true);

                        // After making the changes to the Formatted text
                        // it is necessary to apply them to the TextNote element
                        // (or elements) that should get these changes.
                        textNote.SetFormattedText(formattedText);
                    }

                    transaction.Commit();
                }

                return(Result.Succeeded);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                return(Result.Failed);
            }
        }