【问题标题】:Revit API - Rename duct systems instances onlyRevit API - 仅重命名管道系统实例
【发布时间】:2017-08-18 13:11:45
【问题描述】:

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

结果见附图。

【问题讨论】:

    标签: vb.net revit-api


    【解决方案1】:

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

    我不了解 VB,所以我不完全确定语法,但我猜你应该只需要更改这一行

    FinalSelection = otherelementcollector.wherepasses(MyOtherFilter).ToElements
    

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

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 2022-12-18
      • 2012-11-28
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多