この記事ではフリーのドローソフト「Inkscape」を使用して曲線的なレイアウトを設計し、KiCADへ連携する方法を紹介します。
前編ではInkscape上でのレイアウト設計について説明し、後編ではKiCADへの連携について説明します。
ご注意
- この方法では1Uのキーのみ扱えます。キーのサイズが混在したレイアウトには対応していません。
- InkscapeやKiCADの基本的な操作方法については説明していません。また、要点となるレイアウトと連携の手順のみを紹介しますので基板を完成するところまでは説明しません。
- 動作確認環境はInkscape(Windows版)1.3.2 、KiCAD(Windows版) for 8.0.2、7.0.11、Windows 10 22H2です。
- この記事の内容について筆者は何ら責任を負うものではありません。
はじめに(経緯の話)
※長いので興味のない方は「全体の流れ」まで読み飛ばしてください。
曲線的な配列のキーボードの基板を設計するのは想像以上に大変です。綺麗に並べるだけでも気が遠くなるのですが、キーを傾けるとキーキャップ同士が容易に干渉するため曲線配列の設計ではこれを慎重に見極めて微調整をする必要があります。
そしてなにより、ベースの曲線やキーピッチを少し調整するだけでこれらの作業がすべてやり直しになるためとても非効率でした。(曲線設計者の皆さんは何か秘伝があるのでしょうか)
そこで考え付くのが別のドローソフトでレイアウトを設計してKiCADへ連携する方法です。ドローソフトならパスに沿わせて図形を並べる機能があるはずなので、並べたあとからでもパスをいじることでぐりぐり(語彙力)と好きなだけ調整できるはずです。幸いKiCAD側はPythonのインタフェース「KiPython」があるため、こういう方法を誰かが実現してくれているはず…!と思いました。
Illustratorから流し込む方法ならあった
そこで既存のノウハウを調べたところ、天下のAdobe Illustratorを用いた方法を はなちさん が紹介されていました。私はIllustratorを触ったことがないのでぐりぐりが出来るのかどうかは分かりませんが、とにかく曲線的な配列を解析しスクリプト化してKiCADへ流し込まれています。
KLEから流し込む方法もあった
他にはKeyboard Layout EditorのJSONを取り込むスクリプトを yskohtさん が公開されていました。曲線状に配置するという今回の目的には適さないので試していませんが、KLEで設計可能な通常のレイアウトなら便利だと思います。(※少し古い記事なので最新のKiCADには対応していないかも知れません)
でもフリーのドローソフトでやりたい
でもやっぱりフリーのドローソフトでぐりぐりしたいわけです。というわけでInkscapeです。操作性に関して厳しい評価も耳にしますが何といっても無償です。そしてInkscapeはベクター形式のオープンなグラフィックフォーマットであるSVGに標準対応しているのでKiCAD連携時に必要となるファイル解析のハードルも低いはず。
…と言うことで、その方法を模索しました。
Inkscapeでやるのは意外と大変だった
SVGの解析やKiCADへの連携はともかく、正方形をパスに沿って並べるくらいは簡単にできるでしょと思っていました。
とりあえずキーを模した19.05mm角の正方形をゆるい曲線のパスに沿って並べたらこんな感じになりました。
マウスでパスのハンドルをいじって曲線を編集すればこの四角形の列がリアルタイムでぐりぐりとパスに付いてきていい感じです。
「あとはこれの座標を取り出してKiCADに…」と思ったのですが、よ~く見るとこうなっていました。
四角形が扇状に歪んでいるのが分かるでしょうか?これだとスイッチを模しているとは言い難いだけでなく、どれだけカーブをゆがめてもこの四角*1は決して重ならないのでキーの干渉チェックができないのです。
下流の工程を保証できない以上、設計というよりは雰囲気の確認くらいにしかなりません。そこで正方形のまま並べられるようにひと工夫加えた結果が下の図です。
ちゃんと四角形が歪まずに重なっています。この例では二重になっている正方形のうち外側が19.05mmの標準ピッチ、内側の長方形が18mm*18mmキーキャップの外形を模しています。内側の四角形どうしが接触しているのでこのままではキーキャップが干渉するであろうことが分かります。
なので「もうちょっとカーブを緩やかにするか…いやピッチを広げるか…」と唸りながら好きなだけぐりぐりに没頭できるというわけです。
この「ひと工夫」に至るのに割と苦労しました。
全体の流れ
前置きが長くなりましたが、今回紹介する方法では以下の流れで設計を行います。
①Inkscapeでキー配列のレイアウトを作成
↓
②SVGに保存
↓
③KiCADで回路図上にシンボルを配置
↓
④フットプリントを基板に展開しておく
↓
⑤スクリプトでSVGを読み込んでフットプリントを整列する
↓
⑥回路図を完成
↓
⑦再度その他のパーツを配置
↓
⑧配線その他を頑張る
具体的な手順(Inkscape編)
ここでは作例として12列×4行のGRIN風オーソリニア風配列*2を作成してみます。
- 新規ドキュメントの作成
Inkscapeで普通にドキュメントを新規作成した後、[ファイル]->[ドキュメントのプロパティ] からプロパティ画面を開き、設計するキーボードが収まるサイズ(フォーマットをA3、方向を横など)にした上で、表示単位が「mm」であることを確認してください。
- 19.05mm角の正方形のパスを作成
矩形ツールを使用してキャンバスの隅に四角形を作成します。
フィルは塗り無し、ストロークは幅0.1mmとします
角が丸まっている場合は○をつまんで角の丸みをなくします。(矩形ツールモードでないと○が表示されませんので、四角形を選択した状態で矩形ツール
選択ツールをクリックしてください)
に切り替え、ツールコントロールバーで幅と高さを19.05mmに設定します(必ず先にストロークを設定した後でサイズを修正して下さい)
最後に [パス]->[オブジェクトをパスへ] でパスに変換します。
-
長さ19.05mmの縦線のパスを作成
ペンツールを使用してキャンバスの隅に垂直の線を引きます。
ストロークの幅を0.1mmにします。
選択ツール
に切り替え、ツールコントロールバーで高さを19.05mmにします。(幅は0.1mm=線の太さ)
-
キーボードの横幅の直線のパスを作成
ペンツールを使用しておおむねキーボードの横幅になるようにキャンバスの中央に長い横線(カラムスタッガード系なら縦線)を引きます。
※左右(上下)どちらが始点でどちらが終点かを覚えておいてください
-
縦線をコピーする
上の手順で作成した縦線を選択しクリップボードにコピーしておきます。 -
横線に「パスに沿うパターン」を適用する①
長い横線を選択します。
横線が選択された状態でパネルの「パスエフェクト」タブを開きます。
下の「▼」ボタンをクリックし、「パスに沿うパターン」を選択します。パターンのコピーを「繰り返し」、間隔を「19.05」にします
パターンソースの「貼り付け」ボタンをクリックします。等間隔の縦線が並びます。
選択を解除すると下のようになっているかと思います。19.05mmの縦線が19.05mm間隔で並んでいる状態です。 -
正方形をコピーする
前の手順で作成しておいた正方形を選択しクリップボードにコピーしておきます。 -
横線に「パスに沿うパターン」を適用する②
パスエフェクトを重ね掛けしていきます。
再度横線を選択しパネルの「パスエフェクト」タブを開き「▼」ボタンをクリックして「パスに沿うパターン」をクリックします。
パターンのコピーを「単一」、間隔を「19.05」にします
パターンソースの「貼り付け」ボタンをクリックします。
四角形が等間隔で並んだでしょうか?19.05mmの正方形が19.05mm間隔で並んだ状態です。ここからパスを編集していきます。
-
パスを曲線にする
パスエフェクトの左の目のアイコンをクリックしてパスエフェクトを非表示にします。
表示が1本の線に戻ります。
ノードツールを選択すると以下の表示に変わります。
線の中心付近をつまんで下にドラッグすると線が曲がります。
端の◇をクリックするとハンドル(○)が表示されるのでこれをドラッグして編集することもできます。再度目のアイコンをクリックしてパスエフェクトを有効にすると、四角形がパスに沿って曲線状に配置されています。
- キーの数を増やす・減らす
直観に反するかもしれませんが、この手法では並べる四角形の数をあらかじめ指定することはできません。キーの数は線の長さと縦線の間隔で決まりますのでノードツールで線の長さを調節することで個数を調整してください。(選択ツール
で拡大縮小すると歪むのでNGです)
-
四角形の状態のまま編集する
四角形の列を選択し、ノードツールに切り替えると、ノードが◇で表示されます。この◇をドラッグするとぐりぐり調整できます。
また◇を選択するとハンドルが表示されるのでそれをドラッグしてぐりぐり調整できます。
- もっと複雑な曲線にする
ノードツールに切り替え、Shiftを押しながら両端のノード(◇)を選択し、ツールコントロールバーの
の「+」をクリックすると中間にノードが追加されます。
これを調節するとGRINぽい感じにできました。
これ以上はInkscapeの使い方の話になるのでここでは割愛します。 - キー間のピッチを調整する
キーの干渉が気になる場合はピッチを広げます。
まず縦線の配置で設定したパスエフェクト(上)を選択します。
「間隔」を調整することでキー間のピッチを調整できます。
広がりました。 - 配列の編集時にやってはいけないこと
拡大縮小や回転はNGです。やりたくなると思いますが、形が崩れます。選択ツールでの操作は移動だけにして、カーブや図形の形状はノードツール
とパスエフェクトで編集してください。
- 行を増やす
単純にコピー&ペーストすることで行を増やしてください。ただしノードツールの状態でコピペするとノードがコピーされておかしくなるので、選択ツール
に切り替えてパス単位でコピペしてください。
※パスの結合はしないでください -
保存する前にパスのIDを確認しておく
パネルの「レイヤーとオブジェクト」を開いた状態で、キャンバス上の四角形の列を選択すると、行ごとに「pathxxxx」のような名前が付いているのが分かります。後の手順で使用しますのでこれを控えておいてください。*3 - 保存する
普通に任意のフォルダへSVGで保存してください。キー配列以外のゴミ図形が入っていても問題ありません。 - 後編へ
KiCADへの取り込みについては後編で紹介します。
応用① キーキャップの干渉を確認するために
ここまでは手順を簡易化するために単純な四角形で説明しました。冒頭で紹介した2重の四角形にするには、二つの四角形を重ねて一つのパスに統合してやる必要があります。
- 小さい四角形を描く
選択ツールで最初に作成した四角形を選択しコピペします。
幅と高さをキーキャップのサイズ(ここでは狭ピッチで17mm)にします。 -
整列しパスを結合する
選択ツールで最初の四角形と小さい四角形を両方選択し、パネルの「整列と配置」タブの「整列」を開きます。
下の二つのボタンをクリックして中心を揃えます。 -
パスを結合する
そのまま(両方選択した状態で)[パス]->[結合]でパスを一つに結合します。 -
配列に反映する
結合された2重の四角形をクリップボードにコピーします。
四角形の列を選択し、ふたつ目(下)のパスエフェクトを選択します。
パターンソースに貼り付けます。
四角形が2重になります。
注意:内側の四角形をもし正方形以外にする場合、左に90度回転させておいてください -
KiCADに連携する前に1重に戻す
連携用のSVGファイルに保存する前には必ず四角形を1重に戻してください。戻す場合は1重の四角形をコピーし、パスエフェクトに貼り付けます。
応用② 複数行同時にレイアウトする
上記の手順では「パスに沿うパターン」を2重に掛けるという方法を取りましたが、その前段で「サブパスの補間」というエフェクトを噛ませることで、複数行を同時にレイアウトすることも可能です。ただ細かい調整の融通が利かないため実用的ではありません。一応「こんなこともできます」ということでご紹介しておきます。
- 正方形と短い縦線までは同じ
- 横長の線を2本引く
先ほどは1本でしたが、2本引きます
2本のパスを選択した状態で[パス]->[結合]でパスを一つにまとめます。 - 「サブパスの補間」を適用する
「パスエフェクト」タブを開き「▼」ボタンをクリックして「サブパスの補間」をクリックします。
「ステップ数」に行数を入れます。
2本の線の間に等間隔で線が引かれました。 - 「パスに沿うパターン」①②を適用し調整する
線に沿って四角形を並べます。
※最初に紹介した手順と同じなので省略します。
2本の線を異なる曲線にすると中間を埋めてくれるので、
エフェクトを適用するとこんな感じのレイアウトになります。
あとは好きなだけ調整して下さい。
応用③ もっとこだわる…?
応用①に書いたように、KiCADに取り込む際には1重の四角形に戻さなければならないのでこの段階で四角の中身にこだわってもあまりよい事は無いのですが、スイッチを書き起してみるとそれっぽくなって気分が上がるかもしれません。
例えばこんな感じです。
※パスエフェクトの都合上、各スイッチが右に90度回転することに気を付けてください