Questo file contiene le informazioni per la generazione della distinta: i campi da visualizzare, gli attributi chiave per la somma delle quantità, ecc…

La sua modifica è sconsigliata, in quanto l'interfaccia del comando "Configuratore Distinte" fornisce già uno strumento completo ed intuitivo per la personalizzazione delle distinte.

Di seguito vengono definiti i parametri per la generazione di una distinta a Livelli gerarchici e una distinta Base, entrambe basate sul campo chiave CODICE:

[bom.idx]
bom1=Distinta Livelli da Codice
bom2=Distinta Base da Codice
[bom1]
group=$lev,codice
sum=qta
attrib=-name $lev  -prompt "Liv." -indent
attrib=-name Codice
attrib=-name Descrizione
attrib=-name qta -dval 1
[bom2]
group=codice
qtamult=1
sum=qta
attrib=-name Codice
attrib=-name Descrizione
attrib=-name qta -dval 1

Vediamo ora il significato delle voci presenti all'interno di ogni distinta, studiando la Distinta Livelli da Codice (Bom1):

group=$lev,codice

La voce group definisce uno o più campi chiave per la somma delle parti di disegno; nel nostro caso vengono sommate tutte le parti che hanno la stessa parte padre e lo stesso codice di disegno.

sum=qta

La voce sum definisce l'attributo che viene sommato dalla distinta in base ai campi chiave definiti dalla voce group.

attrib=-name $lev -prompt "Liv." -indent

La voce attrib definisce l'attributo che viene visualizzato in distinta; in questo esempio viene visualizzato il livello gerarchico della parte indentato in base alla profondità del livello.

attrib=-name Codice

In questo esempio, in distinta viene visualizzato l'attributo Codice della parte.

attrib=-name Descrizione

In questo esempio, in distinta viene visualizzato l'attributo Descrizione della parte.

attrib=-name Qta –dval 1

In questo esempio, in distinta viene visualizzato l'attributo Qta; -dval indica che se una parte ha l'attributo Qta vuoto viene considerato come valore di default 1.

All'interno del file, dopo la definizione delle distinte, troviamo una sezione luafilters che contiene i filtri applicabili ai vari tipi di distinta :

[luafilters]
Tutte_le_parti=BomFilter_AllParts
Parti_Corrente=BomFilter_PrtCorr
Parti_Commerciali=BomFilter_IsCommerc
Parti_Non_Commerciali=BomFilter_NotIsCommerc
Parti_Pallinate=BomFilter_PrtPall

Ogni definizione di filtro è rappresentato dalla chiamata ad una funzione LUA che si occupa della esecuzione materiale. Queste funzioni sono definite nella sezione successiva denominata luacode.

[luacode]
lua=local PrtIsCommerc = function(prt) return (prt:getAttr(".COMMERC") or "") == "1" end
lua=
lua=function BomFilter_AllParts(prt) return 1 end
lua=
lua=function BomFilter_IsCommerc(prt) return %PrtIsCommerc(prt) end
lua=  
lua=function BomFilter_NotIsCommerc(prt) return not %PrtIsCommerc(prt) end
lua=
lua=function BomFilter_PrtCorr(prt)
lua=    if prt:isChildOf(top_pcur()) or prt==top_pcur() then return 1 end
lua=end
lua=
lua=function BomFilter_PrtPall(prt)
lua=    local res = prt:getAttr("POS.") or ""
lua=    if res~="" then return 1 end
lua=end
lua=

Ogni funzione ritorna il valore 1 se la parte è da considerarsi ammessa all'elenco parti della distinta, ritorna nil in caso contrario. All'interno della sezione luacode è possibile trovare anche la definizione delle funzioni che permettono l'editazione degli attributi delle parti associate alla riga di distinta selezionata. Il file TOPBOM.INI è modificabile tramite un qualsiasi programma di editazione file di testo.