import bpy, sys, importlib.util spec=importlib.util.spec_from_file_location("srg", r"A:\eco\stylized_rock_generator\stylized_rock_generator.py") r=importlib.util.module_from_spec(spec); sys.modules["srg"]=r; spec.loader.exec_module(r) try: r.unregister() except Exception: pass r.register() s=bpy.context.scene.rock_gen_settings s.batch_count=5; s.subsurf_levels=3; s.use_modal=False; s.spacing=3 s.scale_min=0.75; s.scale_max=1.25; s.keep_size=True fails=[]; means={} print("Klasse | Groesse min..max (m) | Volumen min..max | Streuung") for kl in ('S','M','L','XL'): for o in list(bpy.data.objects): bpy.data.objects.remove(o,do_unlink=True) s.name_class=kl bpy.ops.object.generate_rocks_batch() vols=[]; dims=[] for o in bpy.context.scene.objects: if o.type!='MESH': continue bb=o.bound_box d=[(max(v[i] for v in bb)-min(v[i] for v in bb))*o.scale[i] for i in range(3)] dims.append(max(d)); vols.append(d[0]*d[1]*d[2]) means[kl]=sum(vols)/len(vols) print(" %-3s | %.2f .. %.2f | %.2f .. %.2f | %.2fx" % (kl, min(dims), max(dims), min(vols), max(vols), max(vols)/min(vols))) if max(vols)/min(vols) > 1.6: fails.append("streuung_%s"%kl) print("Volumen-Verhaeltnis M/S = %.1fx | L/M = %.1fx | XL/L = %.1fx" % (means['M']/means['S'], means['L']/means['M'], means['XL']/means['L'])) if not (means['S'] < means['M'] < means['L'] < means['XL']): fails.append("reihenfolge") if means['M']/means['S'] < 3: fails.append("S_zu_gross") r.unregister() print("ERGEBNIS:", "OK" if not fails else "FEHLER: "+", ".join(fails))