2019年6月7日金曜日

KiCadで基板の配線とビアを全部消す方法


背景

KiCadとFreeRouterを組み合わせて基板を作っていると、配線済みの基板をFreeRouterで再度配線したいときがあります。
調べて試したらできたので、備忘録を兼ねて配線とビアを削除する方法を共有します。

注意
KiCadに頼らずファイルをエディタで編集する方法も紹介するので、この記事の内容を実行する前に、gitでコミットしたり、ディレクトリごとコピーするなど、何かしらの形でプロジェクトをバックアップすることをお勧めします。

使ったもの

KiCad 5.1


記事を書いている時点で最新版のKiCadです。

KiCadのダウンロード・インストール方法は下記のページから辿れます。

http://kicad-pcb.org/download/

やりたいこと: 配線を全部消す

このような配線済みの基板を、


このように未配線の状態にしたいです。


方法1: 広域削除機能を利用

KiCadには広域削除機能があるので、それを利用することで配線を削除できます。

pcbnewでEdit -> Global Deletationを選択して広域削除画面を開きます。


広域削除画面でItems to DeleteとしてTracksを選び、FilterでLocked Tracks以外を選び、Layer FilterでAll Layersを選んでOKを押すと、ロックされていない配線が消えます。


方法2: pcbnewのpython実行画面でプログラムを実行

KiCadはpcbnewでpythonを実行することで基板の編集が可能です。
pythonの実行機能はKiCad 5.0では無効化されていましたが、5.1で復活しました。

pcbnewでtools -> Scripting Consoleを選ぶと、スクリプト実行画面を起動できます。


実行画面を開いたら、下記のプログラムを入力(実行)します。

import pcbnew
b = pcbnew.GetBoard()
tracks = b.GetTracks()
for track in tracks:
    track.DeleteStructure()


上記のプログラムは、GetBoardで今開いている基板を取得し、GetTracksで基板の配線とビアを全部取得し、forの内部で各配線とビアをDeleteStructureで消しています。

for文以外の複数行をまとめてコピーして実行すると下記のエラーが発生することがあるので、for文以外は1行ずつ実行するのが良いと思います。

SyntaxError: multiple statements found while compiling a single statement

この手順の実行前と後のpcbnewの様子は、先ほど紹介したエディタで編集する方法と同じです。
pythonの実行で配線とビアを消すことができました。


方法3: kicad_pcbファイルをエディタで開いて配線とビアを削除

*.kicad_pcbファイルには、基板の情報がS式という括弧を使う形式で記述されています。
S式の内容は人が読める形式になっており、分類ごとにまとめて記述されています。
そのため、配線とビアを意味する記述が分かれば、そこのまとまりを消すことで配線とビアを全消しできます。

*.kicad_pcbファイルで配線とビアはsegmentとviaという名前で記述されているので、それらのS式を削除すれば良いです。
具体的にM5StackCavityのtop_pcbで言うとtop_pcb.kicad_pcbの1243行から1616行を削除すると、基板上の配線とビアを全消しできます。


pcbnewを開き直すと配線を消した基板を確認できます。

まとめ

KiCadの基板データから配線とビアを全部消せました。
FreeRouterを利用した再配線をやりやすくなって嬉しいです。

参考

KiCad Pcbnew Python Scripting
kicad-doc/src/pcbnew/pcbnew_python_scripting.adoc

変更履歴

2019/06/08

広域削除機能の存在を教えてもらいました。 この機能を利用するのが最も不具合なく配線を消せる手順のように感じたため、方法1として追記しました。

0 件のコメント :