Loopcut into many objects at once
Bmesh script.

Script to bisect each selected mesh globally 3  units above its bounding box lower corner.
Edit height = 3 to adjust.
Test script, select any or all of the objects to bisect, in OBJECT mode and press run script.
import bpy
from bpy import context
from mathutils import Vector
import bmesh

# global coordinates
height = 3 
plane_no = (0, 0, 1)

meshes = set()
bm = bmesh.new()
for ob in context.selected_objects:
    if ob.type != 'MESH':
        continue
    me = ob.data
    if me in meshes:
        continue
    meshes.add(me)
    bm.from_mesh(me)
    mw = ob.matrix_world
    bbox = [mw @ Vector(b) for b in ob.bound_box]
    h = (bbox[1] - bbox[0])
    if h.length &gt; height:
        print(f&quot;Cutting {ob.name}&quot;)
        print(h, h.normalized(), bbox[0])
        mwi = mw.inverted()
        bbox[0].z += height
        bmesh.ops.bisect_plane(
                bm,
                geom=sum((bm.faces[:], bm.edges[:]), []),
                plane_no=plane_no,
                plane_co=mwi @ bbox[0],
                )
        bm.to_mesh(me)
        me.update()
        bm.clear()
bm.free()