How to get the streaming level of an actor in Blutility in editor?

I want to write an editor Blutility, that takes a selection of actors (that may live in different loaded streaming levels) and creates companion objects, which should be moved to the same streaming level.

Unfortunately, I can’t figure out how to get the “Dest Streaming Level” property for the “Move Actors to Level” blueprint node, out of the actor.
When I select the actor in the world browser, I see the property I want in the “Actor” properties rollout:

307002-actor-streaming-level-name.png

But this isn’t actually a property on the actor, it’s some kind of derived value.

So, given a “sibling” actor in a Blutility blueprint, how do I get the appropriate value to put into the “Dest Streaming Level” slot of the “Move Actors to Level” node, to put them on the same level?
I have a C++ utility library, where I can add helpers if needed. For example, I can call GetLevel() on the actor through a utility, but that doesn’t actually help, as that seems to return the persistent level in all cases.

… crickets …

This code will output something similar to /Game/environments/envName/Levels/envName_v001/subLevels/LSL_envName_V001.LSL_envName_V001:PersistentLevel.SphereReflectionCapture_1

To move actors to a level, you just want the LSL_envName_V001 bit.

Thanks! Although that gives me a string, and the Move Actors to Level node wants a Level Streming Object reference.
I imagine I use a Get Streaming Level node with the LSL_envName_V001 bit as the “Package Name”?
Also, what’s the difference between a “package” and a “map” and a “level” anyway?

Yep, it looks something like this:

An alternative in C++ is to look into UWorld::GetLevels(). It is far better in terms of efficiency. I just saw that you were working with C++ as well. I am trying to do something similar right now, but need to add and remove sublevels from a world in editor mode. That is twisting the mind a bit