user select a element. If the selected element has boundary conditions, display its parameter values else create one. this class prepare the needed data(the selected element type and its BC information) and operate the Revit API
예제 #1
0
        /// <summary>
        /// constructor
        /// </summary>
        /// <param name="dataBuffer"></param>
        public BoundaryConditionsForm(BoundaryConditionsData dataBuffer)
        {
            InitializeComponent();

            m_dataBuffer = dataBuffer;
        }
예제 #2
0
        /// <summary>
        /// constructor
        /// </summary>
        /// <param name="dataBuffer"></param>
        public BoundaryConditionsForm(BoundaryConditionsData dataBuffer)
        {
            InitializeComponent();

            m_dataBuffer = dataBuffer;
        }
예제 #3
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 Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData,
                                                ref string message,
                                                ElementSet elements)
        {
            try
            {
                //Retrieves the currently active project.
                UIDocument doc = commandData.Application.ActiveUIDocument;

                // must select a element first
                ElementSet elementSet = doc.Selection.Elements;
                if (1 != elementSet.Size)
                {
                    message = "Please select one structural element which is listed as follows: \r\n" +
                              "Columns/braces/Beams/Walls/Wall Foundations/Slabs/Foundation Slabs";
                    return(Autodesk.Revit.UI.Result.Cancelled);
                }


                Transaction tran = new Transaction(doc.Document, "BoundaryConditions");
                tran.Start();

                // deal with the selected element
                foreach (Element element in elementSet)
                {
                    // the selected element must be a structural element
                    if (!IsExpectedElement(element))
                    {
                        message = "Please select one structural element which is listed as follows: \r\n" +
                                  "Columns/braces/Beams/Walls/Wall Foundations/ \r\n" +
                                  "Slabs/Foundation Slabs";
                        return(Autodesk.Revit.UI.Result.Cancelled);
                    }

                    // prepare the relative data
                    BoundaryConditionsData dataBuffer = new BoundaryConditionsData(element);

                    // show UI
                    using (BoundaryConditionsForm displayForm = new BoundaryConditionsForm(dataBuffer))
                    {
                        DialogResult result = displayForm.ShowDialog();
                        if (DialogResult.OK == result)
                        {
                            tran.Commit();
                            return(Autodesk.Revit.UI.Result.Succeeded);
                        }
                        else if (DialogResult.Retry == result)
                        {
                            message = "failed to create BoundaryConditions.";
                            tran.RollBack();
                            return(Autodesk.Revit.UI.Result.Failed);
                        }
                    }
                }

                tran.RollBack();
                // user cancel the operation
                return(Autodesk.Revit.UI.Result.Cancelled);
            }
            catch (Exception e)
            {
                message = e.Message;
                return(Autodesk.Revit.UI.Result.Failed);
            }
        }
예제 #4
0
파일: Command.cs 프로젝트: AMEE/revit
        /// <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)
        {
            try
            {
                //Retrieves the currently active project.
                UIDocument doc = commandData.Application.ActiveUIDocument;

                // must select a element first
                ElementSet elementSet = doc.Selection.Elements;
                if (1 != elementSet.Size)
                {
                    message = "Please select one structural element which is listed as follows: \r\n" +
                              "Columns/braces/Beams/Walls/Wall Foundations/Slabs/Foundation Slabs";
                    return Autodesk.Revit.UI.Result.Cancelled;
                }

                Transaction tran = new Transaction(doc.Document, "BoundaryConditions");
                tran.Start();

                // deal with the selected element
                foreach (Element element in elementSet)
                {
                    // the selected element must be a structural element
                    if (!IsExpectedElement(element))
                    {
                        message = "Please select one structural element which is listed as follows: \r\n" +
                                  "Columns/braces/Beams/Walls/Wall Foundations/ \r\n" +
                                  "Slabs/Foundation Slabs";
                        return Autodesk.Revit.UI.Result.Cancelled;
                    }

                    // prepare the relative data
                    BoundaryConditionsData dataBuffer = new BoundaryConditionsData(element);

                    // show UI
                    using (BoundaryConditionsForm displayForm = new BoundaryConditionsForm(dataBuffer))
                    {
                        DialogResult result = displayForm.ShowDialog();
                        if (DialogResult.OK == result)
                        {
                            tran.Commit();
                            return Autodesk.Revit.UI.Result.Succeeded;
                        }
                        else if (DialogResult.Retry == result)
                        {
                            message = "failed to create BoundaryConditions.";
                            tran.RollBack();
                            return Autodesk.Revit.UI.Result.Failed;
                        }
                    }
                }

                tran.RollBack();
                // user cancel the operation
                return Autodesk.Revit.UI.Result.Cancelled;
            }
            catch (Exception e)
            {
                message = e.Message;
                return Autodesk.Revit.UI.Result.Failed;
            }
        }