背景
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 件のコメント :
コメントを投稿