12 lines
955 B
Python
12 lines
955 B
Python
import bpy,json
|
|
from mathutils import Vector
|
|
scene=bpy.context.scene;scene.frame_set(1);dg=bpy.context.evaluated_depsgraph_get()
|
|
rows=[]
|
|
for inst in dg.object_instances:
|
|
o=inst.object;src=o.original
|
|
if o.type not in {'MESH','CURVE'} or src.hide_render:continue
|
|
cols=[c.name for c in src.users_collection]
|
|
if any(c.hide_render for c in src.users_collection) or any(('STUDIO' in c or 'BOOLEAN' in c or 'DATUM' in c) for c in cols):continue
|
|
rows.append({'name':src.name,'collections':cols,'verts':len(o.data.vertices) if o.type=='MESH' else 0,'bbox':[[round(x,4) for x in (inst.matrix_world@Vector(v))] for v in o.bound_box]})
|
|
print(json.dumps({'count':len(rows),'vertices':sum(x['verts'] for x in rows),'bounds':[[min(v['bbox'][j][k] for v in rows for j in range(8)) for k in range(3)],[max(v['bbox'][j][k] for v in rows for j in range(8)) for k in range(3)]],'sample':[{k:v for k,v in x.items() if k!='bbox'} for x in rows[:15]]},ensure_ascii=False))
|