Scaffold Vite + TypeScript + Three.js (scène vide : sol + boîte, marqueur de build), store et encodage de l'état dans l'URL (5 tests), lint de frontières entre modules, pipeline d'extraction Rhino (graine du 26/09) et première géométrie v0, deploy.sh statique (releases + lien symbolique + smoke), AGENTS.md, RUNBOOK, licences MIT + CC BY-SA 4.0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
13 lines
627 B
Python
13 lines
627 B
Python
import sys, rhino3dm, collections
|
|
m = rhino3dm.File3dm.Read(sys.argv[1])
|
|
layers = {i: l.Name for i, l in enumerate(m.Layers)}
|
|
cnt = collections.Counter(); closed = collections.Counter(); blocks=collections.Counter()
|
|
for o in m.Objects:
|
|
li = o.Attributes.LayerIndex; g = o.Geometry
|
|
cnt[li]+=1
|
|
if isinstance(g, rhino3dm.Curve) and g.IsClosed: closed[li]+=1
|
|
if isinstance(g, rhino3dm.InstanceReference): blocks[li]+=1
|
|
for li,n in cnt.most_common():
|
|
print(f"{n:6d} obj | {closed[li]:5d} fermés | {blocks[li]:5d} blocs | {layers.get(li)}")
|
|
print("blocs définis:", [d.Name for d in m.InstanceDefinitions][:30])
|