import bpy, sys, bmesh
a=sys.argv[sys.argv.index("--")+1:]
bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.import_scene.gltf(filepath=a[0])
o=[x for x in bpy.context.scene.objects if x.type=="MESH" and not x.name.startswith("Ico")][0]; mw=o.matrix_world
bm=bmesh.new(); bm.from_mesh(o.data); bm.verts.ensure_lookup_table()
seen=set(); isl=[]
for v in bm.verts:
    if v.index in seen: continue
    st=[v]; seen.add(v.index); comp=[]
    while st:
        x=st.pop(); comp.append(x.index)
        for e in x.link_edges:
            y=e.other_vert(x)
            if y.index not in seen: seen.add(y.index); st.append(y)
    isl.append(comp)
isl.sort(key=len,reverse=True)
print("ISLANDS",len(isl))
for c in isl[:25]:
    ps=[mw@o.data.vertices[i].co for i in c]
    mn=[min(p[k] for p in ps) for k in range(3)]; mx=[max(p[k] for p in ps) for k in range(3)]
    print("ISL n=%6d  x %.2f..%.2f  y %.2f..%.2f  z %.2f..%.2f"%(len(c),mn[0],mx[0],mn[1],mx[1],mn[2],mx[2]))
