编程获取Revit视图中的所有实例对象数量
来源:互联网 发布:厦门中科瑞 中文域名 编辑:程序博客网 时间:2024/06/12 19:26
转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/7678923
作者: 叶雄进, Autodesk ADN
问题:
现在需要获取视图中的所有实例对象,包括系统族的实例与用户自建族的实例。使用OfClass(typeof(FamilyInstance))过滤方法比较容易获取用户自建族的实例,但是视图中的系统族实例,不知道如何一起获取出来,请指教。
答:
是的,通过FilteredElementCollector.OfClass(typeof((FamilyInstance)) 只能获取标准族实例,也就是你说的自建族实例。
但是系统族实例并不是从FamilyInstance类派生的,而是从HostObject类派生。
所以你可以使用逻辑Or过滤器LogicOrFilter,把两个类过滤器(ElementClassFilter)合并起来实现。
下面是完整实现代码。在对话框中显示所有实例对象的数量。
using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;using Autodesk.Revit .DB;using Autodesk.Revit.UI;using Autodesk.Revit .ApplicationServices;using Autodesk.Revit.Attributes ; [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]public class RevitCommand : IExternalCommand{ public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { UIApplication app = commandData.Application; Document doc = app.ActiveUIDocument.Document; ElementClassFilter instanceFitler = new ElementClassFilter(typeof(FamilyInstance)); ElementClassFilter hostFilter = new ElementClassFilter(typeof(HostObject)); LogicalOrFilter andFilter = new LogicalOrFilter(instanceFitler, hostFilter); FilteredElementCollector collector = new FilteredElementCollector(doc); collector.WherePasses(andFilter); TaskDialog.Show("numbers", collector.ToElementIds().Count.ToString()); return Result.Succeeded ; }}
上面的代码获得了实例数量,当然你可以对其中的每一个对象进行遍历做你希望的操作。
- 编程获取Revit视图中的所有实例对象数量
- Revit二次开发--获取门窗数量
- 如何编程创建Revit里面的视图过滤器对象
- Revit api 获取文档内所有对象根列表
- revit获取当前模型中板的数量
- Revit基础之获取元素所有GeometryObject.
- Revit二次开发入门——获取模型中门窗数量
- 编程获取在协同共享模型中获得Revit对象的所有者
- 获取一个视图中所有可见的对象
- 如何获取Revit工作集中的对象?
- js 获取一个对象中的所有属性
- 获取当前数据库中的所有表和视图
- Revit中如何编程旋转一个对象
- Revit二次开发--获取视图可见性中过滤器颜色
- 如何编程隐藏Revit 中的组Group?
- 编程在3D视图中添加标记(Revit 2013)
- Revit中如何编程实现窗口缩放视图
- 获取Revit实体材质所有信息包括贴图路径等
- Using Hadoop Distributed Cache
- 腾讯再次投资国外著名游戏开发商 入股Epic布局长远
- memcached参数中文解释
- Win XP与Win 2003系统有密码自动登录
- X64 和 X86有什么区别
- 编程获取Revit视图中的所有实例对象数量
- Ubuntu 12.04 LTS install Oracle 11g
- ios开发笔记:如何在iphone/ipad应用程序添加iAd
- Semaphore 使用
- hdoj 1004 Let the Balloon Rise(stl)
- win XP系统显示或隐藏快捷方式小箭头
- 共享内存和消息队列,FIFO,管道传递消息的区别
- 返回末次出现c的位置的前面字符串
- 动态图片展示