RSS Twitter Facebook

2022/03/13 (2022年03月 のアーカイブ)

KiCad 6 の「プラグインとコンテンツマネージャー(PCM)」の使い方と対応プラグインの作り方

愛用の基板Cad KiCadは現在最新のリリースは既に6.0.2になっていますが、6.0 RC版はちょっと触ったものの実際は今まで5.xを使っていてようやく6.xに乗り換えました。

6.xへのメジャーバージョンアップで結構色々変わっているようですがその中でプラグインへの対応が大きく変わっています。今まではプラグインのファイルを所定のフォルダーに自力でコピーしていたのですが、この所定のフォルダーの位置がOSによって違うのはもちろんバージョンによってふらふらと移動したりしてなかなか厄介な事になっていたのですが、このあたりの面倒を見てくれる「プラグインとコンテンツマネージャー (PCM)」というものが標準装備になりました。

PCM ではプラグインの他に部品ライブラリやカラーテーマも同様に管理する事ができ、インストール/アンインストールをボタン一つで行う事ができます。

これで今後はプラグインなどのアドオン関係は全部PCMに管理を任せるという事になると思います。


という事で、以前作ったガーバーファイルをそのままPCBベンダーに送れる形にZip化するプラグイン "GerberZipper" をこの PCM に対応しました。

https://github.com/g200kg/kicad-gerberzipper

PCM の使い方の詳細はGitHubの方に書きましたが、メニューから"ツール" - "プラグインとコンテンツマネージャー"を起動するとプラグインの一覧が出てくるので、そこから必要なもののインストールを指示するだけです。

デフォルトの状態では KiCad のオフィシャルリポジトリしか登録されていませんので、リポジトリの管理画面で次のURLを追加します。

https://raw.githubusercontent.com/g200kg/kicad-pcm-repository/main/repository.json

これで "g200kg KiCad PCM repository" が選択できるようになり、GerberZipperのインストール/アンインストールが行えるようになります。

PCM の使い勝手はこんな感じで昔の手動インストールから考えると随分快適になりました。


ただしプラグインを作る側からみると PCM に対応した形にするのはなかなか面倒です。

ステップ1

* まずは肝心のプラグインを作ります。プラグインのAPI関係の資料は↓が最新のものだと思います。

https://kicad-python-python.readthedocs.io/en/latest/

そもそもこの KiCad プラグイン開発に必要な情報が充分整っているとは言えない状況なので、色々と探りながらやる事になりますが。

ステップ2

* プラグインをパッケージにします。メタデータとアイコンを含めて次のような形でZipにまとめます。
 Archive root
  |- plugins
    |- __init__.py
    |- ...
  |- resources
    |- icon.png
  |- metadata.json
メタデータの書式等の詳細は↓のページにあります。

https://dev-docs.kicad.org/en/addons/

ここで作ったパッケージは"プラグインとコンテンツマネージャ"の画面で"ファイルからインストール"によって直接インストールする事もできます。
また KiCad のオフィシャルリポジトリに登録の要望を出す場合もこの形式のパッケージを送る事になります。

ステップ3

* PCM の画面でリポジトリを指定してインストールできるようにするには、パッケージのリストを公開するためのリポジトリを用意します。複数のプラグイン(ライブラリやカラーテーマでも良いですが)を公開したい場合にはこういう形になります。

詳細はドキュメントhttps://dev-docs.kicad.org/en/addons/を読めばわかると思いますが、repository.jsonやpackages.jsonに必要な項目にはsha256ハッシュやファイルサイズ、UTC時刻値などもあるので、プラグインのリリース作業ではプラグイン側のリポジトリを更新した後、PCM用リポジトリを更新する事になります。手数が多くなって手作業でやるにはちょっと面倒なので更新用のスクリプト的なものを書く方が良いと思いますが、それはそれで面倒。


Posted by g200kg : 2022/03/13 21:45:54