Terzo caso di "[-4] Dati di input non completi" in Creo Distributed Batch, dopo i soppressi e le copie ambigue del commit precedente: falliva 9255728001, e solo lui fra i sei assiemi del batch. Il file in raw/ era identico bit per bit a quello sulla share, quindi non era il modello: mancava il contorno. Il suo sottoassieme _200 e' legato ad altri due (9255708017, 9255708018) da assembly feature e datum copiati, e monta una vite V6-12--_-_U5933_C il cui generico uni5933.prt non era in raw/. Nessuno dei sei file compariva in "members" ne' fra i piazzamenti: i due lettori esistenti non potevano vederli. Quei modelli stanno in una tabella a parte del .asm - array \xf2\xf7\x05 … \xf3 con elementi \xe3\xe2<tipo><nome>\0 - che ora si legge con EstraiCodiciRiferimentiEsterni, riusando la normalizzazione di #AF<n> e istanza<generico> gia' fatta per i membri. A differenza dei soppressi si ricorre dentro: Creo carica il modello citato con tutto il suo albero, e infatti 9255700182 arriva solo per quella via. La tabella contiene anche nomi di feature (MIRROR3, CHAMFER1) che dal record non si distinguono dai modelli. Non e' un problema: come per i soppressi si cerca ogni nome nell'indice e si ignora quello che non c'e'. Per lo stesso motivo questi codici restano fuori dai "non trovati", e la coda di scansione porta ora un flag che tiene fuori anche i rami raggiunti per riferimento esterno - la lista dei componenti mancanti continua a parlare solo della distinta. Documentato in docs/formato-asm-record.md §7.5. Co-Authored-By: Claude Opus 5 (1M context) <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