- Batch the DB lookup per file instead of per code in scripts/ExtractCreoStrings.cs: files_ultima_versione is an unmaterialized view, so each query rescanned the whole files table (~230ms) - batching cuts a multi-minute BFS to seconds. - Widen the code regex to accept a revision letter and a "_..." suffix together (e.g. "9284200366A_C01"), and purely numeric "_NNNN" suffixes (e.g. dimensional variants like "2702220182_8188"), not just letter+digits. - Require bare digit-only candidates to also appear inside a real "Componente ID N (...)"/"Component id N (...)" placement, filtering out incidental references to a containing assembly's own code. - scripts/ExtractCreoStrings.cs now reports only the direct references of the given .asm (one level, matching Creo's own tree for that file) instead of recursing into sub-assemblies. - Port the regex and placement-check refinements to the production AssemblyComponentScanner.cs used by the app's "Trova componenti referenziati" and "Verifica completezza" phases. - Document the new false-positive categories (parent/container self-reference, suppressed/removed components with residual placement, placement missing suffix/bracket detail) in docs/formato-asm.md, generalized beyond the specific assemblies used to find them. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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à
- 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 defaultX:\, tutte le cartelle di primo livello che trova) e indicizza tutti i file. - Importa Distinta Base — trascina (o scegli da file) l'estrazione
.xls/.xmldel gestionale (foglio "Distinta Base", colonne Componente/Descrizione): viene generato un CSV con anteprima in griglia. Se il file segue la convenzione di nomeDBP_<codice>_<timestamp>del gestionale, l'assieme generale dell'estrazione viene aggiunto come riga in più nel CSV (il foglio elenca solo i componenti sotto l'assieme, non l'assieme stesso). - Crea cartella raw — cerca nell'indice il percorso CAD di ogni
componente importato (assieme generale incluso) e copia i file trovati
in una cartella
raw/accanto al file di distinta originale. - Trova componenti referenziati — legge i metadati dei file
.asminraw/per trovare ricorsivamente i sotto-assiemi/parti che li compongono, copiandoli a loro volta inraw/. - Verifica completezza assiemi / Report STEP realizzati — confronta
la distinta con l'indice (per capire se manca qualche sotto-componente)
e con la cartella
step/(per capire quali STEP sono già stati realizzati).
Requisiti
- Windows
- .NET 10 SDK (per build/run da sorgente)
- Accesso alla share di rete con i file CAD (
X:\di default) per l'indicizzazione
Build
cd CadSearchGui
dotnet build -c Release
Avvio
Da sorgente:
cd CadSearchGui
dotnet run -c Release
Oppure l'eseguibile già compilato:
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:
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 le cartelle raw//step/ sono rigenerabili e non
sono tracciati in git (vedi .gitignore).
Test
CadSearchGui.Tests/ contiene unit test (regex di estrazione dei componenti
dai .asm, parsing del nome file Pro-E) e integration test (schema/vista SQL
reale, con focus sui bug di case-sensitivity/duplicati già risolti). Da
eseguire:
cd CadSearchGui.Tests
dotnet test