"""Generazione di una pagina HTML per ruotare il modello nel browser. La pagina e' autonoma: mesh, stile e codice sono dentro il file. Nessuna libreria esterna, nessuna connessione. Si apre con un doppio clic, anche da una cartella di rete, e funziona su qualunque browser recente. Il disegno usa una canvas 2D con ordinamento per profondita' invece di WebGL, che su alcune postazioni aziendali e' disattivato: per la mesh di un componente meccanico e' abbondante. Un pezzo meccanico ombreggiato e basta risulta illeggibile, perche' facce complanari hanno tutte lo stesso colore. Qui sopra alle facce disegniamo: - gli **spigoli vivi**, dove due facce formano un angolo netto; - la **silhouette**, dove una faccia visibile ne incontra una nascosta. Sono le stesse linee che un disegnatore traccerebbe a mano, e sono cio' che rende riconoscibile la forma. """ from __future__ import annotations import json from xml.sax.saxutils import escape TEMPLATE = """