import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
all_walls = collector.WhereElementIsNotElementType().ToElements()
walls = [i for i in all_walls if i.Name.Contains("STB")]
OUT = walls
Hello, while trying to solve my problem of displaying the python code (I don’t see it appearing anymore),
I saw that there was an update to 2024.1 dated July 11th
for information
I have to stay in 2023 for the moment (as I was doing a udapte of 2023, and I saw that your code did not work) to avoid the cafarnaum between our different establishments
Using 2024.0 the code ran fine for me when it errored out on with 'str' object has no attribute 'contains', as base python doesn’t have a contains method for strings, so you need to use if "STB" in i.Name instead for the filter of the list comprehension.
thats my code, i have 9 walls and 3 of them contain name “STB”
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import *
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument
collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
all_walls = collector.WhereElementIsNotElementType().ToElements()
walls = [i for i in all_walls if "STB" in i.Name]
OUT = walls
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
all_walls = collector.WhereElementIsNotElementType().ToElements()
walls = [i for i in all_walls if i.Name.count('Relevé')>0]
OUT = walls,all_walls[0].__class__
Well, you need to update your code with below updated code.
import clr
import sys
# Add the path to RevitAPI.dll and RevitAPIUI.dll if they are not in the system path
sys.path.append(r'C:\Program Files\Autodesk\Revit XXXX\AddIns\RevitAPI.dll')
sys.path.append(r'C:\Program Files\Autodesk\Revit XXXX\AddIns\RevitAPIUI.dll')
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.DB import BuiltInCategory, FilteredElementCollector
from Autodesk.Revit.DB import Wall, Element
# ... import other necessary namespaces
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument
collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
all_walls = collector.WhereElementIsNotElementType().ToElements()
walls = [i for i in all_walls if i.Name.Contains("STB")]
OUT = walls