[Dynamo]自動批量隱藏多視圖中的元素

好久沒更新了~今天簡單介紹一下如何進行多視圖批量隱藏的操作。

大家在使用revit的過程中肯定會遇到很多出圖階段,每個階段都有不同的出圖內容。

於是我們需要選擇性的進行多張視圖的隱藏或者臨時隱藏。

首先在API文檔里查找Hide相關辭彙:

這裡的操作會把列表中的元素在本視圖中設定為隱藏狀態

這個操作會把這個元素在本視圖中臨時隱藏狀態

在視圖中批量臨時隱藏

我們找到了上面的三個method,同時還可以看到這個方法屬於視圖:

這個method屬於View

所以我們的輸入格式是:view.HideElementTemporary(ElementId)

於是我們簡單演示一下隱藏尺寸標註~~

所以我們首先把數據整理出來,按照(隱藏物體List<ElementId>--視圖view)互相匹配的關係構建列表:

處理前:

處理後:

代碼塊如下:

import clrnclr.AddReference(ProtoGeometry)nfrom Autodesk.DesignScript.Geometry import *nnclr.AddReference("RevitAPIUI")nfrom Autodesk.Revit.UI import TaskDialognnclr.AddReference("RevitAPI")nimport Autodesknfrom Autodesk.Revit.DB.Events import *nfrom Autodesk.Revit.DB import *nfrom math import *nnclr.AddReference("RevitNodes")nimport Revitnclr.ImportExtensions(Revit.Elements)nclr.ImportExtensions(Revit.GeometryConversion)nnclr.AddReference("RevitServices")nimport RevitServicesnfrom RevitServices.Persistence import DocumentManagernfrom RevitServices.Transactions import TransactionManagernn#注意這裡要調用C#的List不然我們無法給method提供List<ElementId>nclr.AddReference(System)nfrom System.Collections.Generic import ListnnDOC = DocumentManager.Instance.CurrentDBDocumentnnBOPTIONS = Autodesk.Revit.DB.SpatialElementBoundaryOptions()nVER = DOC.Application.VersionName.replace("Autodesk Revit ", "")nLOC = DOC.Application.Language == Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplifiednn#引入元素需要解包nDimensions = UnwrapElement(IN[0])nViews = UnwrapElement(IN[1])nnTransactionManager.Instance.EnsureInTransaction(DOC)nnfor i in range(len(Dimensions)):ntCSlist = List[ElementId]()ntfor j in range(len(Dimensions[i])):nttCSlist.Add(Dimensions[i][j].Id)ntViews[i].HideElementsTemporary(CSlist)ntnTransactionManager.Instance.TransactionTaskDone()nnOUT = 0n

*這個腳本只能用於IronPython

以上就是Dynamo批量多視圖隱藏物體的方法。歡迎各位交流嘗試~


推薦閱讀:

中國建築師張永和在建築和教育界有著怎樣的成就及地位,使他成為 2012-2016 年普利茲克獎評委?
SketchUp支持多核心運行——一件不可能完成的任務
建築學生走向社會的核心競爭力是什麼?
▲貳▼「藝術癮」去政府大樓一探建築設計那些事兒
在建築設計院實習太清閑怎麼辦?

TAG:建筑设计 | BIM | Dynamo |