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
我是 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