KiCadの基板を見た目良くFusion360にインポートする

KiCadでPCBを作成し、Fusion360で設計した筐体と組み合わせることはよくあるかと思います。
その際、PCBの3DモデルをFusion360に読み込ませることができれば、部品と筐体との干渉などを確認できて便利です。
しかし、KiCadのPCBエディター(旧Pcbnew)からSTEPファイルやVRMLファイルを書き出してFusion360に読み込ませても、多くの場合は理想とかけ離れた見た目になります。

KiCadからSTEPファイルを書き出してFusion360にインポート
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/3d64bad5-ebef-d991-5a64-5b938aecc5d8.jpeg)

KiCadからVRMLファイルを書き出して、BlenderでFBXに変換してからFusion360にインポート
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/0225869c-41a2-94e8-fb9f-0cf3546f0652.jpeg)

このような状況を解決し、下記のようにキレイにPCBの3Dモデルをインポートさせる方法を紹介します。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/b1113595-213c-7994-b39e-06d5d971aca2.jpeg)

## TL;DR

* KiCadから直接書き出すより、FreeCADのアドオン `KiCad StepUp` 経由で書き出した方がキレイ
* KiCad StepUpの導入方法が昔と変わっており、今はGitHubリポジトリから手動でダウンロードしなくてよい
* StepUpは`.kicad_pcb` ファイルを直接読み込んでくれるが、シルクだけは別途KiCadから書き出す必要あり
* PCBによっては読み込み時に激重になるので注意

## バージョン

KiCad 6.0.1
FreeCAD 0.19
KiCad StepUp 2022/07/18時点の最新
Fusion 360 2.0.13615 個人用ライセンス

## FreeCADとKiCad StepUpの導入

まずは[公式サイト](https://www.freecadweb.org/downloads.php?lang=ja)からFreeCADをインストールします。
`choco install freecad` `winget install freecad` `brew install --cask freecad`もいけるっぽいです。

FreeCADを起動します。

`ツール > アドオンマネージャー` からアドオンマネージャーを開きます。

`kicadStepUpMod` を選択し、`選択をインストール／更新する` を押してStepUpをインストールします。

![スクリーンショット 2022-07-18 171543.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/35ead3f1-7cf0-b710-73e5-7ba659c300d3.png)

再起動するよう言われるので再起動します。

## 初期設定

StepUpを有効化するために、`KiCadStepUp`ワークベンチに切り替えます。

![スクリーンショット 2022-07-18 171714.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/430b8591-88f5-d6e6-6301-732ffced6edb.png)

`編集 > 設定` から、StepUpを使うのに必要な各種設定を行います。

### デフォルトのワークスペース

必須ではありませんが、ほかの用途でFreeCADを使うことがないならば、
`標準 > 標準 > 起動 > 起動後に自動ロードされるモジュール`から、起動後に直接KiCadStepUpワークベンチがロードされるようにした方が便利かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/46c5ced5-bceb-9d96-3e77-c4f2565ea4f7.png)

### 3Dモデルのディレクトリ

KiCadの各種フットプリントの3Dモデルが格納されているフォルダを指定します。

KiCadを起動してフットプリント ライブラリーを開き、下記の変数に対応するパスをメモします。

`${KICAD6_3DMODEL_DIR}` `${KICAD6_3RD_PARTY}`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/1ee24b73-c7a0-547c-a027-76fad6f526e1.png)

FreeCADの設定に戻り、`kicadStepUpGui > General > 3D Prefix working folder` の中の
`main 3D folder location` に `${KICAD6_3DMODEL_DIR}` の値を、
`secondary 3D folder loc` に `${KICAD6_3RD_PARTY}` の値を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/43ef8009-6dff-f110-c00b-05d20ef04296.png)

### DXFの読み込み設定

`インポート/エクスポート > DXF`を開き、下記のように設定します。

* `従来型の Python インポーターを使用` をオンに
* `インポート・オプション > 作成` を `パート形状を単純化` に
* `インポート・オプション > ジオメトリーを結合` をオンに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/6390630f-3a9d-4fd8-28d9-728b71f9d8cc.png)

仮に設定し忘れても、シルクのインポート時にエラーが出るので大丈夫です。

## KiCad側の下準備

ここから先はPCBを変更するたびに行う作業です。

いざ、FreeCADに読み込み…と行きたいところですが、いったんKiCad側で下準備をします。

PCBエディターを開き、`ファイル > プロット` からシルクスクリーンのDXFファイルを出力します。

KiCadのバージョンが公式のガイドと異なっており画面が少し違いましたが、下記の設定でいけました。
エクスポート単位を `mm` にするのが重要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/0e164fb4-71b0-0157-95e1-77e0de276b10.png)

`製造ファイル出力` を押してKiCad側の作業は完了です。

## FreeCADにPCBを読み込み

一番の山場です。

### 外形とフットプリント

FreeCAD内にある下記画像のようなアイコンを押して、外形とフットプリントを読み込みます。

![ksu Load KiCad PCB Board and Parts](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/c6ea295c-b7ab-dcbc-3d2c-3a05d237f3b4.png)

`.kicad_pcb` ファイルを指定すると読み込みが開始されます。

基板によっては読み込みに時間がかかる場合があるようです。
私の場合は**11分**ほどかかりました。時間がかかる場合は下記のようなダイアログが出ます。
(追記: 基板外形のデータを修正したところ、1分以内で完了するようになりました。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/4596acba-a4c8-8bb7-7c7d-459ecdac01b0.png)

メモリもドカ食いされました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/799b608e-cf3c-1b9d-60a5-b8b8fd697e84.png)

PCBの外形と各種フットプリントの3DモデルがFreeCAD上に表示されたら成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/bad96482-7d23-5842-6117-c5ff61265c96.png)

### 配線

FreeCAD内にある下記画像のようなアイコンを押して、配線を読み込みます。

![ksu tools Add Tracks](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/cf048d0a-f3ce-d1c3-c0c8-241168742de0.png)

`.kicad_pcb` ファイルを指定すると読み込みが開始されます。

配線がFreeCAD上の基板に表示されたら成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/d808b098-2e22-43f8-1eb5-a8fdd8b53740.png)

### シルクスクリーン

FreeCAD内にある下記画像のようなアイコンを押して、シルクスクリーンを読み込みます。

![ksu tools Add Silks from kicad exported DXF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/7765671c-110d-f230-ee56-1cb4c3c776d3.png)

ここで指定するのは `.kicad_pcb` ファイルではなく、先の工程で出力されたDXFファイルです。
2つのDXFファイルのそれぞれについてこれを行います。

シルクスクリーンが基板の裏表に表示されていれば成功です。
(そもそもKiCad上でシルクを付加していない場合は、表示されていなくても正常です。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/8d681bd7-4123-9645-8d56-d30b1d9462af.png)

## 書き出し

画面左側のコンボビューから、一番上層にある階段マークを選択した後に、
`ファイル > エクスポート` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/0a6c4861-cfee-ab82-8a33-3b5b5610efef.png)

STEP形式で書き出してFusion 360に読み込ませると、冒頭の結果が得られます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/2ae3698c-df46-89e6-2012-b6228715251c.png)

## おまけ

Fusion360に基板を読み込んだおかげで、ピンヘッダと上の基板が衝突してることに気づけました。よかった。
![omake.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74419/e72996ac-e8f3-02c8-1ecd-e1ce9d58639b.jpeg)