Revit二次开发之如何选取Revit元素【比目鱼原创】

Revit API提供的获取元素的交互包括以下几种方式:
方式(1) 先选择元素,再执行外部命令,Revit文档可以获取选择元素并做相应处理。

方式(2) 先执行命令,再选择元素或者位置,选择结束后命令继续执行。

这种方式的选择又包含

①单选。只能选取一个元素,选择后当前选择操作结束。

②多选。可以选取多个元素,单击工具条上的“结朿”按钮来确认选择操作结束,或者 单击“取消”或者按ESC键来取消选择。
③框选。拉框访方式选取,所有在框内的且符合过滤条件的元素都将被选取。

④选点。选择视图中的一个坐标点。

学习的代码如下:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
namespace HelloRevit
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
    public class Class1 : IExternalCommand
    {
        public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref string message, ElementSet elements)
        {
            UIDocument uidoc = revit.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            Selection selection = uidoc.Selection;


            try
            {
                //获取Revit已选中的元素
                String info = "所选元素类型为: ";
                foreach (var elementId in selection.GetElementIds())
                {
                    var elem = doc.GetElement(elementId);
                    if (elem != null)
                    {
                        info += "\n\t" + elem.GetType().ToString();
                    }
                }
                TaskDialog.Show("Revit已选中的元素为:", info);


                //用户自行选择元素
                var referenceCollection = selection.PickObjects(ObjectType.Element, "请选择模型构件");
                if (0 == referenceCollection.Count)
                {
                    TaskDialog.Show("Revit", "你没有选任何元素.");
                }
                else
                {
                    info = "所选元素类型为: ";
                    foreach (var reference in referenceCollection)
                    {
                        var elem = doc.GetElement(reference);
                        if (elem != null)
                        {
                            info += "\n\t" + elem.GetType().ToString();
                        }
                    }
                    TaskDialog.Show("你所选择的元素为", info);
                }
            }
            catch (Exception e)
            {
                message = e.Message;
                return Autodesk.Revit.UI.Result.Failed;
            }
            return Autodesk.Revit.UI.Result.Succeeded;
        }
    }
}

其中ObjectType. Element指定选取的是元素整体,Revit API还支持选取面(Face)、 边(Edge)、点(Point)等。

=========【更多高级应用请关注公众号】========


===================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值