Isolate Curtain Panel temporary

Is it possible to isolate a Curtain Panel via Revit api?

I found an example code how to isolate an element in Revit, with the use of view.IsolateElementsTemporary method:

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.

According to this Autodesk Manager answer, the reason for this: is a bug from 2015:

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.

There is a node in Rhythm for this, so you can just utilize that. CurtainPanels.IsolateInView.

If you’re looking for a code based solution, you can review the source code (in C# so you’ll have to convert to Python) here: RhythmForDynamo/src/RhythmRevit/Revit/Elements/CurtainPanel.cs at 9c7caa2023c26452ef85a5ff96e5335e6b08fe18 · johnpierson/RhythmForDynamo · GitHub

2 Likes

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’?

1 Like

I can’t reproduce. Please post a simplified model that reproduces the issue so we can troubleshoot.

2 Likes

Thank you for the reply @jacob.small .
I haven’t tried with ‘isolate category’, but manually using ‘isolate element’ works perfectly in Revit.

I would say to try to feed in actual family instances of curtain panels into the Rhythm node and it should help.

From what I recall, the isolating of curtain panels must be a two pronged approach. Isolated the Category > Then Isolate the elements

2 Likes

Thank you @john_pierson. How do I isolate the family instances which are applied to curtain panels?

If I am not mistaken, that should be what Rhythm node does (Jacob posted a link above).

Rhythm node is working for me.
20250128-isolateCurtainPanels

As mentioned before, please share a sample file so others may reproduce what you are experiencing.

1 Like

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.

1 Like

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):

BuiltInCategory.OST_CurtainWallPanels
BuiltInCategory.OST_Walls
BuiltInCategory.OST_Doors
BuiltInCategory.OST_Windows
BuiltInCategory.OST_StructuralFraming
BuiltInCategory.OST_GenericModel
BuiltInCategory.OST_Assemblies

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.

1 Like

Hi @aaron_rumple . The FamilyInstance is shared.

I apologize again for not sharing the .rvt file.

Here are screenshots:

  • The Rhythm node works perfectly, when I try to isolate just a regular (“System Panel”) Curtain Panel:

  • However, when I replace the “System Panel” with some FamilyInstance, then the Rhythm node, isolates everything and shows just an empty view:

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.

1 Like

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.

1 Like

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?

After running the Rhythm code, open up the visibility graphics control and check what is in the list of model categories.

1 Like

Thank you very much @jacob.small .
Removing mullions, means to delete the horizontal Curtain Wall grid? Or did I misunderstand?

No - leave the grids. Open the type parameters of the curtain wall type and change the families in there.

Come to think of it you can likely copy-paste one curtain wall to a new file created from a blank template (select <none> for the template).

1 Like