autodeskrevit2016二次開發(fā)入門教程第四章圖元過濾_第1頁
autodeskrevit2016二次開發(fā)入門教程第四章圖元過濾_第2頁
autodeskrevit2016二次開發(fā)入門教程第四章圖元過濾_第3頁
autodeskrevit2016二次開發(fā)入門教程第四章圖元過濾_第4頁
autodeskrevit2016二次開發(fā)入門教程第四章圖元過濾_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Autodesk?Revit2016

二次開發(fā)入門教程

第4課時

第四章圖元過濾第一節(jié)周婧祎北京谷雨時代教育科技有限公司上海比程信息科技有限公司上節(jié)回顧元素基礎如何獲取元素元素與元素類型元素的屬性與重要方法元素參數(shù)概念與實例010304應用過濾器快速過濾器QuickFilter

本章內(nèi)容05實例練習02元素收集器FilterElementCollector元素過濾器ElementFilter慢速過濾器SlowFilter

0607邏輯過濾器LogicalFilter01元素過濾器注意:無論應用的條件和過濾器的順序是什么,Revit內(nèi)部會對過濾器重新排序來減少元素的展開。RevitAPI提供了元素過濾器,用來遍歷元素以及元素的ID.這些過濾器為各種不同的應用程序獲取元素提供了更靈活更實用的接口。元素過濾器是一個檢驗一個元素是否符合某種標準的類。它被分為三個層次:

快速過濾器(Quickfilters)只檢查記錄的元素并防止元素在內(nèi)存中展開。這種過濾器可以提高迭代的效率并減少內(nèi)存的消耗慢速過濾器(Slowfilters)先在內(nèi)存中獲取和展開元素,再進行查詢,因此在效率上會比較低。推薦的方法是慢速過濾器和快速過濾器結(jié)合起來用,這樣會減少展開元素的數(shù)量。邏輯過濾器(Logicalfilters)由兩個及以上的過濾器邏輯組成的過濾器01元素過濾器?查找、過濾、遍歷元素。?基于Document;支持特定View和元素集?支持Filter及復雜的組合Filter。?Shortcut方法,快速返回。?支持集合的合并?!uickfilters快速過濾器–

快速查找過濾器:性能好,內(nèi)存占用低。·Slowfilters慢速過濾器–

性能較差,耗時多,內(nèi)存占用多?!ogicalfilters邏輯過濾器–

多個過濾器的組合。02元素收集器用來迭代以及過濾元素的主要類是收集器,它有三種構造方式(如下圖),可根據(jù)具體情況使用任意一種。收集器的三種構造函數(shù)構造函數(shù)描述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);}擴展函數(shù)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擴展函數(shù)03應用過濾器過濾操作的步驟:1.新建FilteredElementCollector實例·varcoll=newFilteredElementCollector(_doc);2.添加過濾條件·coll.WherePasses(newElementClassFilter(typeof(Wall)));3.訪問滿足條件的對象·IList<Element>walls=wallTypeCollector1.ToElements();RevitAPI開發(fā)論壇

Revit開發(fā)幫助Revit開發(fā)討論帖

Revit開發(fā)討論中國BIM論壇

Revit開發(fā)源碼下載Autodesk,Asia,Pte,Ltd.AutodeskRevit二次開發(fā)基礎教程[M].上海市四平路1239號:同濟大學出版社,2015.1-37參考文獻賈合豐.

2016Autodesk最新開發(fā)計劃培訓課程資料賈合豐.

Revit開發(fā)進階(基本篇2)謝謝觀看!Autodesk?Revit2016

二次開發(fā)入門教程

第5課時

第四章圖元過濾第二節(jié)周婧祎北京谷雨時代教育科技有限公司上海比程信息科技有限公司上節(jié)回顧元素過濾器ElementFilter元素收集器FilterElementCollector應用過濾器010304應用過濾器快速過濾器QuickFilter

本章內(nèi)容05實例練習02元素收集器FilterElementCollector元素過濾器ElementFilter慢速過濾器SlowFilter

0607邏輯過濾器LogicalFilter04快速過濾器1)ElementCategoryFilterElementCategoryFilter是使用類別Category來查詢元素的過濾器?!ぶС諩lement及ElementType·共有900+OST_DoorOST_Column….·快捷方法:OfCategory/OfCategoryId04快速過濾器2)ElementClassFilterElementClassFilter是使用類來查詢元素的過濾器,它將會精確匹配傳入的類或者該類的子類。通用的按元素類進行查找可替代其他Filter:·Room/Area/Space/…Filter·快捷方法:OfClass

注意例外!04快速過濾器3)ElementIsElementTypeFilterElementIsElementTypeFilter是用來匹配元素類型的過濾器,可以過濾出文檔中所有的元素類型的元素或者過濾出所有非元素類型的元素?!た旖莘椒ǎ篧hereElementIsElementType WhereElementIsNotElementType04快速過濾器4)ExclusionFilterExclusionFilter是自動排除元素集的過濾器?!た旖莘椒ǎ篍xcluding04快速過濾器5)FamilySymbolFilterFamilySymbolFilter是使用傳入的族來得到其所有族類型的過濾器。04快速過濾器

常用子類:·Category·Class·CurveDriven·ElementType·OwnerView·Workset·FamilySymbol·BoundingBox·…05慢速過濾器1)ElementLevelFilterElementLevelFilter是使用關聯(lián)的標高(Level)來匹配其關聯(lián)或不關聯(lián)的元素。05慢速過濾器2)ElementParameterFilterElementParameterFilter是使用一個或者多個參數(shù)過濾規(guī)則來匹配元素的過濾器·元素參數(shù)精確匹配·FilterRule的用途·ParameterFilterRuleFactory構造各種Rule·四種參數(shù)類型!·==,!=,>=,<=,>,<,…05慢速過濾器3)FamilyInstanceFilterFamilyInstanceFilter是使用族類型來匹配對應族實例元素的過濾器。05慢速過濾器4)CurveElementFilterCurveElementFilter是匹配線型元素的過濾器。如果想要找模型線、參考線等線型元素,使用這個過濾器會比較方便。05慢速過濾器

常用子類·CurveElement·Room/Area/Space·FamilyInstance·XXXUsage·ElementIntersect·ElementParameter·…06邏輯過濾器1)LogicalOrFilterLogicalOrFilter是過濾器的邏輯或集合,可以查找匹配符合任意一個過濾器條件的元素。2)LogicalAndFilterLogicalAndFilter是過濾器的邏輯與集合,可以查找匹配符合所有過濾器條件的元素。其他更多FilterRevitAPI開發(fā)論壇

Revit開發(fā)幫助Revit開發(fā)討論帖

Revit開發(fā)討論中國BIM論壇

Revit開發(fā)源碼下載Autodesk,Asia,Pte,Ltd.AutodeskRevit二次開發(fā)基礎教程[M].上海市四平路1239號:同濟大學出版社,2015.1-37參考文獻賈合豐.

2016Autodesk最新開發(fā)計劃培訓課程資料賈合豐.

Revit開發(fā)進階(基本篇2)謝謝觀看!Autodesk?Revit2016

二次開發(fā)入門教程

第6課時

第四章圖元過濾第三節(jié)周婧祎北京谷雨時代教育科技有限公司上海比程信息科技有限公司章節(jié)回顧元素過濾器ElementFilter元素收集器FilterElementCollector如何應用過濾器快速過濾器QuickFilter慢速過濾器SlowFilter邏輯過濾器LogicalFilter010304應用過濾器快速過濾器QuickFilter

本章內(nèi)容05實例練習02元素收集器FilterElementCollector元素過濾器ElementFilter慢速過濾器SlowFilter

0607邏輯過濾器LogicalFilter實例練習1:元素過濾ElementFilter(1)在范例圖中計算過濾出所有型號為1200*1500mm,且標記為小于5的窗數(shù)量。識別并計算門窗總和?!ilteredElementCollector的使用·QuickFilter及SlowFilter·ElementParameterFilter·LogicalFilter實例練習2:元素過濾ElementFilter(2)·

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論