Skip to content

Architettura

lukethehawk edited this page Jul 9, 2026 · 3 revisions

Architettura

Stack

  • Vite per build/dev server.
  • Electron per app desktop locale.
  • Three.js per scena 3D, camera, materiali e STL.
  • three-bvh-csg per booleane.
  • node --test per test unitari.
  • GitHub Actions + GitHub Pages per deploy web.

File principali

  • index.html: markup UI.
  • src/style.css: stile e layout.
  • src/main.parts/*.js: controller principale diviso in parti.
  • src/main.js: generato da scripts/assemble-main.cjs, non editare a mano.
  • src/geometry.js: funzioni mesh pure.
  • src/primitives.js: primitive solide, piani, testo e ingranaggi.
  • src/snapping.js: snap a griglia, punti e inferenze.
  • src/measurement.js: misure.
  • src/hole-detection.js: riconoscimento fori.
  • test/*.test.js: test.

Stato runtime

  • model: mesh STL principale.
  • selected: faccia o corpo selezionato.
  • activeTool: strumento attivo.
  • undoStack / redoStack: storia geometrie.
  • snapPoints: punti strutturali e centri faccia.
  • stati temporanei: box, cilindro, cono, piramide, gear, piano, testo, taglio, foro, linea e misura.

Selezione

La selezione faccia usa findCoplanarRegion().

La selezione oggetto usa findConnectedComponent(), partendo dal triangolo cliccato. Questo permette di modificare un corpo separato dentro la stessa mesh STL senza prendere tutto il modello.

Camera

fitView() usa bounding box, FOV verticale/orizzontale e margine di sicurezza per inquadrare il modello senza zoom eccessivo.

Nota su STL

STL non contiene feature CAD, vincoli, cronologia o unità. Forma 3D interpreta le unità come millimetri e lavora direttamente sui triangoli.

Clone this wiki locally