2021年11月29日月曜日

KiCad6でpythonでpick and placeファイルを出力する


背景

KiCadとは基板を設計できるCADプログラムです。
記事を書いている時点での安定版は5系ですが、6系が開発されています。
その6系で、pythonで呼び出せる機能が(自分が出した変更要望によって)追加されたことにより、基板実装以来時に必要となるpick&placeファイルを出力できるようになりました。

備忘録を兼ねて使い方を共有します。

使ったもの

KiCad6
記事を書いている時点では6の安定版はまだ公開されていないため、5.99版を利用しました。

出力方法

PCB Editorでpythonのスクリプトコンソールを開き、PLACE_FILE_EXPORTERを通してpick & placeファイルを出力できます。
preferences -> Scripting Console で実行画面を開けます。


下記のコードでpick & placeファイルを出力できます。
(コードのペーストは不要な改行コードの混入を防ぐために「Ctrl + Shift + v」をお勧めします。)
import pcbnew
import os

b = pcbnew.GetBoard()
boardFileName = b.GetFileName()
boardDir = os.path.dirname(boardFileName)
outputDir = '%s/%s' % (boardDir, 'place')
if not os.path.isdir(outputDir):
os.mkdir(outputDir)
outputFile = '%s/%s' % (outputDir, 'all.pos')
exporter = pcbnew.PLACE_FILE_EXPORTER(b, aUnitsMM=True, aOnlySMD=False, aExcludeAllTH=False, aTopSide=True, aBottomSide=True, aFormatCSV=False, aUseAuxOrigin=False)
data = exporter.GenPositionData()
with open(outputFile, mode='w') as f:
f.write(data)

上記のコードではplaceというディレクトリを作り、その中にall.posという名前でpick & placeファイルを作ります。

exporter = pcbnew.PLACE_FILE_EXPORTER(b, aUnitsMM=True, aOnlySMD=False, aExcludeAllTH=False, aTopSide=True, aBottomSide=True, aFormatCSV=False, aUseAuxOrigin=False)
PLACE_FILE_EXPORTERの上記の設定は、下記のComponent Placement Files(File -> Fablication Outputs -> Component Placement)で出力した場合と同じ内容のファイルが生成されます。


PLACE_FILE_EXPORTERとGenerate Placement Files画面の実装は、記事を書いている時点では下記の場所です。
機能が変更されてこの記事の内容では動かない場合は、実装を参考にしてください。
(そして、良かったら書き方が変わっていることをコメントで教えていただけると嬉しいです。)

https://gitlab.com/kicad/code/kicad/-/blob/master/pcbnew/exporters/export_footprints_placefile.cpp
https://gitlab.com/kicad/code/kicad/-/blob/master/pcbnew/exporters/gen_footprints_placefile.cpp

まとめ

KiCad6を利用してpythonで基板実装時に必要なpick&placeファイルを出力できました。

0 件のコメント :