2026-09-23 08:33:34 +02:00
|
|
|
# PrepStep - Cevolani
|
2026-09-16 10:59:16 +02:00
|
|
|
|
2026-09-21 11:18:43 +02:00
|
|
|
App Windows Forms (.NET 10, progetto `PrepStep`) per indicizzare, cercare e
|
2026-09-21 11:00:01 +02:00
|
|
|
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.
|
2026-09-16 10:59:16 +02:00
|
|
|
|
|
|
|
|
## Funzionalità
|
|
|
|
|
|
2026-09-23 08:29:03 +02:00
|
|
|
1. **Indice CAD** — all'avvio carica automaticamente `cad_index.db` dalla
|
|
|
|
|
cartella di installazione (`%LOCALAPPDATA%\Programs\PrepStep`). Se manca, lo si
|
|
|
|
|
crea con **Aggiorna indice**, oppure si apre un altro DB per la sola sessione
|
2026-09-23 08:46:53 +02:00
|
|
|
con **Apri DB...**. **Aggiorna indice** scansiona il disco (di default `X:\`,
|
|
|
|
|
tutte le cartelle di primo livello che trova) e indicizza tutti i file. La
|
|
|
|
|
**cartella di lavoro** (dove finiscono il CSV e la cartella `raw/`; gli STEP
|
|
|
|
|
esportati con Creo vanno in `step/`, dentro la stessa cartella) è di default la
|
|
|
|
|
cartella di installazione, modificabile in qualunque momento da **File → Scegli
|
|
|
|
|
cartella di lavoro...** (la scelta viene ricordata). Dal menu **File** si
|
|
|
|
|
ripuliscono anche `raw/`/`step/` e i CSV accumulati.
|
2026-09-16 10:59:16 +02:00
|
|
|
2. **Importa Distinta Base** — trascina (o scegli da file) l'estrazione
|
|
|
|
|
`.xls`/`.xml` del gestionale (foglio "Distinta Base", colonne
|
2026-09-21 11:18:43 +02:00
|
|
|
Componente/Descrizione): viene generato un CSV nella cartella di lavoro, con
|
|
|
|
|
anteprima in griglia. Se il file segue la convenzione di nome
|
|
|
|
|
`DBP_<codice>_<timestamp>` del gestionale, l'assieme generale dell'estrazione
|
|
|
|
|
viene aggiunto come riga in più nel CSV (il foglio elenca solo i componenti
|
2026-09-22 16:22:39 +02:00
|
|
|
sotto l'assieme, non l'assieme stesso). Il bottone **Verifica presenza**
|
|
|
|
|
(compare solo dopo un import riuscito) cerca i componenti nel database — è
|
|
|
|
|
questo passo, non il solo import, a sbloccare la fase successiva.
|
2026-09-16 10:59:16 +02:00
|
|
|
3. **Crea cartella raw** — cerca nell'indice il percorso CAD di ogni
|
2026-09-16 16:25:52 +02:00
|
|
|
componente importato (assieme generale incluso) e copia i file trovati
|
2026-09-21 11:18:43 +02:00
|
|
|
in una cartella `raw/` dentro la cartella di lavoro.
|
2026-09-16 16:25:52 +02:00
|
|
|
4. **Trova componenti referenziati** — legge i metadati dei file `.asm` in
|
|
|
|
|
`raw/` per trovare ricorsivamente i sotto-assiemi/parti che li
|
2026-09-22 16:22:39 +02:00
|
|
|
compongono, copiandoli a loro volta in `raw/` (passo opzionale se la
|
|
|
|
|
distinta contiene solo parti singole).
|
2026-09-23 08:46:53 +02:00
|
|
|
5. **Verifica completezza** — mostra i file `.asm` della distinta già in `raw/`,
|
2026-09-22 16:22:39 +02:00
|
|
|
trascinabili su Creo Distributed Batch per l'esportazione STEP (passo
|
|
|
|
|
manuale, fuori da quest'app): scrive in `step/`, dentro la cartella di
|
|
|
|
|
lavoro.
|
|
|
|
|
|
|
|
|
|
Guida utente passo-passo completa in [`docs/guida-utente.md`](docs/guida-utente.md)
|
|
|
|
|
(stessa sintesi anche in-app da **Aiuto → Guida**, F1).
|
2026-09-16 10:59:16 +02:00
|
|
|
|
|
|
|
|
## 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
|
2026-09-21 11:18:43 +02:00
|
|
|
cd PrepStep
|
2026-09-16 10:59:16 +02:00
|
|
|
dotnet build -c Release
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Avvio
|
|
|
|
|
|
|
|
|
|
Da sorgente:
|
|
|
|
|
|
|
|
|
|
```powershell
|
2026-09-21 11:18:43 +02:00
|
|
|
cd PrepStep
|
2026-09-16 10:59:16 +02:00
|
|
|
dotnet run -c Release
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Oppure l'eseguibile già compilato:
|
|
|
|
|
|
|
|
|
|
```powershell
|
2026-09-21 11:18:43 +02:00
|
|
|
cd PrepStep\bin\Release\net10.0-windows
|
|
|
|
|
.\PrepStep.exe
|
2026-09-16 10:59:16 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Pubblicazione (eseguibile standalone)
|
|
|
|
|
|
|
|
|
|
Genera un `.exe` self-contained per Windows x64, senza bisogno del runtime
|
|
|
|
|
.NET installato sulla macchina di destinazione:
|
|
|
|
|
|
|
|
|
|
```powershell
|
2026-09-21 11:18:43 +02:00
|
|
|
cd PrepStep
|
2026-09-16 10:59:16 +02:00
|
|
|
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
|
|
|
|
|
```
|
|
|
|
|
|
2026-09-21 11:18:43 +02:00
|
|
|
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.
|
2026-09-16 10:59:16 +02:00
|
|
|
|
2026-09-23 08:29:03 +02:00
|
|
|
## Setup di installazione
|
|
|
|
|
|
2026-09-23 08:46:53 +02:00
|
|
|
Per distribuire l'app agli utenti si genera un setup con
|
|
|
|
|
[Inno Setup 6](https://jrsoftware.org/isinfo.php).
|
|
|
|
|
|
|
|
|
|
Una volta sola, per installare Inno Setup (per l'utente corrente, senza admin):
|
2026-09-23 08:29:03 +02:00
|
|
|
|
|
|
|
|
```powershell
|
2026-09-23 08:46:53 +02:00
|
|
|
winget install --id JRSoftware.InnoSetup -e --scope user
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
A ogni release, dalla root del repo:
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
# 1. aggiorna <Version> in PrepStep\PrepStep.csproj e la voce in CHANGELOG.md
|
|
|
|
|
# 2. chiudi l'app se è aperta (l'exe in uso blocca la build)
|
|
|
|
|
dotnet publish PrepStep -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o PrepStep\publish
|
2026-09-23 08:29:03 +02:00
|
|
|
& "$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe" installer\PrepStep.iss
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Produce `installer\Output\PrepStep-Setup-<versione>.exe` (versione letta dall'exe, cioè
|
2026-09-23 08:46:53 +02:00
|
|
|
`<Version>` del csproj): è l'unico file da distribuire. Per provarlo sul proprio PC basta
|
|
|
|
|
lanciarlo (`.\installer\Output\PrepStep-Setup-<versione>.exe`). Il setup:
|
2026-09-23 08:29:03 +02:00
|
|
|
|
|
|
|
|
- installa **solo per l'utente corrente**, in `%LOCALAPPDATA%\Programs\PrepStep`, senza
|
|
|
|
|
chiedere i diritti di amministratore;
|
|
|
|
|
- crea nel menu Start i collegamenti al programma e al disinstallatore (quello sul desktop
|
|
|
|
|
è facoltativo);
|
|
|
|
|
- compare in "Impostazioni → App installate", da cui si disinstalla.
|
|
|
|
|
|
|
|
|
|
Se l'app è già installata, il setup chiede prima cosa fare: **Sì** aggiorna/reinstalla (DB e
|
|
|
|
|
impostazioni restano), **No** disinstalla, **Annulla** esce. Installazione silenziosa (aggiorna
|
|
|
|
|
senza chiedere) — es. per distribuirla da script:
|
|
|
|
|
`PrepStep-Setup-<versione>.exe /VERYSILENT /SUPPRESSMSGBOXES`.
|
|
|
|
|
|
2026-09-16 10:59:16 +02:00
|
|
|
## Struttura del progetto
|
|
|
|
|
|
2026-09-23 08:46:53 +02:00
|
|
|
Il codice dell'app è tutto in `PrepStep/` (GUI e indicizzazione integrate); accanto ci sono
|
|
|
|
|
il progetto di test `PrepStep.Tests/`, gli script standalone `scripts/` e lo script del setup
|
|
|
|
|
`installer/`. Mappa file-per-file completa in [`docs/architettura.md`](docs/architettura.md).
|
2026-09-16 10:59:16 +02:00
|
|
|
|
|
|
|
|
- `Program.cs` — entry point.
|
2026-09-23 08:46:53 +02:00
|
|
|
- `Form1.cs` — finestra principale, wizard a 5 fasi e menu; UI costruita interamente in
|
|
|
|
|
codice (`Form1.Designer.cs` è solo lo scheletro del template).
|
2026-09-16 10:59:16 +02:00
|
|
|
- `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.
|
2026-09-23 08:46:53 +02:00
|
|
|
- `AsmRecordReader.cs` — lettura esatta dei record dei `.asm` (fase 4).
|
|
|
|
|
- `AssemblyComponentScanner.cs` — euristica testuale di fallback per i `.asm` fuori formato.
|
|
|
|
|
- `ProgressForm.cs`, `ProgressoComponentiForm.cs` — avanzamento di scansione e fase 4.
|
|
|
|
|
- `PrtMancantiForm.cs` — esito di "Trova componenti referenziati".
|
|
|
|
|
- `GuidaForm.cs` — guida in-app (Aiuto → Guida, F1).
|
|
|
|
|
- `UiStile.cs` — stile condiviso di bottoni, card e barre.
|
2026-09-16 10:59:16 +02:00
|
|
|
|
|
|
|
|
Il database generato (`cad_index.db`), i file Excel/CSV della distinta
|
2026-09-16 16:25:52 +02:00
|
|
|
trascinati nella root e le cartelle `raw/`/`step/` sono rigenerabili e non
|
|
|
|
|
sono tracciati in git (vedi `.gitignore`).
|
2026-09-16 10:59:16 +02:00
|
|
|
|
2026-09-16 16:25:52 +02:00
|
|
|
## Test
|
|
|
|
|
|
2026-09-23 08:46:53 +02:00
|
|
|
`PrepStep.Tests/` (xUnit) contiene unit test (lettore esatto e euristica di
|
|
|
|
|
estrazione dei componenti dai `.asm`, parsing del nome file Pro-E, import della
|
|
|
|
|
distinta) e integration test (scansione su disco, schema/vista SQL reale con focus
|
|
|
|
|
sui bug di case-sensitivity/duplicati già risolti, pipeline end-to-end). Da
|
2026-09-16 16:25:52 +02:00
|
|
|
eseguire:
|
|
|
|
|
|
|
|
|
|
```powershell
|
2026-09-21 11:18:43 +02:00
|
|
|
cd PrepStep.Tests
|
2026-09-16 16:25:52 +02:00
|
|
|
dotnet test
|
|
|
|
|
```
|
2026-09-23 08:46:53 +02:00
|
|
|
|
|
|
|
|
## Licenza
|
|
|
|
|
|
|
|
|
|
Software proprietario, © 2026 Davide Grilli, tutti i diritti riservati: vedi
|
|
|
|
|
[`LICENSE`](LICENSE).
|