Hello大家好!我是九哥~ 最近经常有小伙伴咨询关于如何用Dynamo创建尺寸标注的问题,看来大家都已经到了BIM出图的阶段,这是好事儿,那么,最近就抽时间写一些关于Revit注释的教程,通过Dynamo来解决一些重复工作。 今天要分享的,是通过Dynamo快速创建立面标高标注。
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。
最后附上完整程序截图,如下:
好了,今天的分享就到这里了,小伙伴们快去尝试吧~
如果你有好的想法和建议,欢迎分享哦~