Revit过滤器

1.过滤器

1.1ElementClassFilter​
ElementClassFilter的作用是根据类,来过滤Revit文档中的元素,即获取到符合传入类的元素。ElementClassFilter的构造函数定义是:ElementClassFilter(Type type)​​。

使用实例:

public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;

            FilteredElementCollector collector = new FilteredElementCollector(doc);//建立收集器

            ElementClassFilter classFilter = new ElementClassFilter(typeof(Wall));//利用ElementClassFilter对收集器进行过滤
            collector = collector.WherePasses(classFilter);

            //将过滤得到的图元转换为id
            IList<ElementId> elid = new List<ElementId>();
            foreach (Element el in collector)
            {
                elid.Add(el.Id);
            }
            //将图元设置为选中状态
            uidoc.Selection.SetElementIds(elid);

            return Result.Succeeded;

        }
测试结果

1.2ElementCategoryFilter​​
ElementCategoryFilter即元素类别过滤器。Category(类别)!所有基类为Element类的元素都拥有一个Category属性用于表示这个元素属于的类别或者子类别,详见上一篇数据结构。

  ElementCategoryFilter​​ categoryFilter = new ElementCategoryFilter​​(BuiltInCategory.OST_Walls);//将元素的类别作为传入参数来过滤元素
            collector = collector.WherePasses(categoryFilter);

元素的类别可以采用如图方法查看:

查看元素类别
测试结果

2.选择过滤器
在执行命令的过程中,让用户自行选择构件或构建集。

主函数中的实现:
ISelectionFilter WallFilter = new WallSelectionFilter();
            IList<Reference> elementList = uidoc.Selection.PickObjects(ObjectType.Element, WallFilter, "选择墙");
接口的实现:
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;
        }
    }
选择过滤器
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 视频连接v.bimcc.com/course/35/tasks 常用过滤器:过滤器、选择过滤器 一、过滤器 建立一...
    _skyky阅读 5,366评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,491评论 19 139
  • 与其说“时间”是个富有距离感的代表词 还不如说时间是个吞噬光阴的杀手 它就像一把双刃剑, 我闭上眼睛,太阳在东方;...
    暖心人cc阅读 3,226评论 0 0
  • 模板: 网名 断舍离第 天分享 践行内容: 践行时间: 践行成果: 践行体悟: 例如: 小鱼儿 断舍离第1天分享 ...
    花彤阅读 2,767评论 0 0
  • 呐,时间如同煮在沸水中的一大块冰。 刚开始的时候,我们坐在炉火边,希望获得刚刚好的温度,在温暖中安然入睡。这冰块也...
    学弟家的小鲸鱼阅读 1,729评论 0 1