elements = UnwrapElement(IN[0]) # list of Curtain Panels to isolate
idlist = List[ElementId]()
for e in elements:
idlist.Add(e.Id)
doc = DocumentManager.Instance.CurrentDBDocument
view = doc.ActiveView
t = Transaction(doc)
t.Start('isolate')
view.IsolateElementsTemporary(idlist)
t.Commit()
However, the code does not work with Curtain Panels - it isolates everything, and just shows an empty view. I tested it on Revit 2022 and latest Revit 2025.
I suspect this may be a bug in Isolate Elements functionality (the underlying wall category might need to remain “on” to allow the panels to be visible and Isolate Elements may not be doing that).
The same Autodesk Manager provides a possible solution, but I am not able to replicate it via revit api:
I found that choosing the panels, selecting “Isolate Category” and then “Isolate Elements” results in just the selected elements being visible, which is what you want. You should be able to do something similar with the API.
Has anyone ever solved this problem?
Thank you for the help in advance.
Hi @jacob.small ,
Thank you very much for the help.
I can’t make it work with Rhythm.
It isolates an “empty” Curtain Panel successfully (Family: “System Panel”).
But if I change the Curtain Panel to any other Type - again I get an empty view (all elements are isolated).
I tried adding ‘BuiltInCategory.OST_GenericModel’ category as well to ‘IsolateCategoriesTemporary’ - still I get an empty view.
I have a feeling this is a Revit issue. What happens if you just manually try to isolate the curtain panel in Revit > select the CP and use ‘isolate element’ ? and also try ‘isolate category’?
Curtain panels are nested inside a wall. You hide the wall category, and the panels go with it. So, you need to make sure walls as a category stay on. So, if you are isolating by element, you also need to make sure it is that wall and those panels that stay on.
Further - custom wall panels may be of several types, they could be system panels, other custom walls, empty, walls, doors nested or other nested elements.
Your logic will need to be more robust and deeper to get the items you really want.
If you want to isolate panels, you will have to gather the walls, find the curtain walls. Isolate those walls. Then hide the mullions.
Thank you very much @aaron_rumple .
I am actually trying to isolate a single FamilyInstance, which is applied to a Curtain Panel. So instead of generic “System Panel” type, applied to a newly created Curtain Panel, I applied a specific FamilyInstance (for example called: “Facade 1”).
I tried to take your advice, and first isolate the following categories (with activeView.IsolateCategoriesTemporary method):
The thing I noticed is that I always get an empty isolated view, when my FamilyInstance applied to Curtain Panel is nested.
This is what @john_pierson showed in his last picture - if the FamilyInstance applied to Curtain Panel is not nested - then the Rhythm node works without issues.
So now I am confused. It is as if, I need some sort of BuiltInCategory.OST_FamilyInstance, which would represent those nested families. But such BultinCategory does not exist.
Thank you for the testing @john_pierson. I am using my company’s .rvt file. I am not allowed to share it.
Maybe I can replicate it, by making a very small dummy .rvt file.
Is the FamilyInstance shared? If it is nested inside a curtain panel family and not shared - it becomes “dumb” and not selectable or schedulable. Only the geometry is visible.
I don’t know if that is your issue or not. A sample of the element would be handy. Just pull that one item out in an otherwise blank project file.
A wild guess here. Are there subcategories applied to the elements in your family? Rhythm is isolating the parent category. It might be hiding subcategories(?)
Big guess. But you can check that by applying the temporary properties and then using the visibility graphics to see what is turned on and off.
Close the file, open it detached, create a new 3D view and make it active, delete everything other than one curtain wall with an instance of the curtain panel which won’t isolate, change all other panels to a basic system panel, remove all millions from from the curtain wall type, delete all views but the active one, purge unused a few time, and save as a new file.
The only model content persisting would be a single curtain wall with no mullions, mostly system panels and a single instance which won’t isolate. If they won’t let you share that… I guess you’ll have to build a new file.
Hi @aaron_rumple ,
Thank you once again for the patience and help.
I don’t know how to check if there are subcategories applied.
I am at the same time trying the Rhythm and a Python node, by slightly adding more isolating categories. Rhythm isolates only .OST_CurtainWallPanels. I also added Walls, GenericModel, StructuralFraming, Doors, Windows, Assemblies.
How can I apply the temporary properties? Does that mean isolating one element by one element, in that Curtain Panel Family Instance?