Hello大家好!我是九哥~ 最近經常有小伙伴咨詢關于如何用Dynamo創建尺寸標注的問題,看來大家都已經到了BIM出圖的階段,這是好事兒,那么,最近就抽時間寫一些關于Revit注釋的教程,通過Dynamo來解決一些重復工作。
今天要分享的,是通過Dynamo快速創建立面標高標注。
最簡單的方式,就是使用Dynamo自帶的節點,簡單搜下Dimension就能找到Dimension.ByElements節點,可以通過視圖、圖元、定位線來創建尺寸標注。不過只能使用默認的尺寸標注樣式。 
這里差的似乎只是定位線,這里我提供一種思路,來創建定位線。通過獲取視圖的剪裁框,來獲取定位線。
在API手冊中,View下面,很容易就能找到GetCropRegionShapeManager方法,再進一步,就可以找到GetCropShape方法。 

這樣就可以獲取到剪裁框的線,代碼如下:
import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes") import Revit
clr.ImportExtensions(Revit.GeometryConversion)
if isinstance(IN[0], list): view = UnwrapElement(IN[0]) toggle = 0 else: view = [UnwrapElement(IN[0])] toggle = 1 listout = [] for x in view: region = x.GetCropRegionShapeManager().GetCropShape() if len(region) > 0: lines = [y.ToProtoType() for y in region[0]] listout.append(lines) else: listout.append([])
if toggle == 0: OUT = listout else: OUT = lines
然后我們是在立面中,可以通過判斷曲線的方向,來篩選所需直線,如下圖: 
完整截圖如下:

如果想直接設置標注類型,也可以使用GeniusLoci包中的Dimension ByReferences節點,創建尺寸標注,支持設置標注類型,但是這里需要輸入的是圖元參照,即Reference。 然后可以在API手冊中搜下Reference,很容易就能找到Reference構造器,可以獲取圖元的參照。

簡單寫個循環,即可獲取標高的參照Reference。
import clr clr.AddReference('RevitAPI') import Autodesk from Autodesk.Revit.DB import *
clr.AddReference('RevitNodes') import Revit clr.ImportExtensions(Revit.GeometryConversion) clr.ImportExtensions(Revit.Elements) from Revit.Elements import *
clr.AddReference('RevitServices') import RevitServices from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
items = IN[0]
out = [] for e in items: out.append(Reference((UnwrapElement(e)))) OUT = out
然后通過All Elements of Type獲取所有的標注類型Dimension Types。 最后附上完整程序截圖,如下: 
|