revit二开之获取嵌套族中的子族(过滤族)

欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207

一、背景

小伙伴们在进行revit开发时,可能有过滤族的需求。这里的族(Family)不是族类型(FamilySymbol)也不是族实例(FamilyInstance),那么如何过滤呢?

二、思路

不管是在项目环境中,或者嵌套族环境中,使用以下代码即可

//推荐
FilteredElementCollector collector = new FilteredElementCollector(doc);
IEnumerable<Element> eleList = collector.OfClass(typeof(Family))
  • 注意这里我们使用的OfClass方法,不要使用以下方法
//不推荐
 ElementFilter filter=new ElementCategoryFilter(BuiltInCategory.xxx);
 IEnumerable<Element> eleList = collector.WherePasses(filter).ToElements();
  • 这种方法只会获得指定BuiltInCategory下的族类型或者族实例
  • 如果我们想获得指定BuiltlnCategory下的所有族,可以使用如下方法
 public static List<Family> FilterFamilyByBuiltInCategory(Document doc,BuiltInCategory builtInCategory)
        {
            List<Family> result=new List<Family>();
            //创建收集器
            FilteredElementCollector collector = new FilteredElementCollector(doc);
            IEnumerable<Element> eleList = collector.OfClass(typeof(Family)).Where(m => (m as Family).FamilyCategory.Id == new ElementId(builtInCategory));
            foreach (var ele in eleList)
            {
            //由于可能会有空族的存在,所以这里需要将其排除掉
                if (ele.Name!="")
                {
                    Family family = ele as Family;
                    result.Add(family);
                }
              
            }
            return result;
        }

三、注意事项

需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111
1.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出BIM相关软件开发以及编程干货
2.欢迎加入BIM行业开发交流1群,获取更多开发资料 群号:711844216

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值