# CadSearchGui App Windows Forms (.NET 10) per indicizzare, cercare e recuperare i file CAD Pro-ENGINEER/Creo di un disco/share di rete, e per trasformare l'estrazione "Distinta Base" del gestionale (file `.xls`/`.xml`) in un CSV con il percorso CAD di ogni componente. ## Funzionalità 1. **Indice CAD** — all'avvio carica automaticamente `cad_index.db` (se presente accanto all'eseguibile). Se manca, si può selezionare un DB esistente con **Apri DB...** o generarne uno nuovo con **Aggiorna indice**, che scansiona il disco (di default `X:\`, cartelle `__Accessori`, `__B.end`, `__Corpi`, `__Fondi`) e indicizza tutti i file. 2. **Importa Distinta Base** — trascina (o scegli da file) l'estrazione `.xls`/`.xml` del gestionale (foglio "Distinta Base", colonne Componente/Descrizione): viene generato un CSV con anteprima in griglia. 3. **Crea cartella raw** — cerca nell'indice il percorso CAD di ogni componente importato e copia i file trovati in una cartella `raw/` accanto al file di distinta originale. ## Requisiti - Windows - [.NET 10 SDK](https://dotnet.microsoft.com/download) (per build/run da sorgente) - Accesso alla share di rete con i file CAD (`X:\` di default) per l'indicizzazione ## Build ```powershell cd CadSearchGui dotnet build -c Release ``` ## Avvio Da sorgente: ```powershell cd CadSearchGui dotnet run -c Release ``` Oppure l'eseguibile già compilato: ```powershell cd CadSearchGui\bin\Release\net10.0-windows .\CadSearchGui.exe ``` ## Pubblicazione (eseguibile standalone) Genera un `.exe` self-contained per Windows x64, senza bisogno del runtime .NET installato sulla macchina di destinazione: ```powershell cd CadSearchGui dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish ``` L'eseguibile risultante è in `CadSearchGui\publish\CadSearchGui.exe`. ## Struttura del progetto Tutto il codice è in `CadSearchGui/` (unico progetto nella solution, GUI e indicizzazione integrate): - `Program.cs` — entry point. - `Form1.cs` — finestra principale (indice CAD, import Distinta Base, griglia risultati); UI costruita interamente in codice, nessun designer visuale. - `Indexer.cs` — scansione del disco e scrittura/aggiornamento del DB SQLite. - `DistintaBaseImporter.cs` — parsing del file Distinta Base (SpreadsheetML XML o Excel binario/OpenXML tramite ExcelDataReader) e generazione CSV. - `ProgressForm.cs` — dialog di avanzamento durante l'aggiornamento indice. Il database generato (`cad_index.db`), i file Excel/CSV della distinta trascinati nella root e la cartella `raw/` sono rigenerabili e non sono tracciati in git (vedi `.gitignore`). Non ci sono test automatizzati nel repo.