今天看到有技术交流群里面有人有要把在Dynamo中过滤出来的图元在Revit中处于选中的状态的需求。正好我之前写过这样的脚本能实现这一功能。
之前写这个功能是因为项目上要把项目中所有的构件用项目上的插件添加参数属性,但却要先把所有类型的构件先选中之后才能添加构件库一张表里的属性参数,也就是要重复使用很多次的“选择全部实例”这个按钮。
在工作中其实也有不少这样的应用场景,比如要对多个类型下的所有实例进行移动,镜像时,用Revit就较为麻烦。而Dynamo有丰富多样的构件搜集和过滤的手段来满足个性化的需求。
用到的是Selection类下的SetElementIds()方法:
完整脚本:
# 选择图元
# By I am the one
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import Selection
clr.AddReference('System')
from System.Collections.Generic import List
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
if isinstance(IN[0],list):
eles = IN[0]
else:
eles = [IN[0]]
Ids = List[ElementId]()
for e in eles:
Ids.Add(ElementId(e.Id))
uidoc.Selection.SetElementIds(Ids)
OUT = "elements are selected successfully!"
演示效果:
欢迎阅读,分享,交流,批评指正。
如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。
评论0