我是Revit API的新手,目前正在努力解决这段代码。
我要做的是在项目中获取管道系统的所有实例并重命名它们(我计划将来使用更复杂的算法,然后在当前名称的末尾添加“x”。 ..)。但是,此代码不仅重命名管道系统的所有实例,还重命名管道系统类型,我无法确定如何仅选择管道系统的实例。
Public Sub RenameSystems()
Dim MyUIDoc As Autodesk.Revit.ui.uidocument
Dim MyDoc As Autodesk.Revit.db.document
Dim CategoryToFilter As Autodesk.Revit.DB.BuiltInCategory
Dim OtherElementCollector As Autodesk.revit.DB.filteredelementcollector
Dim FinalSelection As System.collections.generic.icollection(Of Autodesk.Revit.DB.element)
Dim currentelement As Autodesk.Revit.DB.element
CategoryToFilter = Autodesk.revit.db.builtincategory.OST_DuctSystem
Dim MyOtherFilter As New Autodesk.Revit.db.ElementCategoryFilter(CategoryToFilter)
MyUIDoc = Me.ActiveUIDocument
MyDoc = Me.activeuidocument.document
OtherElementCollector = New Autodesk.revit.DB.filteredelementcollector(MyDoc)
FinalSelection = otherelementcollector.wherepasses(MyOtherFilter).ToElements
Using transaction As New Transaction(MyDoc,"Transaction1")
transaction.start
For Each currentelement In FinalSelection
currentelement.Name = currentelement.Name & "x"
Next
Transaction.commit
End using
End Sub
查看附图中的结果。
答案 0 :(得分:1)
您需要从FilteredElementCollector中过滤掉元素类型。 这可以使用WhereElementIsNotElementType方法完成。
我不知道VB,所以我不完全确定语法,但我猜你应该只需要改变这一行
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
到
FinalSelection = otherelementcollector.wherepasses(MyOtherFilter).ToElements