InkscapeでSVG画像からBGR(ガーバー)ファイルに変換して卓上CNCで基板を削る①


※ 当ページには【広告/PR】を含む場合があります。
2022/03/29
2022/10/02
【KiCad応用講座】PCB切削で平面コイルが動くか試してみる① CADファイルの準備
InkscapeでSVG画像からBGR(ガーバー)ファイルに変換して卓上CNCで基板を削る②
蛸壺の中の工作室|InkscapeでSVG画像からBGR(ガーバー)ファイルに変換して卓上CNCで基板を削る①

寸法やレイアウトが分かっている手書きで書いたほうが早そうな簡単な電気回路なら、いちいちKiCADで回路設計してGBRのようなガーバーデータに変換するのは少し手間になります。

今回はInkscapeを使って描いたSVG画像を直接GBR形式に変換できるツールを利用して、実際の卓上CNCで削ります。

            ① svg画像 --> gbrファイルに変換
② gbrファイルからCNCで切削加工
        
のような内容に沿って手順を説明していきます。


KiCadではじめる「プリント基板」製作 (I・O BOOKS)

IoTセンサーを自作しよう!KiCadで回路基板からDIY!ESP32プログラミング

InkscapeのGBRフォーマット変換が使えない

数年前のInkscapeであれば、Svg2Shenzhenというガーバーデータ変換用のプラグインが有志の方で公開されていましたので、Inkscapeのワークスペースから直接GBRファイルをエクスポートすることも可能でした。

便利なプラグインでしたが、プロジェクトの更新が2年前から停止しており、現行の安定版Inkscapeではpythonの実行環境が違うためかエラーでコケます。

合同会社タコスキングダム|蛸壺の中の工作室

このプラグインがそのまま動けば文句無しに簡単な話でしたが、どうやら現在はすんなりとは使えない状況になっていましたので、少しセットアップが面倒ですが別の手段を考えます。


KiCadではじめる「プリント基板」製作 (I・O BOOKS)

IoTセンサーを自作しよう!KiCadで回路基板からDIY!ESP32プログラミング

コマンドからSVGをGBRに変換するツール・『Gerbolyze』を利用する

Inkscapeのバージョンを落としてわざわざ昔のエクステンションを使えるようにしてまで、直接ガーバーデータを出力することは一旦諦め、現状のInkscapeで安定動作するような別の手段を模索します。

色々と試す中で、セットアップが微妙に面倒でしたが、この手のツールでは比較メンテナンスが継続されていそうという理由で
Gerbolyzeを使うことにしました。

このコマンドで利用するタイプのソフトウェアですが、使用方法にはクセがありますので、大まかな手順は後ほど説明していきます。

Gerbolyzeのインストール

Gerbolyzeの動作環境を構築するには、Pythonのバージョン3以降と安定版以降のRustが同時に動く必要があり、少し手間かも知れません。

各OSへのGerbolyzeの導入手順は
公式のQuick Installationで説明されている通りです。

現在の手元の環境はDebianでしたので、例えば、

            $ sudo apt install libopencv-dev libpugixml-dev \
    libpangocairo-1.0-0 libpango1.0-dev libcairo2-dev \
    clang make python3 git python3-wheel curl python3-pip python3-venv

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ source $HOME/.cargo/env
$ rustup install stable && rustup default stable && cargo install usvg

$ pip3 install --user git+https://git.jaseg.de/pcb-tools-extension.git
$ pip3 install --user gerbolyze --no-binary gerbolyze
        
というように、Rustのパッケージ導入に少し面倒な手順が必要になります。

Linuxに導入するのなら、UbuntuやFedoraの方が相性が良く、Ubuntuなら例えば、

            $ sudo apt install libopencv-dev libpugixml-dev \
    libpangocairo-1.0-0 libpango1.0-dev libcairo2-dev \
    clang make python3 git python3-wheel curl python3-pip python3-venv cargo
$ cargo install usvg

$ pip3 install --user git+https://git.jaseg.de/pcb-tools-extension.git
$ pip3 install --user gerbolyze --no-binary gerbolyze
        
とインストールに関してはよりスムーズに進められます。

よってUbuntuがより簡単にGerbolyzeを使えるOSと言えるのではないでしょうか。

この辺は今の時代DockerコンテナでGerbolyze実行環境を作ってしまえばどのOSでも動いてしまうと思うので、適宜使い分けてみてください。

ベースとなるgbrファイルを作成する

Gerbolyzeが対応しているフォーマットは、SVG/PNG/JPGのベクター・ラスター画像になっています。

元のgbrファイルにこれらの写し込みたい画像データを指定することで、柔軟な画像をガーバーデータに(転写に近いイメージで)追加することができます。

まずは手っ取り早くKiCADからEurocard基板のテンプレートを開いて、サラのgbrファイルを用意します。

合同会社タコスキングダム|蛸壺の中の工作室

合同会社タコスキングダム|蛸壺の中の工作室

なおEurocard基板はその名の通りヨーロッパではメジャーな基板で、寸法は
160x100mmとなっています。

結構安く手に入るカット基板(
oje-Link 片面銅張PCB基板 150 x 100 x 1mm / 10枚
など)に近いサイズですので、CNCのカットテストにはもってこいのテンプレートかと思います。

合同会社タコスキングダム|タコツボの中の工作室

KiCADからこのEurocard基板のテンプレート選択して、適当なフォルダと適当な名前でこのKiCADプロジェクトを展開しておきます。

まず左のペインからkicad_pcbファイルをダブルクリックするか、ツールボックスから基板のアイコンをクリックします。

合同会社タコスキングダム|蛸壺の中の工作室

合同会社タコスキングダム|蛸壺の中の工作室

開くとこのサンプルにはただの
Edge.Cutsレイヤーしかないのでこのレイヤーだけを選択してから、gbrを出力します。

トップメニューから
[ファイル] > [プロット]から製造ファイル出力ダイアログに入り、含まれるレイヤー > [Edge.Cuts]を選択して、[製造ファイル出力]ボタンを押すことで、簡単なgbrファイルが現在の作業フォルダに出力されていることを確認します。

合同会社タコスキングダム|蛸壺の中の工作室

これでもっとも簡単な矩形のエッジだけのガーバーデータが
src-Edge.Cuts.gbrとして出力されました。

GerbolyzeでSVG画像をgbrに重ねる

では先程のgbrファイルをベースに、上からsvgを重ねる感覚で、
Gerbolyzeを使ってみます。

Gerbolyzeコマンドは主に以下の2つサブコマンドを使ってsvg(jpgやpngも可)とgbrを編集する感じで使います。

            #👇指定したGBRを元にテンプレートとなる前のSVGファイルを出力する
$ gerbolyze template --top <テンプレートsvgの名前> [--bottom <テンプレートsvgの名前>] <ガーバーファイル>
#👇SVG画像と入力gbrファイルを指定して、それぞれを重ねたgbrファイルを出力する
$ gerbolyze paste --top <上層に重ねたいsvgファイル> [--bottom ...] <入力gbrファイル> <出力gbrファイル>
        
詳しいコマンドのオプションなどは公式のドキュメントを参考にしてください。

ザックリというと、
gerbolyze templateコマンドから「gbr -> svg」としてテンプレートSVG画像を生成し、テンプレートSVGを編集し終えたらgerbolyze pasteコマンドから「svg -> gbr」に変換することになります。

どういうことか順を追ってやってみましょう。

最初に先程出力したガーバーデータ・
src-Edge.Cuts.gbrを元に、テンプレートSVGと呼ばれるガーバーデータからの形状を抽出したSVG画像を生成するところから初めます。

これを行うのが、
gerbolyze templateコマンドです。

ターミナルで作業フォルダに入り、以下のコマンドを叩きます。

            $ gerbolyze template -t tmpl.svg src-Edge.Cuts.gbr
        
なお-t, --topオプションで上層用(片面)のテンプレートSVGで出力したい名前を付けて使います。

テンプレートとして出力された
tmpl.svgをInkscapeで開くと以下のようになります。

合同会社タコスキングダム|蛸壺の中の工作室

元のガーバーデータは四角の枠だけでしたので、それを反映した寸法に合わせて色付きの領域が与えられるSVGとなっています。

次にこのテンプレートSVGに描きたい画像を編集したり、貼り付けたりします。

適当にデザインをパス化して、以下のような感じの画像を
love.svgとして作業フォルダに保存しておきます。

合同会社タコスキングダム|蛸壺の中の工作室

なお、文字やjpg画像などのラスター画像などはきちんとパス化しないと、gbrに反映されないので注意が必要です。

これで最後に
gerbolyze pasteコマンドを利用してテンプレートSVG画像をベースに画像を合成したガーバーファイルとして出力させてみます。

以下がテンプレートsvg(
love.svg)をベースに、src-Edge.Cuts.gbrから新しいgbrファイル(love.gbr)を出力するコマンドになります。

            $ gerbolyze paste -t love.svg src-Edge.Cuts.gbr love.gbr
        
コマンド実行後にlove.gbrが正常に出力されたなら、KiCADのユーティリティであるGerbViewからきちんと合成させているかを確認します。

love.gbrGerbViewから開いてみると、

合同会社タコスキングダム|蛸壺の中の工作室

というようにちゃんとSVGパスが反映されているようになっています。


KiCadではじめる「プリント基板」製作 (I・O BOOKS)

IoTセンサーを自作しよう!KiCadで回路基板からDIY!ESP32プログラミング

変換済みのガーバーデータのちょっとしたゴミを編集する・『gerbv』

gerbolyzeはsvg画像ををgbrファイルに変換するのにはとても便利なツールです。

でも良く出力物を観察すると、各所に意図しないパスで内部が接続されているのが分かります。

合同会社タコスキングダム|蛸壺の中の工作室

切削加工の場合、さすがにこのような看過できないほど主張しているパスは消しておかないと、最終的に残念な仕上がりになってしまいます。

ということで、ちょっとしたガーバーデータの修正に便利な
『gerv』を使って、この不要なゴミパスを削除してみましょう。

参考|gerbv公式

Windows/MacOSはダウンロード版でこのソフトウェアが利用できるようですし、さらに喜ばしいことにLinuxだとパッケージインストーラが利用できるようになっています。

Debian Linuxの場合:

            $ sudo apt install gerbv
        
お手持ちのPC環境にgerbvをインストールしたら、gerbvでガーバーデータを編集するために、先程のgbrデータを読み込みます。

合同会社タコスキングダム|蛸壺の中の工作室

図で示したようにゴミパスを直接クリックし、Deleteボタンを押すことで快適に消えてくれます。

合同会社タコスキングダム|蛸壺の中の工作室

gerbvで修正した後で、このgbrを保存し、この修正が反映されているかどうかを再度GerbViewで確かめると、

合同会社タコスキングダム|蛸壺の中の工作室

というように確かに余計なパスが消去されていることが分かります。

以上、言うほど簡単では無かったかも知れませんが、Inkscapeとフリーウェアだけで自由にガーバーデータが作成することが分かりました。


KiCadではじめる「プリント基板」製作 (I・O BOOKS)

IoTセンサーを自作しよう!KiCadで回路基板からDIY!ESP32プログラミング

まとめ

簡単なガーバーデータはKiCAD無しでもInkscapeだけで作成することが可能ということを狙って書き始めた記事でしたが、肝心のガーバーデータ作成エクステンションがほぼほぼ利用できない状態になっていましたので、コマンドベースのツールを経由してgbrファイルを出力する方法を紹介していきました。

何はともあれ、Inkscapeで描いたパスがCNCで思いのままに切削加工できるのは嬉しいことです。

では次回は折角なので作成したガーバーデータを使ってカット基板を切削してみようと思います。