编程获取Revit视图中的所有实例对象数量
2012-06-20 10:36
791 查看
转载请复制以下信息:
原文链接: /article/1765006.html
作者: 叶雄进, Autodesk ADN
问题:
现在需要获取视图中的所有实例对象,包括系统族的实例与用户自建族的实例。使用OfClass(typeof(FamilyInstance))过滤方法比较容易获取用户自建族的实例,但是视图中的系统族实例,不知道如何一起获取出来,请指教。
答:
是的,通过FilteredElementCollector.OfClass(typeof((FamilyInstance)) 只能获取标准族实例,也就是你说的自建族实例。
但是系统族实例并不是从FamilyInstance类派生的,而是从HostObject类派生。
所以你可以使用逻辑Or过滤器LogicOrFilter,把两个类过滤器(ElementClassFilter)合并起来实现。
下面是完整实现代码。在对话框中显示所有实例对象的数量。
上面的代码获得了实例数量,当然你可以对其中的每一个对象进行遍历做你希望的操作。
原文链接: /article/1765006.html
作者: 叶雄进, 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 ; } }
上面的代码获得了实例数量,当然你可以对其中的每一个对象进行遍历做你希望的操作。
相关文章推荐
- 【Python】[面性对象编程] 获取对象信息,实例属性和类属性
- js利用for in循环获取 一个对象的所有属性以及值的实例
- 实例演示oracle数据块状态视图v$bh的用法一 获取oracle对象所占用的数据块
- 如何编程创建Revit里面的视图过滤器对象
- Shell(Bash)编程实例之获取某个文件夹下的所有文件名(含文件夹)
- Shell(Bash)编程实例之获取某个文件夹下的所有文件名(含文件夹)
- Revit api 获取文档内所有对象根列表
- 获取一个视图中所有可见的对象
- Shell(Bash)编程实例之获取某个文件夹下的所有文件名(含文件夹)
- 编程获取在协同共享模型中获得Revit对象的所有者
- Shell(Bash)编程实例之获取某个文件夹下的所有文件名(含文件夹)
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- Cocoa 编程之表格视图实例
- (104)反射:获取Class的对象、构造函数、字段、方法。反射实例练习
- Java动态获取某个接口下所有的实现类对象集合
- 【Unity3D5.6版本使用(1)】自定义编辑器获取场景所有对象Tag生成Json
- Android编程获取网络时间实例分析
- java中借助Spring获取所有带有指定注解的接口、类、对象-续集
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?