Remove the step_finali copy/report feature
Not needed anymore: the app no longer copies matched .stp files from step/ into a separate step_finali/ folder, or reports which distinta codes are still missing a STEP. Removed the "Crea cartella step_finali" button, GeneraReportStep, and ReportStepForm/EsitoStep. Phase 5 keeps "Verifica completezza assiemi" and the drag&drop .asm list (still how files get sent to Creo Distributed Batch); renamed from "Verifica completezza e STEP" to "Verifica completezza" since it's no longer about STEP output. PulisciRawEStep now only clears raw/ and step/. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
13798ad47c
commit
379deec986
5 files changed
+37
-217
No files matched your search
@@ -52,7 +52,8 @@ entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione inte
|
|||||||
1. **Database** — carica/aggiorna l'indice, mostra data ultimo aggiornamento; qui vive
|
1. **Database** — carica/aggiorna l'indice, mostra data ultimo aggiornamento; qui vive
|
||||||
anche la **cartella di lavoro** (`_cartellaLavoro`, mostrata in `_lblCartellaLavoro`,
|
anche la **cartella di lavoro** (`_cartellaLavoro`, mostrata in `_lblCartellaLavoro`,
|
||||||
cambiabile con "Cambia cartella..." → `ScegliCartellaLavoro`): destinazione di CSV,
|
cambiabile con "Cambia cartella..." → `ScegliCartellaLavoro`): destinazione di CSV,
|
||||||
`raw/`, `step/`, `step_finali/` per tutte le fasi successive. All'avvio
|
`raw/` per tutte le fasi successive (gli STEP esportati a mano con Creo vanno in
|
||||||
|
`step/`, dentro la stessa cartella). All'avvio
|
||||||
`InizializzaCartellaLavoro` propone l'ultima usata (ricordata in
|
`InizializzaCartellaLavoro` propone l'ultima usata (ricordata in
|
||||||
`%AppData%/PrepStep/ultima_cartella_lavoro.txt`, stesso pattern di
|
`%AppData%/PrepStep/ultima_cartella_lavoro.txt`, stesso pattern di
|
||||||
`ultimo_db.txt` per il DB) se esiste ancora, altrimenti `AppContext.BaseDirectory`
|
`ultimo_db.txt` per il DB) se esiste ancora, altrimenti `AppContext.BaseDirectory`
|
||||||
@@ -73,18 +74,14 @@ entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione inte
|
|||||||
già in `raw/` (`AssemblyComponentScanner`) per risolvere ricorsivamente i
|
già in `raw/` (`AssemblyComponentScanner`) per risolvere ricorsivamente i
|
||||||
sotto-assiemi/parti che contengono (`RisolviAlberoComponenti`), copiandoli anch'essi
|
sotto-assiemi/parti che contengono (`RisolviAlberoComponenti`), copiandoli anch'essi
|
||||||
in `raw/`.
|
in `raw/`.
|
||||||
5. **Verifica completezza e STEP** — appena si entra nella fase, `AggiornaAnteprimaAsm`
|
5. **Verifica completezza** — appena si entra nella fase, `AggiornaAnteprimaAsm`
|
||||||
mostra in una `ListView` a icone i file `.asm` della distinta importata (esclusi i
|
mostra in una `ListView` a icone i file `.asm` della distinta importata (esclusi i
|
||||||
sotto-assiemi di fase 4) già presenti in `raw/` — letti dal filesystem locale, non
|
sotto-assiemi di fase 4) già presenti in `raw/` — letti dal filesystem locale, non
|
||||||
dall'indice/share — trascinabili (drag&drop, `ItemDrag` → `DoDragDrop` con
|
dall'indice/share — trascinabili (drag&drop, `ItemDrag` → `DoDragDrop` con
|
||||||
`DataFormats.FileDrop`) direttamente su Creo o Esplora risorse. "Verifica completezza
|
`DataFormats.FileDrop`) direttamente su Creo o Esplora risorse, per l'esportazione
|
||||||
assiemi" (ricorsivo sui percorsi originali in indice, non su `raw/`) e "Crea cartella
|
STEP con Creo Distributed Batch. "Verifica completezza assiemi" controlla
|
||||||
step_finali": solo per i codici della distinta importata dal CSV (non i
|
ricorsivamente (sui percorsi originali in indice, non su `raw/`) se tutti i
|
||||||
sotto-componenti di fase 4, che servono solo a completare `raw/`) cerca in `step/` il
|
sotto-componenti di ogni assieme della distinta sono nell'indice.
|
||||||
file `<codice>.stp` e lo copia in `step_finali/` se lo trova. Per i mancanti distingue,
|
|
||||||
incrociando l'indice CAD, `EsitoStep.StepMancante` (il CAD c'è, manca solo
|
|
||||||
l'esportazione STEP) da `ComponenteNonTrovato` (il componente non è nemmeno
|
|
||||||
nell'indice) — vedi `ReportStepForm`.
|
|
||||||
- **Indexer.cs** — logica di scansione del disco e scrittura/aggiornamento del DB
|
- **Indexer.cs** — logica di scansione del disco e scrittura/aggiornamento del DB
|
||||||
SQLite (`Indexer.ScanAsync`). Cammina tutte le cartelle di primo livello trovate sotto
|
SQLite (`Indexer.ScanAsync`). Cammina tutte le cartelle di primo livello trovate sotto
|
||||||
la radice (scoperte dinamicamente con `Directory.GetDirectories`, non un elenco fisso)
|
la radice (scoperte dinamicamente con `Directory.GetDirectories`, non un elenco fisso)
|
||||||
|
|||||||
+13
-104
@@ -9,7 +9,6 @@ public partial class Form1 : Form
|
|||||||
private readonly Button _btnAggiorna = new();
|
private readonly Button _btnAggiorna = new();
|
||||||
private readonly Button _btnCreaRaw = new();
|
private readonly Button _btnCreaRaw = new();
|
||||||
private readonly Button _btnTrovaPrt = new();
|
private readonly Button _btnTrovaPrt = new();
|
||||||
private readonly Button _btnReport = new();
|
|
||||||
private readonly Button _btnVerifica = new();
|
private readonly Button _btnVerifica = new();
|
||||||
private readonly Button _btnCompletezza = new();
|
private readonly Button _btnCompletezza = new();
|
||||||
private readonly ListView _lstAnteprimaAsm = new();
|
private readonly ListView _lstAnteprimaAsm = new();
|
||||||
@@ -32,7 +31,7 @@ public partial class Form1 : Form
|
|||||||
"2. Importa Distinta Base",
|
"2. Importa Distinta Base",
|
||||||
"3. Crea cartella raw",
|
"3. Crea cartella raw",
|
||||||
"4. Trova componenti referenziati",
|
"4. Trova componenti referenziati",
|
||||||
"5. Verifica completezza e STEP",
|
"5. Verifica completezza",
|
||||||
};
|
};
|
||||||
private readonly Panel[] _panelFasi = new Panel[NomiFasi.Length];
|
private readonly Panel[] _panelFasi = new Panel[NomiFasi.Length];
|
||||||
private readonly Panel _faseContainer = new() { Dock = DockStyle.Fill };
|
private readonly Panel _faseContainer = new() { Dock = DockStyle.Fill };
|
||||||
@@ -282,9 +281,10 @@ public partial class Form1 : Form
|
|||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
ForeColor = SystemColors.GrayText,
|
ForeColor = SystemColors.GrayText,
|
||||||
Margin = new Padding(0, 20, 0, 4),
|
Margin = new Padding(0, 20, 0, 4),
|
||||||
Text = "Cartella di lavoro: qui vengono scritti il CSV della distinta e le "
|
Text = "Cartella di lavoro: qui vengono scritti il CSV della distinta e la "
|
||||||
+ "cartelle 'raw', 'step' e 'step_finali'. Proposta automaticamente "
|
+ "cartella 'raw' (gli STEP esportati con Creo vanno invece in 'step', "
|
||||||
+ "(ricordata da un avvio all'altro), modificabile con 'Cambia cartella...'.",
|
+ "dentro la stessa cartella). Proposta automaticamente (ricordata da un "
|
||||||
|
+ "avvio all'altro), modificabile con 'Cambia cartella...'.",
|
||||||
};
|
};
|
||||||
contenuto.Controls.Add(lblIstruzioniCartella);
|
contenuto.Controls.Add(lblIstruzioniCartella);
|
||||||
|
|
||||||
@@ -530,35 +530,9 @@ public partial class Form1 : Form
|
|||||||
};
|
};
|
||||||
top.Controls.Add(lblAnteprimaAsm);
|
top.Controls.Add(lblAnteprimaAsm);
|
||||||
|
|
||||||
var bottom = new TableLayoutPanel
|
|
||||||
{
|
|
||||||
Dock = DockStyle.Bottom,
|
|
||||||
AutoSize = true,
|
|
||||||
AutoSizeMode = AutoSizeMode.GrowAndShrink,
|
|
||||||
ColumnCount = 1,
|
|
||||||
};
|
|
||||||
bottom.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100));
|
|
||||||
|
|
||||||
var lblIstruzioniStep = new Label
|
|
||||||
{
|
|
||||||
Dock = DockStyle.Top,
|
|
||||||
AutoSize = true,
|
|
||||||
ForeColor = SystemColors.GrayText,
|
|
||||||
Margin = new Padding(12, 0, 0, 8),
|
|
||||||
Text = "Dopo aver esportato gli STEP con Creo, premi qui per confrontare i componenti "
|
|
||||||
+ "della distinta (e i sotto-componenti trovati in fase 4) con i file .stp presenti "
|
|
||||||
+ "in 'step', copiare quelli trovati in 'step_finali' e vedere quali mancano ancora.",
|
|
||||||
};
|
|
||||||
bottom.Controls.Add(lblIstruzioniStep);
|
|
||||||
|
|
||||||
_btnReport.Text = "Crea cartella step_finali";
|
|
||||||
UiStile.Secondario(_btnReport);
|
|
||||||
_btnReport.Click += (_, _) => GeneraReportStep();
|
|
||||||
bottom.Controls.Add(_btnReport);
|
|
||||||
|
|
||||||
// Dock=Fill invece di una Size fissa: la lista occupa tutto lo spazio verticale
|
// Dock=Fill invece di una Size fissa: la lista occupa tutto lo spazio verticale
|
||||||
// rimasto tra le istruzioni sopra e sotto, così si vedono più file .asm senza scroll
|
// rimasto sotto le istruzioni, così si vedono più file .asm senza scroll anche a
|
||||||
// anche a finestra ingrandita, invece dei ~160px fissi di prima.
|
// finestra ingrandita, invece dei ~160px fissi di prima.
|
||||||
_lstAnteprimaAsm.View = View.LargeIcon;
|
_lstAnteprimaAsm.View = View.LargeIcon;
|
||||||
_lstAnteprimaAsm.MultiSelect = true;
|
_lstAnteprimaAsm.MultiSelect = true;
|
||||||
_lstAnteprimaAsm.LargeImageList = new ImageList { ImageSize = new Size(32, 32) };
|
_lstAnteprimaAsm.LargeImageList = new ImageList { ImageSize = new Size(32, 32) };
|
||||||
@@ -575,7 +549,6 @@ public partial class Form1 : Form
|
|||||||
};
|
};
|
||||||
|
|
||||||
panel.Controls.Add(_lstAnteprimaAsm);
|
panel.Controls.Add(_lstAnteprimaAsm);
|
||||||
panel.Controls.Add(bottom);
|
|
||||||
panel.Controls.Add(top);
|
panel.Controls.Add(top);
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
@@ -675,82 +648,18 @@ public partial class Form1 : Form
|
|||||||
AggiornaStatoAvanti();
|
AggiornaStatoAvanti();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Confronta i componenti della distinta importata con i file .stp presenti nella
|
/// <summary>Svuota in un colpo solo le cartelle "raw" e "step" nella cartella di lavoro,
|
||||||
/// cartella "step" (esportati manualmente con Creo Distributed Batch), per dire quali sono
|
/// previa un'unica conferma. Non tocca l'indice CAD: solo le copie locali generate dalla
|
||||||
/// già stati realizzati e quali mancano ancora.</summary>
|
/// pipeline.</summary>
|
||||||
private void GeneraReportStep()
|
|
||||||
{
|
|
||||||
if (_righeCorrenti is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
string radice = _cartellaLavoro!;
|
|
||||||
var cartellaStep = Path.Combine(radice, "step");
|
|
||||||
if (!Directory.Exists(cartellaStep))
|
|
||||||
{
|
|
||||||
ImpostaStatoImport($"Cartella 'step' non trovata in {cartellaStep}.", Color.DarkRed);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var descrizioni = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
foreach (var r in _righeCorrenti)
|
|
||||||
descrizioni[r.Componente] = r.Descrizione;
|
|
||||||
|
|
||||||
// Solo i componenti della distinta importata dal CSV: i sotto-componenti trovati in
|
|
||||||
// fase 4 (_componentiRisolti) servono a completare "raw", non entrano nello STEP finale.
|
|
||||||
var tuttiICodici = _righeCorrenti.Select(r => r.Componente)
|
|
||||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// Per i codici senza STEP, distingue "il CAD c'è ma lo STEP non è stato esportato" da
|
|
||||||
// "il componente non è nemmeno nell'indice CAD" (riusa la verifica già fatta in fase 2/3
|
|
||||||
// se disponibile, altrimenti la rifà).
|
|
||||||
var cadTrovati = _ultimaVerifica ?? TrovaPercorsiCad(tuttiICodici);
|
|
||||||
|
|
||||||
var cartellaStepFinali = Path.Combine(radice, "step_finali");
|
|
||||||
Directory.CreateDirectory(cartellaStepFinali);
|
|
||||||
|
|
||||||
var righeReport = new List<(string Componente, string Descrizione, EsitoStep Esito)>();
|
|
||||||
foreach (var codice in tuttiICodici)
|
|
||||||
{
|
|
||||||
var percorsoStp = Path.Combine(cartellaStep, codice + ".stp");
|
|
||||||
EsitoStep esito;
|
|
||||||
if (File.Exists(percorsoStp))
|
|
||||||
{
|
|
||||||
File.Copy(percorsoStp, Path.Combine(cartellaStepFinali, codice + ".stp"), overwrite: true);
|
|
||||||
esito = EsitoStep.Creato;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
esito = cadTrovati.ContainsKey(codice) ? EsitoStep.StepMancante : EsitoStep.ComponenteNonTrovato;
|
|
||||||
}
|
|
||||||
righeReport.Add((codice, descrizioni.GetValueOrDefault(codice, ""), esito));
|
|
||||||
}
|
|
||||||
int creati = righeReport.Count(r => r.Esito == EsitoStep.Creato);
|
|
||||||
int stepMancanti = righeReport.Count(r => r.Esito == EsitoStep.StepMancante);
|
|
||||||
int nonTrovati = righeReport.Count(r => r.Esito == EsitoStep.ComponenteNonTrovato);
|
|
||||||
|
|
||||||
ImpostaStatoImport(
|
|
||||||
$"STEP finali: {creati} copiati, {stepMancanti} da esportare (CAD presente), "
|
|
||||||
+ $"{nonTrovati} componenti non nell'indice, su {righeReport.Count} totali. "
|
|
||||||
+ $"Cartella: {cartellaStepFinali}.",
|
|
||||||
Color.DarkGreen);
|
|
||||||
|
|
||||||
using var dialog = new ReportStepForm(righeReport, cartellaStepFinali);
|
|
||||||
dialog.ShowDialog(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Svuota in un colpo solo le cartelle "raw", "step" e "step_finali" nella cartella
|
|
||||||
/// di lavoro, previa un'unica conferma. Non tocca l'indice CAD: solo le copie locali
|
|
||||||
/// generate dalla pipeline.</summary>
|
|
||||||
private void PulisciRawEStep()
|
private void PulisciRawEStep()
|
||||||
{
|
{
|
||||||
string radice = _cartellaLavoro!;
|
string radice = _cartellaLavoro!;
|
||||||
var cartelle = new[] { Path.Combine(radice, "raw"), Path.Combine(radice, "step"), Path.Combine(radice, "step_finali") }
|
var cartelle = new[] { Path.Combine(radice, "raw"), Path.Combine(radice, "step") }
|
||||||
.Where(Directory.Exists)
|
.Where(Directory.Exists)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (cartelle.Count == 0)
|
if (cartelle.Count == 0)
|
||||||
{
|
{
|
||||||
ImpostaStatoImport($"Nessuna cartella 'raw', 'step' o 'step_finali' trovata in {radice}.", Color.DarkRed);
|
ImpostaStatoImport($"Nessuna cartella 'raw' o 'step' trovata in {radice}.", Color.DarkRed);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1081,7 +990,7 @@ public partial class Form1 : Form
|
|||||||
{
|
{
|
||||||
using var dialog = new FolderBrowserDialog
|
using var dialog = new FolderBrowserDialog
|
||||||
{
|
{
|
||||||
Description = "Seleziona la cartella di lavoro (CSV, raw, step, step_finali)",
|
Description = "Seleziona la cartella di lavoro (CSV, raw, step)",
|
||||||
SelectedPath = _cartellaLavoro ?? string.Empty,
|
SelectedPath = _cartellaLavoro ?? string.Empty,
|
||||||
};
|
};
|
||||||
if (dialog.ShowDialog(this) != DialogResult.OK)
|
if (dialog.ShowDialog(this) != DialogResult.OK)
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
namespace PrepStep;
|
|
||||||
|
|
||||||
public enum EsitoStep
|
|
||||||
{
|
|
||||||
/// <summary>File .stp trovato in "step" e copiato in "step_finali".</summary>
|
|
||||||
Creato,
|
|
||||||
/// <summary>Il componente è nell'indice CAD (asm/prt trovato), ma nessuno STEP esportato.</summary>
|
|
||||||
StepMancante,
|
|
||||||
/// <summary>Il componente non è nemmeno nell'indice CAD.</summary>
|
|
||||||
ComponenteNonTrovato,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Mostra, per ogni componente della distinta base, se lo STEP corrispondente è stato
|
|
||||||
/// trovato in "step" e copiato in "step_finali", se manca solo lo STEP (il CAD sorgente c'è,
|
|
||||||
/// ma non è ancora stato esportato) o se manca anche il CAD sorgente nell'indice.</summary>
|
|
||||||
public class ReportStepForm : Form
|
|
||||||
{
|
|
||||||
public ReportStepForm(List<(string Componente, string Descrizione, EsitoStep Esito)> righe, string cartellaStepFinali)
|
|
||||||
{
|
|
||||||
int creati = righe.Count(r => r.Esito == EsitoStep.Creato);
|
|
||||||
int stepMancanti = righe.Count(r => r.Esito == EsitoStep.StepMancante);
|
|
||||||
int nonTrovati = righe.Count(r => r.Esito == EsitoStep.ComponenteNonTrovato);
|
|
||||||
|
|
||||||
Text = "Report STEP finali";
|
|
||||||
ClientSize = new Size(720, 440);
|
|
||||||
StartPosition = FormStartPosition.CenterParent;
|
|
||||||
Font = new Font("Segoe UI", 9.5f);
|
|
||||||
|
|
||||||
var lblInfo = new Label
|
|
||||||
{
|
|
||||||
Dock = DockStyle.Top,
|
|
||||||
AutoSize = true,
|
|
||||||
Padding = new Padding(12, 8, 12, 8),
|
|
||||||
Text = $"{creati} copiati, {stepMancanti} da esportare (CAD presente), "
|
|
||||||
+ $"{nonTrovati} non nell'indice, su {righe.Count} totali. In \"{cartellaStepFinali}\".",
|
|
||||||
};
|
|
||||||
|
|
||||||
var grid = new DataGridView
|
|
||||||
{
|
|
||||||
Dock = DockStyle.Fill,
|
|
||||||
ReadOnly = true,
|
|
||||||
AllowUserToAddRows = false,
|
|
||||||
AllowUserToDeleteRows = false,
|
|
||||||
RowHeadersVisible = false,
|
|
||||||
SelectionMode = DataGridViewSelectionMode.FullRowSelect,
|
|
||||||
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
|
|
||||||
};
|
|
||||||
grid.Columns.Add("componente", "Componente");
|
|
||||||
grid.Columns.Add("descrizione", "Descrizione");
|
|
||||||
grid.Columns.Add("step", "STEP");
|
|
||||||
grid.Columns["componente"]!.FillWeight = 20;
|
|
||||||
grid.Columns["descrizione"]!.FillWeight = 55;
|
|
||||||
grid.Columns["step"]!.FillWeight = 25;
|
|
||||||
|
|
||||||
foreach (var (componente, descrizione, esito) in righe.OrderBy(r => r.Esito).ThenBy(r => r.Componente))
|
|
||||||
{
|
|
||||||
var (testo, colore) = esito switch
|
|
||||||
{
|
|
||||||
EsitoStep.Creato => ("Creato", Color.DarkGreen),
|
|
||||||
EsitoStep.StepMancante => ("Da esportare (CAD presente)", Color.DarkOrange),
|
|
||||||
_ => ("Componente non trovato nel server", Color.DarkRed),
|
|
||||||
};
|
|
||||||
int i = grid.Rows.Add(componente, descrizione, testo);
|
|
||||||
grid.Rows[i].DefaultCellStyle.ForeColor = colore;
|
|
||||||
}
|
|
||||||
|
|
||||||
var btnApriCartella = new Button { Text = "Apri cartella step_finali", Dock = DockStyle.Bottom, Height = 34 };
|
|
||||||
UiStile.Secondario(btnApriCartella);
|
|
||||||
btnApriCartella.Click += (_, _) =>
|
|
||||||
{
|
|
||||||
try { Process.Start("explorer.exe", cartellaStepFinali); }
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show(this, $"Impossibile aprire Esplora risorse:\n{ex.Message}", "Errore",
|
|
||||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Controls.Add(grid);
|
|
||||||
Controls.Add(lblInfo);
|
|
||||||
Controls.Add(btnApriCartella);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,9 +14,10 @@ passaggio, non lo sostituisce.
|
|||||||
esistente con **Apri DB...** o generarne uno nuovo con **Aggiorna
|
esistente con **Apri DB...** o generarne uno nuovo con **Aggiorna
|
||||||
indice**, che scansiona il disco (di default `X:\`, tutte le cartelle di primo
|
indice**, che scansiona il disco (di default `X:\`, tutte le cartelle di primo
|
||||||
livello che trova) e indicizza tutti i file. In questa fase si vede/cambia anche
|
livello che trova) e indicizza tutti i file. In questa fase si vede/cambia anche
|
||||||
la **cartella di lavoro**: dove finiscono il CSV e le cartelle `raw/`, `step/`,
|
la **cartella di lavoro**: dove finiscono il CSV e la cartella `raw/` (gli STEP
|
||||||
`step_finali/`. Proposta automaticamente (ricordata da un avvio all'altro),
|
esportati con Creo vanno in `step/`, dentro la stessa cartella). Proposta
|
||||||
modificabile con **Cambia cartella...**.
|
automaticamente (ricordata da un avvio all'altro), modificabile con
|
||||||
|
**Cambia cartella...**.
|
||||||
2. **Importa Distinta Base** — trascina (o scegli da file) l'estrazione
|
2. **Importa Distinta Base** — trascina (o scegli da file) l'estrazione
|
||||||
`.xls`/`.xml` del gestionale (foglio "Distinta Base", colonne
|
`.xls`/`.xml` del gestionale (foglio "Distinta Base", colonne
|
||||||
Componente/Descrizione): viene generato un CSV nella cartella di lavoro, con
|
Componente/Descrizione): viene generato un CSV nella cartella di lavoro, con
|
||||||
@@ -30,10 +31,10 @@ passaggio, non lo sostituisce.
|
|||||||
4. **Trova componenti referenziati** — legge i metadati dei file `.asm` in
|
4. **Trova componenti referenziati** — legge i metadati dei file `.asm` in
|
||||||
`raw/` per trovare ricorsivamente i sotto-assiemi/parti che li
|
`raw/` per trovare ricorsivamente i sotto-assiemi/parti che li
|
||||||
compongono, copiandoli a loro volta in `raw/`.
|
compongono, copiandoli a loro volta in `raw/`.
|
||||||
5. **Verifica completezza assiemi** / **Report STEP realizzati** — confronta
|
5. **Verifica completezza assiemi** — confronta la distinta con l'indice per
|
||||||
la distinta con l'indice (per capire se manca qualche sotto-componente)
|
capire se manca qualche sotto-componente, e mostra i file `.asm` della
|
||||||
e con la cartella `step/` (per capire quali STEP sono già stati
|
distinta trascinabili su Creo/Esplora risorse per l'esportazione STEP con
|
||||||
realizzati).
|
Creo Distributed Batch.
|
||||||
|
|
||||||
## Requisiti
|
## Requisiti
|
||||||
|
|
||||||
|
|||||||
+9
-11
@@ -12,15 +12,16 @@ copia in `raw/` vedi `docs/copia-raw-parallela.md`.
|
|||||||
Un solo eseguibile WinForms (nessuna CLI, nessun processo esterno): indicizza i file CAD di
|
Un solo eseguibile WinForms (nessuna CLI, nessun processo esterno): indicizza i file CAD di
|
||||||
una share di rete in un DB SQLite locale, poi guida l'utente in un wizard a 5 fasi che, a
|
una share di rete in un DB SQLite locale, poi guida l'utente in un wizard a 5 fasi che, a
|
||||||
partire da una distinta base esportata dal gestionale, raccoglie in locale (`raw/`) tutti i
|
partire da una distinta base esportata dal gestionale, raccoglie in locale (`raw/`) tutti i
|
||||||
file CAD dei componenti e dei loro sotto-assiemi, e verifica/raccoglie gli STEP corrispondenti
|
file CAD dei componenti e dei loro sotto-assiemi e verifica che l'indice li copra, come
|
||||||
(`step_finali/`).
|
pre-process prima dell'esportazione STEP con Creo Distributed Batch (manuale, fuori
|
||||||
|
dall'app: i file esportati finiscono in `step/`, dentro la cartella di lavoro).
|
||||||
|
|
||||||
```
|
```
|
||||||
Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati dall'indice)
|
Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati dall'indice)
|
||||||
│
|
│
|
||||||
scansione .asm ─────┘ (sotto-assiemi/parti mancanti)
|
scansione .asm ─────┘ (sotto-assiemi/parti mancanti)
|
||||||
│
|
│
|
||||||
step/ (esportati a mano da Creo) → step_finali/ (solo i codici distinta)
|
drag&drop .asm su Creo → Distributed Batch → step/ (esportazione manuale)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Entry point
|
## Entry point
|
||||||
@@ -44,7 +45,7 @@ Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati
|
|||||||
| 2 | Importa Distinta Base | selezione file → `ImportaDistinta` → `DistintaBaseImporter.ConvertiInCsv` | Xls/Xml gestionale → CSV componente;descrizione, scritto nella 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 |
|
| 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/` con `AssemblyComponentScanner`, risolve ricorsivamente sotto-assiemi/parti nell'indice, li copia anch'essi in `raw/` |
|
| 4 | Trova componenti referenziati | "Trova componenti referenziati" → `TrovaPrtReferenziati` → `RisolviAlberoComponenti` | Legge i `.asm` in `raw/` con `AssemblyComponentScanner`, risolve ricorsivamente sotto-assiemi/parti nell'indice, li copia anch'essi in `raw/` |
|
||||||
| 5 | Verifica completezza e STEP | "Verifica completezza assiemi" → `VerificaCompletezzaAssiemi`; "Crea cartella step_finali" → `GeneraReportStep` | Completezza ricorsiva sui percorsi in indice; confronto con `step/` → `step_finali/` (entrambe dentro la cartella di lavoro). All'ingresso nella fase, `AggiornaAnteprimaAsm` mostra le icone trascinabili dei `.asm` della distinta già in `raw/` |
|
| 5 | Verifica completezza | "Verifica completezza assiemi" → `VerificaCompletezzaAssiemi` | Completezza ricorsiva sui percorsi in indice. All'ingresso nella fase, `AggiornaAnteprimaAsm` mostra le icone trascinabili dei `.asm` della distinta già in `raw/`, da trascinare su Creo per l'esportazione STEP (Distributed Batch) |
|
||||||
|
|
||||||
Stato condiviso tra le fasi (campi privati di `Form1`): `_dbPath`, `_cartellaLavoro`,
|
Stato condiviso tra le fasi (campi privati di `Form1`): `_dbPath`, `_cartellaLavoro`,
|
||||||
`_percorsoInputCorrente`, `_righeCorrenti` (righe del CSV), `_ultimaVerifica` (cache percorsi
|
`_percorsoInputCorrente`, `_righeCorrenti` (righe del CSV), `_ultimaVerifica` (cache percorsi
|
||||||
@@ -56,8 +57,8 @@ Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati
|
|||||||
componenti sia da `AssemblyComponentScanner` per validare i token generici).
|
componenti sia da `AssemblyComponentScanner` per validare i token generici).
|
||||||
- `CopiaFileTrovati` — copia (in parallelo, grado 6) i file trovati in `raw/`, saltando
|
- `CopiaFileTrovati` — copia (in parallelo, grado 6) i file trovati in `raw/`, saltando
|
||||||
silenziosamente quelli irraggiungibili (share offline/permessi).
|
silenziosamente quelli irraggiungibili (share offline/permessi).
|
||||||
- `PulisciRawEStep` — svuota `raw/`, `step/`, `step_finali/` nella cartella di lavoro
|
- `PulisciRawEStep` — svuota `raw/` e `step/` nella cartella di lavoro (manutenzione,
|
||||||
(manutenzione, richiede conferma).
|
richiede conferma).
|
||||||
- `InizializzaDatabase` / `ScegliDatabase` — localizzazione del DB (ultimo usato, salvato in
|
- `InizializzaDatabase` / `ScegliDatabase` — localizzazione del DB (ultimo usato, salvato in
|
||||||
`%AppData%/PrepStep/ultimo_db.txt`, o `cad_index.db` accanto all'eseguibile).
|
`%AppData%/PrepStep/ultimo_db.txt`, o `cad_index.db` accanto all'eseguibile).
|
||||||
- `InizializzaCartellaLavoro` / `ScegliCartellaLavoro` — stesso pattern per la cartella di
|
- `InizializzaCartellaLavoro` / `ScegliCartellaLavoro` — stesso pattern per la cartella di
|
||||||
@@ -126,9 +127,6 @@ Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati
|
|||||||
positivi della scansione `.asm`).
|
positivi della scansione `.asm`).
|
||||||
- **ReportCompletezzaForm.cs** — per ogni assieme della distinta, se tutti i suoi componenti
|
- **ReportCompletezzaForm.cs** — per ogni assieme della distinta, se tutti i suoi componenti
|
||||||
(ricorsivamente fino ai PRT) sono nell'indice (✓/✗/? per "non trovato").
|
(ricorsivamente fino ai PRT) sono nell'indice (✓/✗/? per "non trovato").
|
||||||
- **ReportStepForm.cs** — per ogni componente della distinta, `EsitoStep`: `Creato` (STEP
|
|
||||||
trovato e copiato), `StepMancante` (CAD in indice ma STEP non esportato),
|
|
||||||
`ComponenteNonTrovato` (nemmeno il CAD è in indice).
|
|
||||||
|
|
||||||
## Persistenza
|
## Persistenza
|
||||||
|
|
||||||
@@ -140,8 +138,8 @@ Distinta (.xls/.xml) → CSV (componente;descrizione) → raw/ (CAD copiati
|
|||||||
(stesso meccanismo del DB sopra), proposta di default `AppContext.BaseDirectory` la prima
|
(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
|
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
|
valle ci finiscono dentro: il CSV della distinta, `raw/` (CAD dei componenti e
|
||||||
sotto-componenti), `step/` (STEP esportati a mano da Creo, input), `step_finali/` (STEP dei
|
sotto-componenti); `step/` non è scritta dall'app ma è dove l'utente esporta gli STEP a
|
||||||
soli codici della distinta, output).
|
mano con Creo Distributed Batch, a partire dai file trascinati da `raw/` in fase 5.
|
||||||
|
|
||||||
## Script standalone (`scripts/`)
|
## Script standalone (`scripts/`)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user