Revit交互选择

Revit把所有的交互选择的操作全部封装在Selection类中。

Selection类提供了选择点,选择线,选择面,选择对象,窗口选择,多重选择等等操作。

常用

Pick...是执行命令之后选择。

GetElementIds 执行命令之前选中图元,并返回他们的Id。

SetElementIds 执行命令后,选中传入Id的图元。

PickBox(PickBoxStyle)  //窗口选的效果,返回所选择的范围,不返回所选的对象集合

PickBox(PickBoxStyle, String)  //窗口选,可输入状态栏提醒字符串,返回返回所选择的范围

PickElementsByRectangle()()()()   //窗口选,返回选中对象集合

PickElementsByRectangle(String)  //窗口选,返回选中对象集合

PickElementsByRectangle(ISelectionFilter)  //窗口选,指定一个选择过滤器,返回选中对象集合

PickElementsByRectangle(ISelectionFilter, String) // 窗口选,指定一个选择过滤器,返回选中对象集合, 提示字符串

PickObject(ObjectType)  //单选一个实体上的点,棱边,面,对象

PickObject(ObjectType, ISelectionFilter)   //单选一个实体上的点,棱边,面,对象,带过滤器,只有符合过滤器的才能在选择中被高亮,且被选中

PickObject(ObjectType, String)

PickObject(ObjectType, ISelectionFilter, String)

PickObjects(ObjectType)   //多选,可以组合多中选择方式。

PickObjects(ObjectType, ISelectionFilter)

PickObjects(ObjectType, String)

PickObjects(ObjectType, ISelectionFilter, String)

PickObjects(ObjectType, ISelectionFilter, String, IList<(Of <<'(Reference>)>>))

PickPoint()()()()   //选择一个点

PickPoint(String)  //选择一个点

PickPoint(ObjectSnapTypes)  //选择一个点,指定捕捉类型

PickPoint(ObjectSnapTypes, String)
测试代码:
//主函数
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;

            ISelectionFilter WallFilter = new WallSelectionFilter();
            IList<Element> elementList = uidoc.Selection.PickElementsByRectangle(WallFilter, "框选常规 - 200mm的墙");

            var eleIds = from Element in elementList
                         select Element.Id;

            uidoc.Selection.SetElementIds(eleIds.ToList());

            return Result.Succeeded;

        }
//实现函数
public class WallSelectionFilter : ISelectionFilter
    {
        public bool AllowElement(Element elem)
        {
            if(elem is Wall && elem.Name == "常规 - 200mm")
            {
                return true;
            }
            return false;
        }

        public bool AllowReference(Reference reference, XYZ position)
        {
            return false;
        }
    }
测试结果

参考: http://blog.csdn.net/joexiongjin/article/details/8099842

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容