Filter elements based on location

Hi all,

I want to filter beams or any other elements based on their location like exterior beams/Outerbeams and internal beams/interior beams.

Is there any way to differentiate the beams based on location ? please find the snip below for your reference

Thanks in advance.

Assuming those beams have floors above them, maybe you could take the top of beam at the centre of its line, then clash it with the floor geometry either side. If you get two hits, then you know it’s an internal beam. If you only get one, then it’s likely external.

You’d need to take into account some complex aspects such as shaft openings and corbels, but on average this would be the approach I’d take in first instance, then capture edge cases from there.

See a sample here:

Beams r21.rvt (1.8 MB)
script for beam edges.dyn (40.3 KB)


Let me try and will revert you back

Assuming you massing in the model, including one at the roof level, you can find the coordinate system at the midpoint of each beam’s location, generate a pair of points at -1 and 1 of the X axis for each coordinate system, and test to see if that point is inside the building’s mass.


One alternative is to manually designate the perimeter elements as such using an unused Parameter, then you can grab all beams and pluck the “exterior” beams out into they’re own list.

Alternatively^2, you can draw some Zones or Area’s or Scope Box’s in your model, then you can grab all elements who’s’ centroids reside in each Zone/Area/Scope Box (that way, when elements are overlapping, you can still be consistent and only process each element once.) I’ve had very good luck using this method, the only thing is that usually you’d have to run the script once for each Zone/Area/ScopeBox that you are targeting.

1 Like

@t.large I’ll definitely try this and will revert you back

1 Like