Normalizza il suffisso #AF di ConfigName; documenta il limite sulle family table di assiemi
Test end-to-end su un albero reale (9284218024b.asm, confrontato con la sua BOM Creo di riferimento tramite scripts/CreoBom.cs) oltre gli 8 campioni usati per il reverse engineering iniziale. Trovato: i componenti creati da un pattern/array feature hanno un ConfigName con suffisso "<codice>#AF<n>" (n = indice nel pattern), non un'istanza di family table vera - la BOM di Creo lo ignora e unisce le occorrenze duplicate. AsmRecordReader ora rimuove questo suffisso prima di usare il nome istanza. Trovato ma non risolto: un intero ASSIEME (non solo le parti normalizzate) puo' avere una family table, risolta da Creo con un meccanismo diverso da ConfigName (non decodificato). AsmRecordReader non lo rileva e non lancia eccezione in questo caso: il fallback automatico di Form1 non scatta, e il risultato puo' essere silenziosamente incompleto. Documentato come limite noto in formato-asm-record.md e in CLAUDE.md - nessun fix applicato finche' il meccanismo non e' meglio compreso. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cce377a091
commit
28a72c80b2
4 files changed
+70
-3
No files matched your search
@@ -68,6 +68,25 @@ public class AsmRecordReaderTests
|
||||
Assert.Equal("UNI6592", membri[0].Generico);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Rimuove_il_suffisso_array_feature_dal_nome_istanza()
|
||||
{
|
||||
// Regressione: caso reale 9244250136.asm -> ConfigName con suffisso "#AF<n>" per
|
||||
// componenti creati da un pattern/array feature (id 45 e id 78, entrambi variante
|
||||
// "_C03" con suffisso diverso "#AF0"/"#AF1"): non un'istanza di family table vera,
|
||||
// la BOM di Creo mostra il codice pulito e unisce le occorrenze duplicate.
|
||||
byte[] dati = Asm(2, Bytes(
|
||||
Membro(45, 2, "9244250136_C03"),
|
||||
Membro(78, 2, "9244250136_C03")),
|
||||
extra: Bytes(
|
||||
ConfigName("9244250136_C03#AF0", idMembro: 45),
|
||||
ConfigName("9244250136_C03#AF1", idMembro: 78)));
|
||||
|
||||
var membri = AsmRecordReader.LeggiMembri(dati);
|
||||
|
||||
Assert.All(membri, m => Assert.Equal("9244250136_C03", m.Nome));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Componente_senza_ConfigName_non_e_toccato_da_istanze_di_altri_membri()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user