2018年9月17日月曜日

KiCad向けの3DオブジェクトをFreeCADのCadQueryを利用して作成する方法


背景

KiCadとは、基板を設計できるプログラムです。
FreeCADとは、3Dオブジェクトを設計できるプログラムです。
CadQuery( github, ドキュメント )とは、コードを記述して3Dオブジェクトを生成できる、3Dオブジェクト作成プログラムです。

KiCad向けに手作業で3Dオブジェクトを作ってプルリクエストをした所、CadQueryを利用するスクリプトで作成して欲しいと要求されました。
スクリプトを実行可能な状態にするまでに戸惑ったものの、動かせるようになったら少ない記述で期待する3Dオブジェクトを出力できて楽でした。
FQNやSONタイプの3Dオブジェクトを作る場合は、このスクリプトを使うのがおすすめです。

ということで、備忘録とお勧めを兼ねて、CadQueryを利用したスクリプトをFreeCADで動かし、KiCad向けの3Dオブジェクトを出力する方法を共有します。

使ったもの

Ubuntu18.04(Linux)をインストールしたPC

環境を整えればMacやWindowsでも動くとは思いますが、Ubuntu18.04で確認したことをこの記事では紹介します。

Ubuntuのダウンロードは、下記のページから行なえます。
Download Ubuntu Desktop

githubのライブラリを使えるようにしたKiCad


バージョン 5.0を利用しました。

Download | KiCad DEA

下記の記事を参考に、githubで公開しているライブラリをKiCadで利用できるようにしてください。
3Dオブジェクトの確認とコミットに必要です。

KiCad5にgithubのライブラリを紐付ける方法

CadQueryを使えるようにしたFreeCAD


バージョン 0.17を利用しました。

Install on Unix | FreeCAD

FreeCadへのCadQueryインストール方法はadQueryのドキュメントに記されているので、それを参考にインストールしてください。

Installation | CadQuery

自分は上記ドキュメントのAutomatedとTroubleshootingを実施しました。

CadQueryを利用するスクリプト集

いろいろな3DオブジェクトをCadQueryで出力できるスクリプトが下記のリポジトリで管理されています。

easyw/kicad-3d-models-in-freecad

個人のリポジトリのようですが、KiCadのpackaged3DのREADMEで紹介されているので、半分公式のような存在なのだと思います。

後で使うので、下記のようなコマンドで~/gitprojectsに配置しておきます。
sudo apt install git
mkdir ~/gitprojects
cd ~/gitprojects
git clone https://github.com/easyw/kicad-3d-models-in-freecad.git

既存の3Dオブジェクトを出力してみる

試しに動かしてみましょう。
下記のコマンドで、「QFN-28-1EP_6x6mm_Pitch0.65mm」を出力できます。
(自分の環境では、スクリプトを動かすとエラーがでて動きませんでした。このプルリクエストのように「from Gui.Command import *」をコメントアウトするか、それようの例外処理を追加すると動くようになりました。)
cd ~/gitprojects/kicad-3d-models-in-freecad/cadquery/FCAD_script_generator/QFN_packages
freecad main_generator.py QFN-28-1EP_6x6mm_Pitch0.65mm

成功すると、FreeCADで生成されたオブジェクトを確認できます。


main_generatorで生成したファイルは下記のディレクトリにあります。
ls ../_3Dmodels/Housings_DFN_QFN.3dshapes/QFN-28-1EP_6x6mm_Pitch0.65mm.*

自分で表面実装パッケージの設定を追加して3Dオブジェクトを出力してみる

VSON-10_3.0x3.0mmの追加を例に説明します。

表面実装パッケージの設定は、下記の例やこのプルリクエストのように、「cq_parameters.py」の「kicad_naming_params_qfn」に定義を追加します。
詳しい設定内容は変わるかも知れないので、コード内に含まれる他の設定やコメントを参考にしてください。
~/gitprojects/kicad-3d-models-in-freecad/cadquery/FCAD_script_generator/QFN_packages/cq_parameters.py
kicad_naming_params_qfn = {
    ..
    'VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm': Params( # 3x3mm, 10-pin VSON package, 1.0mm height
        # reference: http://rohmfs.rohm.com/en/techdata_basic/ic/package/vson010v3030_1-e.pdf
        c = 0.2,        # pin thickness, body center part height
        # K = 0.2,        # Fillet radius for pin edges
        L = 0.4,        # pin top flat part length (including fillet radius)
        fp_s = True,    # True for circular pinmark, False for square pinmark (useful for diodes)
        fp_r = 0.35,    # first pin indicator radius
        fp_d = 0.1,     # first pin indicator distance from edge
        fp_z = 0.02,    # first pin indicator depth
        ef = 0.0,       # fillet of edges  Note: bigger bytes model with fillet
        cce = 0.25,     # chamfer of the epad 1st pin corner
        D = 3.0,        # body overall length
        E = 3.0,        # body overall width
        A1 = 0.02,      # body-board separation  maui to check
        A2 = 1.0,       # body height
        b = 0.25,       # pin width
        e = 0.5,        # pin (center-to-center) distance
        m = 0.0,        # margin between pins and body
        ps = 'rounded', # pad shape
        npx = 5,        # number of pins along X axis (width)
        npy = 0,        # number of pins along y axis (length)
        epad = (2.0,1.2), # e Pad
        excluded_pins = None, # no pin excluded
        modelName = 'VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm', # modelName
        rotation = -90, # rotation if required
        dest_dir_prefix = '../Housings_SON.3dshapes/'
        ),
    ..
}

追加できたら、パッケージ名を引数にしてmain_generator.pyを実行します。
cd ~/gitprojects/kicad-3d-models-in-freecad/cadquery/FCAD_script_generator/QFN_packages
freecad main_generator.py VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm

成功すると、先ほど試しに実行したときと同様に、FreeCADで生成されたオブジェクトを確認できるようになります。


出来たファイルはは「dest_dir_prefix」 + 「modelName」にあります。
ls ../_3Dmodels/Housings_SON.3dshapes/VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm.*


3DオブジェクトをKiCadに取り込む

先ほどの手順で生成したstepファイルとwrlファイルをKiCadのpackaged3Dに配置します。
今回のオブジェクトはSONパッケージなので、下記のようにSONパッケージのディレクトリに配置しました。
cd ~/gitprojects/kicad-3d-models-in-freecad/cadquery/FCAD_script_generator/_3Dmodels/Housings_SON.3dshapes
mv VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm.step ~/gitprojects/kicad-packages3D/Package_SON.3dshapes/
mv VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm.wrl ~/gitprojects/kicad-packages3D/Package_SON.3dshapes/

配置後したらKiCadの3Dオブジェクト割り当て画面で読み込めるようになります。


まとめ

CadQueryを利用するスクリプトを通して、KiCad用の3Dオブジェクトを作成できました。

何かの参考になれば嬉しいです。

0 件のコメント :