nazo6 noteblog

OpenSCAD、KeyV2とFDMプリンターでキーキャップを作る

作成:2024/11/10

更新:2024/11/10

この記事は、Zennにも投稿しています。

はじめに

OpenSCADはCADの一つで3Dのモデリングを行うのに用いられます。と言っても、グラフィカルにマウスを操作してモデリングを行うわけではなく、専用のプログラミング言語を用いてスクリプトを作成することにより行います。これにより宣言的に3Dモデルを記述できるようになり、優れた再利用性や手作業の曖昧さの排除などの利点を得られます。
このようにOpenSCADはCADであるだけではなくプログラミング言語であり、ライブラリを読み込むことができます。その一つがキーキャップ生成用ライブラリであるKeyV2です。これを用いると非常に簡単にキーキャップを生成できます。
残念ながら現在は開発が停止しているようですが、十分使うことができます。
また、作った3DモデルをFDM方式の3Dプリンターで印刷する設定を調べました。

使用した環境

  • OS: Windows (OpenSCADはmacやLinuxでも動きます)
  • バージョン: OpenSCAD-2024.11.08
  • 3Dプリンター: Bambu Lab A1
  • スライサー: Bambu Studio

準備

まず、OpenSCADをインストールします。ダウンロードページは

OpenSCAD - Downloads

openscad.org

で、下の方にあるDevelopment Snapshotsをインストールしてください。
Windowsでscoopをお使いの方は
scoop bucket add versions
scoop install openscad-dev
でインストールすることもできます。
インストールできたら一度OpenSCADを開いてNewボタンより一度OpenSCADのメイン画面を開いた後、Edit -> PreferencesAdvancedタブより、Backendのプルダウンメニューが初期ではCGALになっているのをManifoldに変えてください。これをしないとうまく動きませんでした。
では次にKeyV2を準備します。お好きなディレクトリで
git clone https://github.com/rsheldiii/KeyV2/
を実行し、KeyV2をダウンロードします。今後作成するファイルではこのフォルダの中にあるファイルをインクルードして使います。ここでは、
KeyV2/
| src/
| ...
└ README.md
my-keycap
│ keycap1.scad
| ...
└ keycap10.scad
のようなフォルダ構成とします。

キーの作成

では、キーキャップを生成してみましょう。my-keycap/keycap1.scad(名前はなんでもいいですが先程示したようにKeyV2の親ディレクトリに置いてください)を作成し、OpenSCADで開きます。
開けたら左側のエディタに
include <../KeyV2/includes.scad>

cherry_row(1) key();
と入力して、F5を押してください。すると、このようにキーキャップのプレビューが表示されるはずです。
../../../../resource/public/blog/2024/11/openscad/keycap1.png

非常に簡単ですね。
ちなみに、Design -> Automatic Reload Previewを有効にするとセーブ時に自動でプレビューを行ってくれます。

エクスポート

エクスポートするには、まずF6を押してください。これによりレンダリングが行われます。その後File -> Exportから好きな形式でエクスポートすることができます。

カスタマイズ

KeyV2ではここからさらに色々なカスタマイズを行うことができます。

プロファイル

先程のコードにはcherry_row(1)とありましたが、これはプロファイル名と列から形を決めています。他のプロファイルも多数用意されており、ここでその一覧を見ることができます。これを適用するには、例えばDSAプロファイルであればdsa_row(1)のように変更するだけです。

ステム

先程生成したキーキャップのステムは以下のようになっていると思います。
../../../../resource/public/blog/2024/11/openscad/stem.png

この形はMXスイッチの穴にちょうどハマるようにできているのですが、誤差が中々シビアで自分が持っているFDM方式のプリンターだとスイッチにはまりませんでした。そこで、ステムを丸型のものに変更してみます。先程のkey()で終わる行を以下のようにします。
cherry_row(1) no_stem_support() bar_support() rounded_cherry() key();
これで、ステムが以下のような丸型のものに変わったはずです。
../../../../resource/public/blog/2024/11/openscad/stem_round.png

これはrounded_cherry()によるものです。またno_stem_support()でステム下部のサポートを消し、bar_support()で上部のバーによるサポートを追加しています。
また、rounded_cherry()の他にもchoc()が用意されており、chocスイッチ用のキーキャップを作ることもできます。low_profile()という関数もあるのでこれを使うと良いでしょう。

刻印

legend("str")を使うことで刻印を印字できます。文字の他に位置、文字サイズやフォントを指定することがけいます。
また、front_legendを用いるとキー前面にも印字できます。
以下の例では、Nerd Fontをサポートするフォントを指定することで、上面にはWindowsのロゴ、前面にはWinと表示するようなキーキャップを作成しています。
コード:
include <../KeyV2/includes.scad>

cherry_row(1)
legend("", position=[-1,-1],size=3,font="PlemolJP Console NF")
front_legend("Win", size=2)
key();
プレビュー:
../../../../resource/public/blog/2024/11/openscad/legend.png
ただ、ここまで細かいと積層式ではかなり厳しいです。

細かなカスタマイズ

あらかじめ用意されている関数を使用するだけではなく、パラメータを上書きすることで細かなチューニングができます。

KeyV2/src/settings.scad at 19f0d2faadd4949634c93f38d1a66869d29e8f43 · rsheldiii/KeyV2

KeyV2: A Parametric Mechanical Keycap Library. Contribute to rsheldiii/KeyV2 development by creating an account on GitHub.

github.com

上のソースコード中に設定一覧が定義されているので細かいカスタマイズをしたい時はこの変数を弄ります。例えばキーキャップの高さを少し低くしたいといった時はこのようなコードを書くことができます。
cherry_row(1) {
$total_depth = $total_depth - 1;
key();
}

積層式3Dプリンターでの印刷のコツ

このようにしてできたキーキャップのモデルですが、光造形の3Dプリンターであればかなり綺麗に印刷できるようです。しかし、生憎と筆者は積層式しか持っていません。
積層式は光造型ほど綺麗にはできないため、前述のようにステムを変えるなど若干の工夫が必要です。本節では、以下の詳しく調べてくれているブログを参照しながら自分で試してみて分かったコツを記載します。

3D Printing High Quality Keycaps - Craig Andrews

Printing usable, good-quality keycaps on an FDM 3D printer is very much possible. Despite what you may have heard, a resin printer is not required. However, there are some challenges and practicalities to keep in mind. Here's what I learned about 3d printing keycaps.

candrews.integralblue.com

ポイント

1. ステムの形状を丸にする

これは上の項目で書いた通りです。これじゃないと入りません。

2. 印刷時は角度を付ける

普通にキーキャップを置いた時のような角度で印刷するとステムと本体の接着が弱くなる他、キーキャップ上部の窪みになっている部分で非常に積層痕が目立ちます。
斜めに印刷することにより、これを解消できます。上の記事では45度を推奨しており、確かに45度が一番綺麗に印刷できるのですがそれ以下の角度でも十分綺麗になります。
傾ける方向について
印刷物に角度を付けるには、
  • 指を置く向きに沿った方向
    ../../../../resource/public/blog/2024/11/openscad/rot_h.png
  • 指の向きに垂直な方向
    ../../../../resource/public/blog/2024/11/openscad/rot_v.png

    の二種類が考えられます。
    (画像が分かりづらいかもしれませんが、この2つは両方とも同じ向きから見ており、モデルの回転方向が違います)
指の向きに垂直な方向だと指を前後に滑らせた時に滑らかな良い感触になります(そのためか、実際上のブログで配布されているモデルもそのようになっています)が、造形精度によってはステム部分に左右で高さに差が出来てしまい、スイッチにはめた時になんだか若干傾いてしまうことがあります。
一方、沿った方向の傾きは全く逆です。滑りがザラザラしますが、左右に差ができることはありません。
個人的にはザラザラでも特に不満はないので沿った方向にしています。

3. サポートの設定

斜めにするとサポートが必要になってきますが、個人的には以下の画像のような設定を主に使用しています。
../../../../resource/public/blog/2024/11/openscad/support.png
  • サポートタイプはツリー
  • サポートのスタイルはTree Organic。これにするとツリーが全て底面で繋がって剥がしやすいです。
  • サポートの閾値角度はプリンター等によって変わってくると思います。上図ではキーキャップを30度傾けましたが、閾値25度でダレたりすることは特にありませんでした。

4. 0.2mmノズルに変える

これはまだ試せていないのですが、0.2mmノズルは細かいものがと綺麗に印刷できるようなので今度ノズルを買って試したいです。

まとめ

いかがでしたか?KeyV2を使えば様々なプロファイルのキーキャップのモデルを生成することができ、カスタマイズも容易です。
また、キーキャップの印刷は光造形じゃないと厳しいと思っていましたが設定を調整することで積層式でもそれなりの品質のものが作れました。
OpenSCADからの出力も一瞬なのでこれを用いればこれからは様々なプロファイルのキーキャップを手軽に試せるようになりそうです。