AsmRecordReader.LeggiMembri ora lancia InvalidDataException quando un assieme e' esso stesso un'istanza di family table (members descriverebbe solo una rappresentazione, non le istanze sorelle) invece di restituire un risultato sbagliato in silenzio - il chiamante ripiega sull'euristica testuale, che risolve gia' correttamente il caso. Aggiunti due controlli di coerenza analoghi (conteggio grezzo vs interpretato dei record ConfigName; occorrenze multiple di "members"), verificati senza falsi positivi su tutti i 350 .asm reali della share. Documentazione riorganizzata per distinguere cio' che e' verificato contro una BOM Creo di riferimento da cio' che e' verificato solo su scala (conteggi), e cio' che resta genuinamente non risolto. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cevolani StepPrep
App Windows Forms (.NET 10, progetto PrepStep) 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, fino a raccogliere in raw/ tutto il necessario per
l'esportazione STEP con Creo Distributed Batch: è un pre-processo per quel
passaggio, non lo sostituisce.
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. In questa fase si vede/cambia anche la cartella di lavoro: dove finiscono il CSV e la cartellaraw/(gli STEP esportati con Creo vanno instep/, dentro la stessa cartella). Proposta automaticamente (ricordata da un avvio all'altro), modificabile con Cambia cartella.... - Importa Distinta Base — trascina (o scegli da file) l'estrazione
.xls/.xmldel gestionale (foglio "Distinta Base", colonne Componente/Descrizione): viene generato un CSV nella cartella di lavoro, 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/dentro la cartella di lavoro. - 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 — confronta la distinta con l'indice per
capire se manca qualche sotto-componente, e mostra i file
.asmdella distinta trascinabili su Creo/Esplora risorse per l'esportazione STEP con Creo Distributed Batch.
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 PrepStep
dotnet build -c Release
Avvio
Da sorgente:
cd PrepStep
dotnet run -c Release
Oppure l'eseguibile già compilato:
cd PrepStep\bin\Release\net10.0-windows
.\PrepStep.exe
Pubblicazione (eseguibile standalone)
Genera un .exe self-contained per Windows x64, senza bisogno del runtime
.NET installato sulla macchina di destinazione:
cd PrepStep
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
L'eseguibile risultante è in PrepStep\publish\PrepStep.exe — un unico
file, si copia e si lancia su un'altra macchina Windows senza bisogno di .NET
installato.
Struttura del progetto
Tutto il codice è in PrepStep/ (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
PrepStep.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 PrepStep.Tests
dotnet test