I did some more work on this idea and I seem to have worked it out.
This is what I ended up with:
The custom node was added simply to force correct order of operations and it looks like this:
This works. It takes elements selected in Revit and changes the Level assignment without moving them in the model. Essentially this changes the element level and adjusts the level offset value in order to retain the element position in 3d space.
(Though, this version might only work for level based elements. Did not test this with workplane based elements)
The only inconvenience is that I have to manually switch input boolean to force a selection update. Every time I change the selection in Revit, I have to switch the boolean in order for Dynamo to use the latest selection.
Maybe someone knows another way to get already selected items in Revit? And/or automatically update the selection each time the graph is run?
LevelChanger.dyn (21.1 KB)