Eagleの部品表

Eagle CADで設計した基板の部品表を簡単に作るには、回路図画面でrun bomとすればCSVかHTMLでEagleのパーツデータを出力してくれる。ただ、問題は細かい部品型番までは分からないし、部品の説明などは後から付け足さないといけない。そもそも回路図を作っている段階で大まかな部品の仕様は頭に入っていたり、部品の型番などを調べたりしているのにそれがCADにも部品表(BOM: Bill Of Materials)にも反映できないのはなんとももどかしい。いったん外部で部品表を作ったあとに修正なんか入ると修正ミスやオペミスの可能性が高くなるので、なんとかEagle CAD上で部品情報が管理できればいいのに、と常々思っていた。

で、よく調べてみたらEagleにはVer 5からAttribute属性を部品につけられるようになっている。ここに部品の型番や特別なメモ(オーディオ用抵抗使用、とか)を書き込めるようになっている。これはこれで便利だけど、残念なのはこの情報がBOMに反映されないこと。Attributeは自由に情報を書き込めるが使い道を提供してくれない。せめて、どうにかしてAttributeの内容をBOMに出力できないか。。。

そう考えた偉人がいらっしゃいました! Embed Incさんの中の人がちょうど思っていたツールを作って公開していました。早速install_eagle.exeをダウンロードして実行。デフォルトでは c:¥embedincなるディレクトリにツール群が解凍される。このうち、eagle¥com以下すべてとeagle¥ulp¥bom.ulpをEagleのフォルダにコピーする。Eagle-5.6.0¥comなるディレクトリは元々ないのでそっくりコピーして、bom.ulpはオリジナルのものをbom_org.ulpなどとリネームしておいてからコピーすると良いだろう。

これで回路図画面からrun bomと実行すると。。。 エラーになる。。。 ulpからcomディレクトリ内のcsv_bom.exeを実行しようとしてエラーになるっぽい。どうやらcsv_bom.exeに渡しているパラメータが日本語OSでは扱えないものになっているよう。コマンドラインでごにょごにょすれば何とか実行できるので、csv_bom.exe自体はちゃんと動いているようで、出力結果のtsvファイルもExcelファイルも見事なもの。

Attribute項目が出力されているのはもちろん、ちゃんと似たような部品はグルーピングされて数量欄まで追加されている。Excelに取り込んで使えるように式を出力した項目なんかも追加されている。個人的にはあまり必要ではないけど。

パーツのグルーピングは

  1. library名
  2. device名
  3. value値
  4. package名

で重複するものをまとめているよう。まあ、ほぼこれで思い通りのまとめ方をしてくれるんだけど、唯一通常の抵抗とオーディオ用抵抗を分けたいところがあって、苦肉の策でvalueに*をつけることにした(例: 20k*)。

そして出力できるAttribute項目は決めうちで、doc¥eagle_attr.txtになーんとなく書いてある。まあ、ようするに、DESCに大まかな部品説明(例: Aluminum Electrolytic Capacitor)、PARTNUMに部品型番(例: Nichicon KZ 50V)を書いておくと良さそう。なぜ例が英語かというと、Eagleは日本語をデータとして保持することはできないようなので使えない。ここがかなりイタイところ。

さて、日本語が使えないのはいいとして、なんとかcsv_bom.exeを簡単に実行する方法はないものかと小一時間考えて、vbscriptを書いてみた。

bom.vbs (zipファイルをダウンロードして解凍して下さい)

bom.ulp本体もちょっと改造する。以下のようにコメントアウトして、//exstat = system ("run_cmline (cog)com/csv_bom " + fnam);その下に以下を追加する。string curdir; //Current directory
string lnam; //Log file name
string bnam; //Base file name
project.schematic (sch) { //open the schematic
curdir = filedir(gnam); //get current directory
bnam = filename(gnam);
}
lnam = curdir + "bom.log";
output(lnam, "wt") {
printf(fnam + "\n");
printf(curdir + "\n");
printf(bnam + "\n");
}

dlgMessageBox ("Created CSV and log file " + lnam,"ok");
を追加する。bom.ulpでcsv_bomを実行させずに、csvファイル情報をbom.logファイルに書き出す。

bom.vbsをプロジェクトのディレクトリに入れて実行すると、csv_bom.exeを実行してHTML化まで行っちゃうようにした。tsvやxlsよりもhtmlのほうが扱いやすいし、なぜかxlsファイルを出力しようとするとエラーになるし。bom.ulpからbom.vbsを実行させようとじたばたしてみたけど、どうしても実行できなかったので、仕方なくプロジェクトフォルダで手動起動することにした。

日本語が扱えないのと出力できるAttribute項目が若干貧弱であることを除けば非常に良い仕組みが出来上がった。これで回路図を作りながら部品を調べて、その内容を回路図に書き込めるようになった。Attributeの入力欄は1行で狭いけど、あらかじめHTMLタグつきで入力しておけば、BOM処理をした最後のHTMLファイルではとても見栄えがある。

VBSで日本語注釈をつけられるように拡張することも可能だけど、とりあえずこの形でしばらく使ってみよう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です