Check the Reference Level of your ducts and pipes - Are they on Level 3?
Yea its on level 3 and i have pipe and duct on lvl 3 also
What do you get from this Python code when you input a Level
import clr
from System.Collections.Generic import List
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
doc = DocumentManager.Instance.CurrentDBDocument
level = UnwrapElement(IN[0])
elf = ElementLevelFilter(level.Id)
cats = List[BuiltInCategory]([BuiltInCategory.OST_DuctCurves, BuiltInCategory.OST_PipeCurves])
emcf = ElementMulticategoryFilter(cats)
OUT = FilteredElementCollector(doc).WherePasses(elf).WherePasses(emcf).ToElements()
Filter or group the elements by category and then isolate them in the model. That should let you identify what is showing up in that list and where it’s coming from.
tried same in only duct model bt it select only fitting not duct or pipe
I think I misunderstood your initial problem. Is the issue that you’re only getting fittings and none of the MEPCurve
elements like Duct or Pipe? There are multiple parameters and properties that determine an element’s level and they are not all treated equally. Fittings have a Level
parameter while MEPCurve
elements have Reference Level
.
@Mike.Buttery’s code should work. It filters the elements based on the LevelId
regardless of the parameter or method used. The difference you’re seeing with those two nodes is the parameters/properties that are being checked for Level. All Elements at Level+
includes additional parameters. In fact, if you edit the custom node and the python code inside it, you can see all the parameters it’s checking for a level.