[Dynamo]自動批量隱藏多視圖中的元素
好久沒更新了~今天簡單介紹一下如何進行多視圖批量隱藏的操作。
大家在使用revit的過程中肯定會遇到很多出圖階段,每個階段都有不同的出圖內容。
於是我們需要選擇性的進行多張視圖的隱藏或者臨時隱藏。
首先在API文檔里查找Hide相關辭彙:
我們找到了上面的三個method,同時還可以看到這個方法屬於視圖:
所以我們的輸入格式是: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支持多核心運行——一件不可能完成的任務
※建築學生走向社會的核心競爭力是什麼?
※▲貳▼「藝術癮」去政府大樓一探建築設計那些事兒
※在建築設計院實習太清閑怎麼辦?