Revit API - 仅重命名风管系统实例

Revit API - Rename duct systems instances only

我是 Revit 新手 API,目前正在为这段代码苦苦挣扎。

我想要做的是获取项目中的所有管道系统实例并重命名它们(我计划在未来使用更复杂的算法然后简单地在当前的末尾添加一个“x”姓名...)。但是,此代码不仅重命名了管道系统的所有实例,还重命名了管道系统类型,我不知道如何 select 仅重命名管道系统实例。

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

结果见附图。

您需要从 FilteredElementCollector 中过滤掉元素类型。 这可以通过 WhereElementIsNotElementType 方法完成。

我不知道 VB 所以我不太确定语法,但我猜你应该只需要更改这一行

FinalSelection = otherelementcollector.wherepasses(MyOtherFilter).ToElements

FinalSelection = otherelementcollector.wherepasses(MyOtherFilter).WhereElementIsNotElementType().ToElements