davideandClaude Sonnet 5 9660c4883d Refine .asm component extraction: batch DB queries, wider suffix regex, placement check
- Batch the DB lookup per file instead of per code in scripts/ExtractCreoStrings.cs:
  files_ultima_versione is an unmaterialized view, so each query rescanned the whole
  files table (~230ms) - batching cuts a multi-minute BFS to seconds.
- Widen the code regex to accept a revision letter and a "_..." suffix together
  (e.g. "9284200366A_C01"), and purely numeric "_NNNN" suffixes (e.g. dimensional
  variants like "2702220182_8188"), not just letter+digits.
- Require bare digit-only candidates to also appear inside a real
  "Componente ID N (...)"/"Component id N (...)" placement, filtering out
  incidental references to a containing assembly's own code.
- scripts/ExtractCreoStrings.cs now reports only the direct references of the given
  .asm (one level, matching Creo's own tree for that file) instead of recursing into
  sub-assemblies.
- Port the regex and placement-check refinements to the production
  AssemblyComponentScanner.cs used by the app's "Trova componenti referenziati" and
  "Verifica completezza" phases.
- Document the new false-positive categories (parent/container self-reference,
  suppressed/removed components with residual placement, placement missing
  suffix/bracket detail) in docs/formato-asm.md, generalized beyond the specific
  assemblies used to find them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:59:23 +02:00

CadSearchGui

App Windows Forms (.NET 10) 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.

Funzionalità

  1. 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 default X:\, tutte le cartelle di primo livello che trova) e indicizza tutti i file.
  2. Importa Distinta Base — trascina (o scegli da file) l'estrazione .xls/.xml del gestionale (foglio "Distinta Base", colonne Componente/Descrizione): viene generato un CSV 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 sotto l'assieme, non l'assieme stesso).
  3. 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/ accanto al file di distinta originale.
  4. Trova componenti referenziati — legge i metadati dei file .asm in raw/ per trovare ricorsivamente i sotto-assiemi/parti che li compongono, copiandoli a loro volta in raw/.
  5. Verifica completezza assiemi / Report STEP realizzati — confronta la distinta con l'indice (per capire se manca qualche sotto-componente) e con la cartella step/ (per capire quali STEP sono già stati realizzati).

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 CadSearchGui
dotnet build -c Release

Avvio

Da sorgente:

cd CadSearchGui
dotnet run -c Release

Oppure l'eseguibile già compilato:

cd CadSearchGui\bin\Release\net10.0-windows
.\CadSearchGui.exe

Pubblicazione (eseguibile standalone)

Genera un .exe self-contained per Windows x64, senza bisogno del runtime .NET installato sulla macchina di destinazione:

cd CadSearchGui
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish

L'eseguibile risultante è in CadSearchGui\publish\CadSearchGui.exe.

Struttura del progetto

Tutto il codice è in CadSearchGui/ (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

CadSearchGui.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 CadSearchGui.Tests
dotnet test
S
Description
Tool per preparazione cartella compatibile con Creo Distribuited Batch per automazioni
Readme
1.3 MiB
0 Stars 1 Watchers 0 Forks
2026-09-23 08:53:36 +02:00
Languages
C# 98.5%
Inno Setup 1.5%