No hay un solo "mejor". Depende de sus requisitos, qué software utiliza, cuáles son las capacidades de su software existente, etc.
Uso Eagle para diseñar tableros, y hace mucho tiempo creé mi propio sistema en torno a Eagle para generar listas de materiales. Más tarde, Cadsoft sacó algunos ULP y similares para el mismo propósito, pero funcionan de manera diferente. Dado que el trabajo es mío, y bastante bien, sigo usando mi software existente.
En Eagle, uso atributos en partes para definir cosas como fabricantes, su número de parte, proveedores, sus números de parte, valores, cadena de descripción para la lista de materiales, etc. Esto funciona bien, excepto para tratar con la parte interna. Números para múltiples clientes diferentes.
Para hacer eso, tengo una serie de archivos CSV almacenados en un lugar conocido por el software BOM. Estos archivos relacionan la información de la pieza en Eagle con los números de pieza internos. Las entradas también se pueden configurar para utilizar la misma pieza almacenada para diferentes propósitos y luego agrupar el resultado en una sola línea de la lista de materiales.
Aquí está la línea de encabezado común a estos archivos CSV:
Desc,Value,Package,Subst,Inhouse Acme,Manuf,Manuf part #,Supplier,Supp part #
Tenga en cuenta el campo "Inhouse Acme". Este archivo de muestra es para el cliente de Acme y ese campo proporciona el número de pieza interno de Acme. Guardo un archivo CSV por cliente.
Cada directorio en un árbol donde guardo los archivos de Eagle puede tener un archivo de "nombre de casa". El más bajo en el árbol a un nodo de hoja particular de tales archivos proporciona el nombre de la casa. Así es como mi sistema maneja automáticamente a varios clientes, cada uno con su propio esquema de numeración de piezas.
El software BOM tiene los datos especificados para cada parte en Eagle y busca coincidencias en este archivo. Las coincidencias pueden ser por valor o definitivas. Por ejemplo, si dos partes tienen el mismo fabricante y el número de pieza del fabricante, entonces definitivamente son la misma parte. De lo contrario, si la descripción, el valor y el paquete coinciden, entonces la parte coincide con el valor.
Aquí hay un fragmento de dicho archivo:
"Capacitor, unpolarized",22pF,SMD-0805,Yes,9133053,,,,
"Capacitor, unpolarized",47pF,SMD-0805,Yes,9133052,,,,
"Capacitor, unpolarized",100pF,SMD-0805,Yes,9133055,,,,
"Capacitor, unpolarized",200pF,SMD-0805,Yes,9133056,,,,
"Capacitor, unpolarized",1nF,SMD-0805,Yes,9133058,,,,
"Capacitor, unpolarized",10nF,SMD-0805,Yes,9133061,,,Mouser,81-GRM40X103K50D
"Capacitor, unpolarized",100nF,SMD-0805,Yes,9133049,,,,
Estos son un grupo de 0805 condensadores que solo difieren en capacitancia. El valor de la capacitancia se agrega a la parte base en el esquema, y se debe ingresar de la misma manera que aquí para que coincida. Si se encuentra una coincidencia con alguno de los anteriores, se conoce el número de pieza interno. Por ejemplo, tal tope dado un valor de "1nF" en el esquema recogerá el número de parte interno 9133058.
Otra cosa útil que mi software hace es colapsar todos los usos de la misma parte interna. Aquí hay otro fragmento del archivo Acme:
"Capacitor, unpolarized",1uF 10V,SMD-0805,Yes,9133054,,,,
"Capacitor, unpolarized",1uF 25V,SMD-0805,Yes,9133054,,,,
"Capacitor, unpolarized",1uF 35V,SMD-0805,Yes,9133054,,,,
"Capacitor, unpolarized",1uF 50V,SMD-0805,Yes,9133054,,,,
"Capacitor, ceramic",1uF 50V 10% -55+100C,SMD-0805,Yes,9133054,,,,
Tenga en cuenta que estos son todos los condensadores de 1 µF 50 V en el paquete de montaje en superficie 0805. Acme decidió almacenar solo partes de 50 V, luego usarlas incluso cuando las partes de menor voltaje lo harían. Esa es una estrategia de almacenamiento muy legítima, especialmente para piezas baratas como estas.
Sin embargo, todavía quiero mostrar en el esquema que solo se necesita una parte de 10 V. En ese caso, la descripción de la parte de 10 V coincide con la primera línea y se asigna el número de parte 9133054. Como la siguiente línea tiene el mismo número de pieza interno, también coincide con esa línea, y la descripción se actualiza a "1uF 25V". Esto continúa hasta que llega a la línea inferior que se muestra, donde la descripción se actualiza a "1uF 50V 10% -55 + 100C". Eso es lo que termina en la lista de materiales para cualquiera de los condensadores listados. El esquema puede mostrar una tapa "1uF 10V" en un lugar y una tapa "1uF 35V" en otra, pero ambas se agrupan en la misma línea de la lista de materiales como "1uF 50V 10% -55 + 100C" para este cliente solo .
Si Acme alguna vez decide almacenar partes de 1 µF 35 V, esta sección del archivo se actualizará. Cuando se vuelva a ejecutar la lista de materiales, las partes de 10-35 V estarán en una línea de la lista de materiales y las partes de 50 V en otra.
Cuando uso una nueva pieza que no tienen en inventario, aparece en la lista de materiales con el número de pieza interno en blanco. Alguien me asigna un número de parte, me lo devuelve y actualizo el archivo. Después de eso, mi sistema de lista de materiales rellena automáticamente el número interno de esa parte para diseños posteriores o ejecuciones de lista de materiales.
Esto puede sonar complicado, pero realmente ha sido muy agradable de usar.