Kicadのフットプリント用3DデータをFusion360から作成する

電子工作の回路設計にKicadを利用している。Pcbnewというプリント基板エディタでは、配置したフットプリントに対して3Dデータ(VRML)を紐づけることによって、設計中の基板に実際に部品を配置すると、どんなイメージなるかを3Dプレビューする機能がある。

以下は本家(http://kicad-pcb.org)から抜粋したもの。

Kicadをインストールすると、標準のフットプリントと3Dデータがある程度用意されており、GitHubから自動ダウンロードする機能が備わっている。大量にあるが、日本ではなかなか手に入らない部品のフットプリントが多いのでイマイチ使いづらい。

https://github.com/KiCad/packages3D

おそらく回路設計のプロや上級者にとってみれば、不要な機能だとは思うが、見ていて楽しいし、モチベーションも上がる。前置きが長くなったが、備忘録としてこの3Dデータの作成手順と実際にフットプリントに紐づけてプレビューするまでの流れを、可変抵抗TSR-065を例として、備忘録として残す。

電子部品、データシートの準備

筆者の場合は、主に秋月電子通商などで部品を購入して、当サイトからデータシートを入手する。

可変抵抗TSR-065

以下は、秋月のサイトから抜粋したもの。これを作ってみる。

ソフトウェアの準備

以下のソフトウェアを使用する。いずれもフリーで入手できる。インストール方法や、一般的な使用方法は省略する。

Kicad本家の3Dデータは、Wings3Dを使って、VRMLを作成しており、一般ユーザーのブログでもよく見る。当初このアプリを使用していたが、MeshLabに変更した。

その理由は、Fusion360から曲面をポリゴン出力(STLファイル)すると、ポリゴン数がとても多くなり、1部品で1MB以上になることがあり、Gitで管理しているリポジトリがすぐに肥大化して困っていた。

形状を維持したまま、ポリゴン数を削減したいが、そういった機能がWings3Dには見当たらなかったので、その機能があるMeshLabに変更した次第である。ただ色付けがWings3Dよりも手間がかかるので、併用するのがいいかもしれない。(どちらも最終フォーマットであるVRMLが出力できる)

Fusion360でモデリング

自分が作成するときの注意するポイントは、

ピンの位置を原点として作成する(複数ある場合は1つ目)

最終的にKicad上のフットプリントと位置合わせする際、合わせやすいのと、フットプリントもピンの位置を原点として作成するのが良いと思われる。

わかりづらいが、左下の円が部品のピン断面になり、ここが原点(XY平面)になる。ラフに作図して拘束で寸法入力すれば、ずれないし簡単に目的の寸法になるのがCADの利点である。完全拘束を目指す必要はない。

Kicad上の大きさは1/10インチ単位?、Fusion360上ではミリでやる。

単位が違うが、フットプリントの3D設定パネルでスケール設定できる。また、細かい位置合わせ(特に高さ方向)などは微調整すればよいので、設計上気にしない。Fusion360では、単位を指定できるのでインチでもいいが、筆者は慣れないので、ミリでやっている。また、VRMLを作成するタイミングで、0.394倍すると、大きさが一致する。

グリッドを活用する。単位は2.54mmとする。

ピンの間隔は、ユニバーサル基板でも設計が反映しやすいように2.54mm間隔にしておく。ある程度の部品を作成したが、この単位を変更することはなさそうである。(まったく別の設計があれば別だが)

ピンの位置と外形はなるべく精度よく作成する。ほかは程々にしておく。

フットプリントとのずれや、他部品との干渉チェックもできるので、ピンレイアウトと外形はなるべく正確に作成する。

ただし、凝りだすとキリがないので、手を抜くところは抜く。面取りすると、見栄えが良くなるがポリゴン数が増大するので、程々にする。

同じ色ごとに部品分けして、STL出力する

アニメーションするわけではないので、稼働部品ごとではなく、色ごとにSTL出力する。ピンのように同じ色で離れているものが該当する。Fusion360では、ボディまたはコンポーネント単位でSTL出力することができる。複数のファイルに分けておくと、MeshLabやWings3Dで色付けしやすい。

上図は、選択したボディをSTL出力している。右クリックメニューで選択できる。
このあと、ポリゴン化の精度を決めるパネルが表示されるが、スライダを右端にして、精度を落としてポリゴンを減らしておく。ただしCADということもあるのか、ガタガタになるぐらいの精度低下はできないので、あまり減らない。

上図はピンの部分をSTL化している。わかりづらいが、トップのコンポーネント選択して、STL出力している。これで離れている3本のピンが1つのファイルに出力される。

ちなみにFusion360上で、実物に合わせた色設定しているが、STL→VRML化する時点で、設定が欠落するので、あとで設定する必要がある。

MeshLabでポリゴン削減と色付け、およびVRML出力

MeshLabを起動し、プロジェクトを作成した後、[File]-[Import Mesh]で出力したSTLファイルをすべて読み込む。読み込んだ直後では、何かしらの色がついていたりして、期待してそのままVRML出力しても出力されなかったりしてよくわからない挙動をするが、付いていないと思っておく。

すべてのモデルをロードした状態で、ポリゴン数(フェース数)は合計3400個ほどになっている。ここから、[Filters]-[Remeshing, Simplification...]-[Simplification:Quadric Edge Collapse Decimation]を選択する。

いろんな条件でポリゴン削除できるが、一番手っ取り早いのは、Target number of facesで、目標のポリゴン数を入力する。コマンドが実行されると、この値を目標とし、なるべく形状を維持したままポリゴンが削減される。

目安の値は、デフォルト値だったりする。これ以上減らすと、シルエットが大幅に崩れてしまう傾向がある。コマンドで[Apply]を押下して実行する。

上図がポリゴン削減後のイメージになる。差異がぱっと見わからないが、トータルのポリゴン数が、1400個ほどに減少した。

次に筆アイコン(Z-painting)を探して押すと、パレットのようなコマンドが表示される。左側の情報パネルから、インポートしたメッシュを個別に選択して、色を設定する。バケツアイコンを指示して、該当メッシュをクリックするとメッシュ全体に色が設定される。

色付けが完了したら、どれか一つレイヤを選択して、右クリックメニューから[Flatten Visible Layers]でレイヤを1つにマージする。

完了すると、Merged Meshレイヤ1つに変換される。

最後に[File]-[Export Mesh]を実行してファイル拡張子を==VRML(*.wrl)==を選択して、Color情報を追加してエクスポートする。

Kicadでフットプリントの作成と、3D設定を行う

なんとか頑張って、フットプリントとパッドを作成する。
3Dモデルと同じようにパッドを原点とする。

3Dプレビュー表示した状態が下図になる。

フットプリントのプロパティ設定で、3DシェイプとしてさきほどエクスポートしたVRMLファイルを指定する。指定した直後だと、下図のようにスケールが合わない状態になるので、パネルのスケール設定でXYZにそれぞれ0.394を設定する。

サイズは一致する。高さ方向の位置が合っていない場合は、==シェイプのオフセット(inch)==のZ軸方向に値を設定して微調整する。

3Dデータの位置合わせが完了したプレビュー画面。

以上。

せっせとFusion360でモデリングして、3Dデータを作成中。
ある程度揃ったら、公開しようかと思っています。