• revit二次开发之二 删除选中的对象


    对选中的对象进行删除

    using System;
    using System.Windows.Forms;
    using System.Collections;
    using Autodesk.Revit;
    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;
    
    namespace Revit.SDK.Samples.DeleteObject.CS
    {
        /// <summary>
        /// 删除被选中的对象
        /// </summary>
        [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
        public class Command : Autodesk.Revit.UI.IExternalCommand
        {
        
            public Autodesk.Revit.UI.Result Execute(
                Autodesk.Revit.UI.ExternalCommandData commandData,
                ref string message, Autodesk.Revit.DB.ElementSet elements)
            {
                Autodesk.Revit.UI.UIApplication revit = commandData.Application;
    
                ElementSet collection = new ElementSet();
                //获取当前选中对象的集合
                foreach (ElementId elementId in revit.ActiveUIDocument.Selection.GetElementIds())
                {
                   collection.Insert(revit.ActiveUIDocument.Document.GetElement(elementId));
                }
                // 判断选中对象的尺寸
                if (collection.Size < 1)
                {
                    message = "至少要选择一个被删除的对象";
                    return Autodesk.Revit.UI.Result.Cancelled;
                }
    
                bool error = true;
                try
                {
                    error = true;
    
                    // 逐个进行删除
                    IEnumerator e = collection.GetEnumerator();
                    bool MoreValue = e.MoveNext();
                    while (MoreValue)
                    {
                        Element component = e.Current as Element;
                        revit.ActiveUIDocument.Document.Delete(component.Id);
                        MoreValue = e.MoveNext();
                    }
    
                    error = false;
                }
                catch
                {
                    // 将不可删除的对象添加到elements中
                    foreach (Element c in collection)
                    {
                        elements.Insert(c);
                    }
                    message = "对象不能被删除";
                    return Autodesk.Revit.UI.Result.Failed;
                }
                finally
                {
                    // 提示失败
                    if (error)
                    {
                        TaskDialog.Show("Error", "Delete failed.");
                    }
                }
    
                return Autodesk.Revit.UI.Result.Succeeded;
            }
        }
    }
    View Code
  • 相关阅读:
    并发编程之多线程(理论部分)
    基于TCP和UDP的socket
    ajax笔记 显示出所城市名称 ShowCity.aspx Html代码
    蒸饭的纱布
    ajax 笔记--不刷新实现简单的留言版 guestBook
    从表的第几条取到第几条记录
    在asp.net添加数据到XML里去
    ajax 笔记-- 写了一个不用刷新就能实现--用户名验证的例子
    今天生日
    ajax 笔记不用刷新实现数据的分页显示
  • 原文地址:https://www.cnblogs.com/minhost/p/5787217.html
Copyright © 2020-2023  润新知