autodeskrevit2016二次开发入门教程第四章图元过滤_第1页
autodeskrevit2016二次开发入门教程第四章图元过滤_第2页
autodeskrevit2016二次开发入门教程第四章图元过滤_第3页
autodeskrevit2016二次开发入门教程第四章图元过滤_第4页
autodeskrevit2016二次开发入门教程第四章图元过滤_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Autodesk®Revit2016

二次开发入门教程

第4课时

第四章图元过滤第一节周婧祎北京谷雨时代教育科技有限公司上海比程信息科技有限公司上节回顾元素基础如何获取元素元素与元素类型元素的属性与重要方法元素参数概念与实例010304应用过滤器快速过滤器QuickFilter

本章内容05实例练习02元素收集器FilterElementCollector元素过滤器ElementFilter慢速过滤器SlowFilter

0607逻辑过滤器LogicalFilter01元素过滤器注意:无论应用的条件和过滤器的顺序是什么,Revit内部会对过滤器重新排序来减少元素的展开。RevitAPI提供了元素过滤器,用来遍历元素以及元素的ID.这些过滤器为各种不同的应用程序获取元素提供了更灵活更实用的接口。元素过滤器是一个检验一个元素是否符合某种标准的类。它被分为三个层次:

快速过滤器(Quickfilters)只检查记录的元素并防止元素在内存中展开。这种过滤器可以提高迭代的效率并减少内存的消耗慢速过滤器(Slowfilters)先在内存中获取和展开元素,再进行查询,因此在效率上会比较低。推荐的方法是慢速过滤器和快速过滤器结合起来用,这样会减少展开元素的数量。逻辑过滤器(Logicalfilters)由两个及以上的过滤器逻辑组成的过滤器01元素过滤器•查找、过滤、遍历元素。•基于Document;支持特定View和元素集•支持Filter及复杂的组合Filter。•Shortcut方法,快速返回。•支持集合的合并。·Quickfilters快速过滤器–

快速查找过滤器:性能好,内存占用低。·Slowfilters慢速过滤器–

性能较差,耗时多,内存占用多。·Logicalfilters逻辑过滤器–

多个过滤器的组合。02元素收集器用来迭代以及过滤元素的主要类是收集器,它有三种构造方式(如下图),可根据具体情况使用任意一种。收集器的三种构造函数构造函数描述FilteredElementCollector(Documentdocument)从一个文档构造,迭代会从文档所有的元素进行FilteredElementCollector(Documentdocument,Icollection<ElementId>elementIds)从一个文档和ElementID集合构造,迭代会从这传进来的集合中进行FilteredElementCollector(Documentdocument,ElementIdviewId)从一个文档和一个视图构造,迭代会从所有在传进来的视图中所见的元素中进行02元素收集器public

class

FilteredElementCollector

:

IEnumerable<Element>LINQpublic

static

class

Enumerable

{

public

static

IEnumerable<TSource>

Where<TSource>(this

IEnumerable<TSource>

source,

Func<TSource,

bool>

predicate);

public

static

IEnumerable<TSource>

Where<TSource>(this

IEnumerable<TSource>

source,

Func<TSource,

int,

bool>

predicate);}扩展函数FilteredElementCollector

collector

=

new

FilteredElementCollector(RevitDoc);ElementClassFilter

classFilter

=

new

ElementClassFilter(typeof(Wall));collector

=

collector.WherePasses(classFilter);var

basicWalls1

=

from

element

in

collector

let

wall

=

element

as

Wall

where

wall.WallType.Name

==

"基本墙"

select

wall;var

basicWalls2

=

collector.Cast<Wall>().Where(wall

=>

wall.WallType.Name

==

"基本墙");

LINQ扩展函数03应用过滤器过滤操作的步骤:1.新建FilteredElementCollector实例·varcoll=newFilteredElementCollector(_doc);2.添加过滤条件·coll.WherePasses(newElementClassFilter(typeof(Wall)));3.访问满足条件的对象·IList<Element>walls=wallTypeCollector1.ToElements();RevitAPI开发论坛

Revit开发帮助Revit开发讨论帖

Revit开发讨论中国BIM论坛

Revit开发源码下载Autodesk,Asia,Pte,Ltd.AutodeskRevit二次开发基础教程[M].上海市四平路1239号:同济大学出版社,2015.1-37参考文献贾合丰.

2016Autodesk最新开发计划培训课程资料贾合丰.

Revit开发进阶(基本篇2)谢谢观看!Autodesk®Revit2016

二次开发入门教程

第5课时

第四章图元过滤第二节周婧祎北京谷雨时代教育科技有限公司上海比程信息科技有限公司上节回顾元素过滤器ElementFilter元素收集器FilterElementCollector应用过滤器010304应用过滤器快速过滤器QuickFilter

本章内容05实例练习02元素收集器FilterElementCollector元素过滤器ElementFilter慢速过滤器SlowFilter

0607逻辑过滤器LogicalFilter04快速过滤器1)ElementCategoryFilterElementCategoryFilter是使用类别Category来查询元素的过滤器。·支持Element及ElementType·共有900+OST_DoorOST_Column….·快捷方法:OfCategory/OfCategoryId04快速过滤器2)ElementClassFilterElementClassFilter是使用类来查询元素的过滤器,它将会精确匹配传入的类或者该类的子类。通用的按元素类进行查找可替代其他Filter:·Room/Area/Space/…Filter·快捷方法:OfClass

注意例外!04快速过滤器3)ElementIsElementTypeFilterElementIsElementTypeFilter是用来匹配元素类型的过滤器,可以过滤出文档中所有的元素类型的元素或者过滤出所有非元素类型的元素。·快捷方法:WhereElementIsElementType WhereElementIsNotElementType04快速过滤器4)ExclusionFilterExclusionFilter是自动排除元素集的过滤器。·快捷方法:Excluding04快速过滤器5)FamilySymbolFilterFamilySymbolFilter是使用传入的族来得到其所有族类型的过滤器。04快速过滤器

常用子类:·Category·Class·CurveDriven·ElementType·OwnerView·Workset·FamilySymbol·BoundingBox·…05慢速过滤器1)ElementLevelFilterElementLevelFilter是使用关联的标高(Level)来匹配其关联或不关联的元素。05慢速过滤器2)ElementParameterFilterElementParameterFilter是使用一个或者多个参数过滤规则来匹配元素的过滤器·元素参数精确匹配·FilterRule的用途·ParameterFilterRuleFactory构造各种Rule·四种参数类型!·==,!=,>=,<=,>,<,…05慢速过滤器3)FamilyInstanceFilterFamilyInstanceFilter是使用族类型来匹配对应族实例元素的过滤器。05慢速过滤器4)CurveElementFilterCurveElementFilter是匹配线型元素的过滤器。如果想要找模型线、参考线等线型元素,使用这个过滤器会比较方便。05慢速过滤器

常用子类·CurveElement·Room/Area/Space·FamilyInstance·XXXUsage·ElementIntersect·ElementParameter·…06逻辑过滤器1)LogicalOrFilterLogicalOrFilter是过滤器的逻辑或集合,可以查找匹配符合任意一个过滤器条件的元素。2)LogicalAndFilterLogicalAndFilter是过滤器的逻辑与集合,可以查找匹配符合所有过滤器条件的元素。其他更多FilterRevitAPI开发论坛

Revit开发帮助Revit开发讨论帖

Revit开发讨论中国BIM论坛

Revit开发源码下载Autodesk,Asia,Pte,Ltd.AutodeskRevit二次开发基础教程[M].上海市四平路1239号:同济大学出版社,2015.1-37参考文献贾合丰.

2016Autodesk最新开发计划培训课程资料贾合丰.

Revit开发进阶(基本篇2)谢谢观看!Autodesk®Revit2016

二次开发入门教程

第6课时

第四章图元过滤第三节周婧祎北京谷雨时代教育科技有限公司上海比程信息科技有限公司章节回顾元素过滤器ElementFilter元素收集器FilterElementCollector如何应用过滤器快速过滤器QuickFilter慢速过滤器SlowFilter逻辑过滤器LogicalFilter010304应用过滤器快速过滤器QuickFilter

本章内容05实例练习02元素收集器FilterElementCollector元素过滤器ElementFilter慢速过滤器SlowFilter

0607逻辑过滤器LogicalFilter实例练习1:元素过滤ElementFilter(1)在范例图中计算过滤出所有型号为1200*1500mm,且标记为小于5的窗数量。识别并计算门窗总和。·FilteredElementCollector的使用·QuickFilter及SlowFilter·ElementParameterFilter·LogicalFilter实例练习2:元素过滤ElementFilter(2)·

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论