KiCadとBOM(マルツに発注)

マルツは、日本にある電子部品の販売店です。彼らは、以下のようなフォーマットのBOMファイルを受け入れます。

どうも、彼らは、Shift_JISエンコーディングされた日本語しか理解しないようです。これは、多少残念なことですが、基本的な考え方は、常に同じです。

# coding: utf-8
import xml.etree.ElementTree as ET
import re

print('"型番","メーカー名","数量"')

tree = ET.parse('RF-ATT.xml')
root = tree.getroot()

regex = r'R[0-9]+'

for node in root.iter('comp'):
	name = node.attrib.get('ref')
	if re.search(regex, name):
		for value in node.iter('value'):
			string = '1/4WキンピR '+value.text+'Ω,KOA,1'
			print(string)

これはpythonのプログラムで、KiCadから出力されるXMLファイル(中間ネットリスト)を、マルツにアップロード可能なBOMファイルに変換します。

% python xml2bom.py | nkf -s > BOM.csv
$ cat BOM.csv | nkf -w
"型番","メーカー名","数量"
1/4WキンピR 1.8KΩ,KOA,1
1/4WキンピR 1.8KΩ,KOA,1
1/4WキンピR 3Ω,KOA,1
1/4WキンピR 910Ω,KOA,1
1/4WキンピR 910Ω,KOA,1
1/4WキンピR 5.6Ω,KOA,1
1/4WキンピR 300Ω,KOA,1
1/4WキンピR 300Ω,KOA,1
1/4WキンピR 18Ω,KOA,1
1/4WキンピR 220Ω,KOA,1
1/4WキンピR 220Ω,KOA,1
1/4WキンピR 24Ω,KOA,1
1/4WキンピR 150Ω,KOA,1
1/4WキンピR 150Ω,KOA,1
1/4WキンピR 39Ω,KOA,1
1/4WキンピR 100Ω,KOA,1
1/4WキンピR 100Ω,KOA,1
1/4WキンピR 75Ω,KOA,1
1/4WキンピR 62Ω,KOA,1
1/4WキンピR 62Ω,KOA,1
1/4WキンピR 240Ω,KOA,1

このBOMファイルをアップロードすると、このようになります。

そして、あなたは今や発注を行なうことが可能です。

KiCadとBOM(部品表)

あなた自身の要求に合致した部品表ファイル、BOM (Bill Of Materials) を作ってみましょう。

最初に、あなたは中間ネットリストを、特にプラグインを用いずに出力します。

そうすれば、あなたは上の図のようなXMLファイルを得るでしょう。

# filename = xmlparse.pl
import xml.etree.ElementTree as ET
tree = ET.parse('RF-ATT.xml')
root = tree.getroot()

for value in root.iter('value'):
	print(value.text)

短いpythonのプログラムで、XMLトリーをパースしてやると、以下のような結果が得られます。

% python xmlparse.pl

Conn_Coaxial
Conn_Coaxial
SW-6P
1800
1800
3
SW-6P
910
910
5.6
SW-6P
300
300
18
SW-6P
220
220
24
SW-6P
150
150
39
SW-6P
100
100
75
SW-6P
62
62
240

シェルスクリプトを追加してやると;

% xmlparse.py | sort | uniq -c

   2 100
   2 150
   1 18
   2 1800
   2 220
   1 24
   1 240
   1 3
   2 300
   1 39
   1 5.6
   2 62
   1 75
   2 910
   2 Conn_Coaxial
   7 SW-6P

このような単純な出力でも状況によっては有用かも知れません。しかし、あなたが本当に欲しいのは、部品番号や部品名を含んだあなたの近所のお気に入りのパーツショップが理解してくれるリストです。