Sposta 'Pulisci raw e step' e 'Cambia cartella' nel menu File, rinomina 'Nuovo'
Fase 1 (Database) aveva 4 bottoni tutti sullo stesso piano visivo: due configurano il DB, gli altri due (cambio cartella di lavoro, pulizia raw/step) sono azioni occasionali di manutenzione, non passi del wizard. Spostate in File → "Scegli cartella di lavoro..." e "Pulisci raw e step...", raggiungibili in qualunque momento invece che solo dalla fase 1. "File → Nuova estrazione" diventa "Nuovo"; corretto anche un bug per cui InizializzaCartellaLavoro non richiamava AggiornaStatoAvanti, lasciando "Avanti" disabilitato in fase 1 finché non si toccava un altro controllo anche a DB e cartella già caricati all'avvio. Doc aggiornati nello stesso commit: CLAUDE.md, docs/architettura.md, GuidaForm.cs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e29a1bf90a
commit
3e9c78074c
4 files changed
+55
-53
No files matched your search
@@ -73,10 +73,11 @@ che conta per capire il prodotto.
|
||||
designer visuale):
|
||||
|
||||
1. **Database** — carica/aggiorna `cad_index.db` (`Indexer.ScanAsync`, radice disco di
|
||||
default `X:\` hardcoded in `RadiceDiscoDefault`); qui vive anche la **cartella di lavoro**
|
||||
default `X:\` hardcoded in `RadiceDiscoDefault`); mostra anche la **cartella di lavoro**
|
||||
(destinazione di CSV/`raw/`/`step/`), proposta dall'ultima usata o dalla cartella del DB se
|
||||
non c'è ancora nulla di salvato — vedi `docs/db-cad-index.md` per il dettaglio di schema e
|
||||
risoluzione del percorso DB.
|
||||
non c'è ancora nulla di salvato — cambiabile da "File → Scegli cartella di lavoro..." (non
|
||||
più un bottone in fase 1: azione occasionale, non un passo del flusso) — vedi
|
||||
`docs/db-cad-index.md` per il dettaglio di schema e risoluzione del percorso DB.
|
||||
2. **Importa Distinta Base** — `DistintaBaseImporter.ConvertiInCsv` genera il CSV
|
||||
componente;descrizione nella cartella di lavoro; se il file segue la convenzione del
|
||||
gestionale (`DBP_<codice>_<timestamp>`), aggiunge l'assieme generale come riga in più (da
|
||||
@@ -103,9 +104,12 @@ designer visuale):
|
||||
5. **Verifica completezza** — mostra i `.asm` della distinta già in `raw/`, trascinabili su
|
||||
Creo per l'esportazione STEP (Distributed Batch, manuale, fuori dall'app).
|
||||
|
||||
Menu in cima alla finestra: "File → Nuova estrazione" (Ctrl+N) azzera lo stato delle fasi 2-5
|
||||
per ripartire con una nuova distinta, senza toccare DB/cartella di lavoro della fase 1;
|
||||
"Aiuto → Guida" (F1) apre una sintesi interattiva delle 5 fasi (`GuidaForm.cs`).
|
||||
Menu in cima alla finestra: "File → Nuovo" (Ctrl+N) azzera lo stato delle fasi 2-5
|
||||
per ripartire con una nuova distinta, senza toccare DB/cartella di lavoro della fase 1 (va
|
||||
volutamente alla fase 2, non alla 1: quei dati restano quelli già caricati); "File → Scegli
|
||||
cartella di lavoro..." cambia la cartella di CSV/`raw/`/`step/` in qualunque momento; "File →
|
||||
Pulisci raw e step..." svuota le cartelle `raw/`/`step/` nella cartella di lavoro (non tocca
|
||||
l'indice); "Aiuto → Guida" (F1) apre una sintesi interattiva delle 5 fasi (`GuidaForm.cs`).
|
||||
|
||||
## Script standalone (`scripts/`)
|
||||
|
||||
|
||||
+16
-28
@@ -11,18 +11,18 @@ public partial class Form1 : Form
|
||||
private readonly Button _btnTrovaPrt = new();
|
||||
private readonly Button _btnVerifica = new();
|
||||
private readonly ListView _lstAnteprimaAsm = new();
|
||||
private readonly Button _btnPulisci = new();
|
||||
private readonly Label _lblStatus = new();
|
||||
private readonly Label _lblDb = new();
|
||||
private readonly Label _lblUltimoAggiornamento = new();
|
||||
private readonly Label _lblCartellaLavoro = new();
|
||||
private readonly Button _btnCambiaCartella = new();
|
||||
private readonly DataGridView _gridImport = new();
|
||||
private readonly DataGridView _gridRaw = new();
|
||||
private readonly Label _lblImportStatus = new();
|
||||
private readonly ToolTip _tipImportStatus = new();
|
||||
private readonly MenuStrip _menu = new();
|
||||
private readonly ToolStripMenuItem _mnuNuovaEstrazione = new("Nuova estrazione");
|
||||
private readonly ToolStripMenuItem _mnuNuovaEstrazione = new("Nuovo");
|
||||
private readonly ToolStripMenuItem _mnuPulisci = new("Pulisci raw e step...");
|
||||
private readonly ToolStripMenuItem _mnuCambiaCartella = new("Scegli cartella di lavoro...");
|
||||
|
||||
// Wizard: una fase alla volta occupa tutta la finestra, si avanza solo quando quella
|
||||
// corrente è "pronta" (vedi AvantiConsentito). NomiFasi/_panelFasi sono paralleli per indice.
|
||||
@@ -152,6 +152,12 @@ public partial class Form1 : Form
|
||||
_mnuNuovaEstrazione.Click += (_, _) => NuovaEstrazione();
|
||||
mnuFile.DropDownItems.Add(_mnuNuovaEstrazione);
|
||||
|
||||
_mnuCambiaCartella.Click += (_, _) => ScegliCartellaLavoro();
|
||||
mnuFile.DropDownItems.Add(_mnuCambiaCartella);
|
||||
|
||||
_mnuPulisci.Click += (_, _) => PulisciRawEStep();
|
||||
mnuFile.DropDownItems.Add(_mnuPulisci);
|
||||
|
||||
var mnuAiuto = new ToolStripMenuItem("Aiuto");
|
||||
var mnuGuida = new ToolStripMenuItem("Guida") { ShortcutKeys = Keys.F1 };
|
||||
mnuGuida.Click += (_, _) => new GuidaForm().ShowDialog(this);
|
||||
@@ -259,7 +265,7 @@ public partial class Form1 : Form
|
||||
{
|
||||
if (_dbPath is null || _cartellaLavoro is null)
|
||||
{
|
||||
MessageBox.Show(this, "Carica prima il database in fase 1.", "Nuova estrazione",
|
||||
MessageBox.Show(this, "Carica prima il database in fase 1.", "Nuovo",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
@@ -337,7 +343,7 @@ public partial class Form1 : Form
|
||||
Text = "Cartella di lavoro: qui vengono scritti il CSV della distinta e la "
|
||||
+ "cartella 'raw' (gli STEP esportati con Creo vanno invece in 'step', "
|
||||
+ "dentro la stessa cartella). Proposta automaticamente (ricordata da un "
|
||||
+ "avvio all'altro), modificabile con 'Cambia cartella...'.",
|
||||
+ "avvio all'altro), modificabile da 'File → Scegli cartella di lavoro...'.",
|
||||
};
|
||||
contenuto.Controls.Add(lblIstruzioniCartella);
|
||||
|
||||
@@ -347,27 +353,6 @@ public partial class Form1 : Form
|
||||
_lblCartellaLavoro.Margin = new Padding(0, 0, 0, 4);
|
||||
contenuto.Controls.Add(_lblCartellaLavoro);
|
||||
|
||||
_btnCambiaCartella.Text = "Cambia cartella...";
|
||||
UiStile.Secondario(_btnCambiaCartella);
|
||||
_btnCambiaCartella.Click += (_, _) => ScegliCartellaLavoro();
|
||||
contenuto.Controls.Add(_btnCambiaCartella);
|
||||
|
||||
var lblManutenzione = new Label
|
||||
{
|
||||
Dock = DockStyle.Top,
|
||||
AutoSize = true,
|
||||
ForeColor = SystemColors.GrayText,
|
||||
Margin = new Padding(0, 20, 0, 8),
|
||||
Text = "Manutenzione: svuota le cartelle 'raw' e 'step' nella cartella di lavoro "
|
||||
+ "prima di un nuovo giro (non tocca l'indice, solo le copie locali).",
|
||||
};
|
||||
contenuto.Controls.Add(lblManutenzione);
|
||||
|
||||
_btnPulisci.Text = "Pulisci raw e step";
|
||||
UiStile.Secondario(_btnPulisci);
|
||||
_btnPulisci.Click += (_, _) => PulisciRawEStep();
|
||||
contenuto.Controls.Add(_btnPulisci);
|
||||
|
||||
var panel = new Panel();
|
||||
panel.Controls.Add(contenuto);
|
||||
return panel;
|
||||
@@ -707,7 +692,8 @@ public partial class Form1 : Form
|
||||
.ToList();
|
||||
if (cartelle.Count == 0)
|
||||
{
|
||||
ImpostaStatoImport($"Nessuna cartella 'raw' o 'step' trovata in {radice}.", Color.DarkRed);
|
||||
MessageBox.Show(this, $"Nessuna cartella 'raw' o 'step' trovata in {radice}.",
|
||||
"Pulisci raw e step", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -734,7 +720,8 @@ public partial class Form1 : Form
|
||||
}
|
||||
}
|
||||
|
||||
ImpostaStatoImport($"{eliminati} file eliminati da {string.Join(" e ", cartelle)}.", Color.DarkGreen);
|
||||
MessageBox.Show(this, $"{eliminati} file eliminati da {string.Join(" e ", cartelle)}.",
|
||||
"Pulisci raw e step", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
/// <summary>Tutti i codici prt/asm noti all'indice, con i relativi percorsi (ultima
|
||||
@@ -1112,6 +1099,7 @@ public partial class Form1 : Form
|
||||
? ultima
|
||||
: (_dbPath is not null ? Path.GetDirectoryName(_dbPath) : null) ?? AppContext.BaseDirectory;
|
||||
AggiornaLabelCartellaLavoro();
|
||||
AggiornaStatoAvanti();
|
||||
}
|
||||
|
||||
private void ScegliCartellaLavoro()
|
||||
|
||||
@@ -12,13 +12,14 @@ public class GuidaForm : Form
|
||||
Distributed Batch per l'esportazione STEP: indicizza i file di una share di
|
||||
rete e guida attraverso 5 fasi, una alla volta, con "Avanti"/"Indietro".
|
||||
|
||||
"File ▸ Nuova estrazione" (Ctrl+N) azzera distinta/raw/verifica per
|
||||
"File ▸ Nuovo" (Ctrl+N) azzera distinta/raw/verifica per
|
||||
ripartire con una nuova distinta base, senza dover ricaricare il database.
|
||||
"""),
|
||||
("1. Database", """
|
||||
Carica o aggiorna l'indice "cad_index.db" a partire dalle cartelle di primo
|
||||
livello del disco/share (radice di default X:\). Qui si sceglie anche la
|
||||
cartella di lavoro, dove finiscono CSV, "raw" e "step".
|
||||
livello del disco/share (radice di default X:\). Mostra anche la cartella di
|
||||
lavoro corrente, dove finiscono CSV, "raw" e "step" (cambiabile da
|
||||
"File ▸ Scegli cartella di lavoro...").
|
||||
"""),
|
||||
("2. Importa Distinta Base", """
|
||||
Converte il file della distinta (trascinabile nella finestra) in un CSV
|
||||
|
||||
+25
-16
@@ -92,7 +92,7 @@ trascinano i `.asm` su Creo Distributed Batch, che scrive in `step/`.
|
||||
|
||||
| # | Fase | Bottone → metodo | Cosa fa |
|
||||
|---|---|---|---|
|
||||
| 1 | Database | "Aggiorna indice" → `Indexer.ScanAsync`; "Cambia cartella..." → `ScegliCartellaLavoro` | Crea/aggiorna `cad_index.db` scansionando la share; sceglie/mostra la cartella di lavoro |
|
||||
| 1 | Database | "Aggiorna indice" → `Indexer.ScanAsync` | Crea/aggiorna `cad_index.db` scansionando la share; mostra anche la cartella di lavoro corrente (cambiabile da "File → Scegli cartella di lavoro...") |
|
||||
| 2 | Importa Distinta Base | selezione file → `ImportaDistinta` → `DistintaBaseImporter.ConvertiInCsv` | Xls/Xml gestionale → CSV componente;descrizione, scritto nella cartella di lavoro |
|
||||
| 3 | Crea cartella raw | "Crea cartella raw" → `CreaCartellaRaw` | `TrovaPercorsiCad` + `CopiaFileTrovati` (parallela) → `raw/` dentro la cartella di lavoro |
|
||||
| 4 | Trova componenti referenziati | "Trova componenti referenziati" → `TrovaPrtReferenziati` → `RisolviAlberoComponenti` | Legge i `.asm` in `raw/`, risolve ricorsivamente sotto-assiemi/parti nell'indice e li copia anch'essi in `raw/`, insieme ai componenti soppressi e ai modelli citati per riferimento esterno che servono a Creo per aprire l'assieme |
|
||||
@@ -102,10 +102,14 @@ trascinano i `.asm` su Creo Distributed Batch, che scrive in `step/`.
|
||||
`_percorsoInputCorrente`, `_righeCorrenti` (righe del CSV), `_ultimaVerifica` (cache percorsi
|
||||
CAD), `_ultimaCartellaRaw`.
|
||||
|
||||
Menu (`MenuStrip`, in cima alla finestra): "File → Nuova estrazione" (Ctrl+N) azzera lo
|
||||
stato delle fasi 2-5 (`NuovaEstrazione`) per ripartire con una nuova distinta senza
|
||||
ricaricare il database/la cartella di lavoro (fase 1, che resta invariata); "Aiuto → Guida"
|
||||
(F1) apre `GuidaForm`, sintesi interattiva delle 5 fasi per chi non ha letto questi docs.
|
||||
Menu (`MenuStrip`, in cima alla finestra): "File → Nuovo" (Ctrl+N) azzera lo
|
||||
stato delle fasi 2-5 (`NuovaEstrazione`) e va direttamente alla fase 2, senza passare dalla
|
||||
fase 1: database e cartella di lavoro restano quelli già caricati, non serve rifare lo scan;
|
||||
"File → Scegli cartella di lavoro..." → `ScegliCartellaLavoro`, cambia in qualunque momento
|
||||
la destinazione di CSV/`raw/`/`step/`; "File → Pulisci raw e step..." svuota le cartelle
|
||||
`raw/`/`step/` nella cartella di lavoro (`PulisciRawEStep`, non tocca l'indice); "Aiuto →
|
||||
Guida" (F1) apre `GuidaForm`, sintesi interattiva delle 5 fasi per chi non ha letto questi
|
||||
docs.
|
||||
|
||||
Altre responsabilità in Form1.cs:
|
||||
- `TrovaPercorsiCad` / `CaricaCodiciNoti` — query sul DB (`files_ultima_versione`), la
|
||||
@@ -189,8 +193,8 @@ completi".
|
||||
file) nelle sole colonne Componente/Descrizione, foglio `"Distinta Base"`. Se il nome del
|
||||
file segue la convenzione `DBP_<codice>_<timestamp>`, aggiunge l'assieme generale come riga
|
||||
in più (il foglio elenca solo i componenti sotto l'assieme). Scrive il CSV nella cartella
|
||||
passata da `Form1` (la cartella di lavoro scelta in fase 1), non necessariamente accanto al
|
||||
file di input.
|
||||
passata da `Form1` (la cartella di lavoro, impostabile da "File → Scegli cartella di lavoro..."),
|
||||
non necessariamente accanto al file di input.
|
||||
|
||||
## Finestre di dialogo (modali, mostrate a fine step)
|
||||
|
||||
@@ -225,15 +229,20 @@ completi".
|
||||
## Persistenza
|
||||
|
||||
- **DB** (`cad_index.db`, SQLite) — vedi tabella `files`/vista `files_ultima_versione` sopra.
|
||||
Percorso: cercato accanto all'eseguibile o nella working directory all'avvio; altrimenti
|
||||
selezionabile con "Apri DB...". Radice disco di scansione di default `X:\`
|
||||
(`Form1.RadiceDiscoDefault`, hardcoded).
|
||||
- **Cartella di lavoro** — salvata in `%AppData%/PrepStep/ultima_cartella_lavoro.txt`
|
||||
(stesso meccanismo del DB sopra), proposta di default `AppContext.BaseDirectory` la prima
|
||||
volta; selezionabile/cambiabile con "Cambia cartella..." in fase 1. Tutti i file generati a
|
||||
valle ci finiscono dentro: il CSV della distinta, `raw/` (CAD dei componenti e
|
||||
sotto-componenti); `step/` non è scritta dall'app ma è dove l'utente esporta gli STEP a
|
||||
mano con Creo Distributed Batch, a partire dai file trascinati da `raw/` in fase 5.
|
||||
Percorso ricordato tra un avvio e l'altro in `%AppData%/PrepStep/ultimo_db.txt`
|
||||
(`SalvaUltimoDbUsato`/`LeggiUltimoDbUsato`), scritto ogni volta che si carica un DB
|
||||
(all'avvio se già noto, oppure da "Apri DB..." o al termine di "Aggiorna indice"); se il
|
||||
file non c'è o punta a un percorso cancellato, `InizializzaDatabase` ripiega su
|
||||
`cad_index.db` accanto all'eseguibile o nella working directory. Radice disco di scansione
|
||||
di default `X:\` (`Form1.RadiceDiscoDefault`, hardcoded).
|
||||
- **Cartella di lavoro** — stesso meccanismo del DB sopra, salvata in
|
||||
`%AppData%/PrepStep/ultima_cartella_lavoro.txt`; se non c'è una preferenza salvata (o punta
|
||||
a una cartella cancellata) si propone la cartella del DB caricato, o in ultima istanza
|
||||
`AppContext.BaseDirectory`; cambiabile in qualunque momento da "File → Scegli cartella di
|
||||
lavoro...". Tutti i file generati a valle ci finiscono dentro: il CSV della distinta, `raw/`
|
||||
(CAD dei componenti e sotto-componenti); `step/` non è scritta dall'app ma è dove l'utente
|
||||
esporta gli STEP a mano con Creo Distributed Batch, a partire dai file trascinati da `raw/`
|
||||
in fase 5.
|
||||
|
||||
## Script standalone (`scripts/`)
|
||||
|
||||
|
||||
Reference in new issue
Block a user