普通のプログラマーが3Dプリンタを業務で使うことになった話

気が付くと私は光造形3Dプリンタと液体レジンとUV照射器と大量の出力造形物に取り囲まれていたーー
※この投稿は事実に基づいていますが、一部誇張表現があったりなかったりします。


# 何が起きたのか

例の上司「ここに3Dプリンタ( [EPAX X1](https://epax3d.com/products/epax-printer) )があるじゃろ？」
syntan「ありますね(何に使うって言って買ってたんでしたっけ…)」
例司「syntanって3DCG作れるじゃん？」
sn「作れますね(１年ちょっとくらいの趣味でしか経験がない初心者ですが)」
例司「これ(小さいPCとその他機械がつながったもの、いわゆるIoT機器)を入れる箱を作ってほしいんだけど」
sn「なるほど…」
例司「1か月でよろしく」
sn「なんてこった」
※結局いろいろあり、2か月くらいまで伸びました

# ~~顧客~~ 例の上司が実現したいこと

「小さいPCとその他機械がつながったもの、いわゆるIoT機器」を入れる専用の箱を作って、~~客先にもっていってドヤァしたい。~~
現行はスペース効率の悪い大きな箱に入っていて、断線問題も深刻で安定度が低いため、省スペース化、安定化、ついでに見栄えをよくしたい。

# 3Dプリンター調査

私自身、家庭で使用できる3Dプリンターの出現まではうっすら知っていましたが、どのように使うのかはまったく事前知識がない状態でした。また、社内にも知見がある人は存在していませんでした。

まず必要なことは、3Dプリンタで使えるファイル形式、そのファイル形式を扱えるソフトウェアを調査、調達です。

調査の結果、あらゆる安価な光造形3Dプリンターで使用されるスライサーソフト [CHITUBOX](https://www.chitubox.com/en) というもので、出力用ファイルを生成できることを知ります。

そしてCHITUBOXに読み込めるファイル形式はSTL、OBJ。これなら私がいつも使用する、Blenderが使えます。

なんとかフリーで使用できるソフトのみで対応できそうです。

## 3Dプリンタの出力方式

3Dプリンタは出力方式がいくつかあり、例えば個体の樹脂を熱して溶かしたものを積み重ねて出力するFDM法、液体の樹脂に紫外線を当てて固め重ねて出力する光造形法など。それぞれ、得意なモデル形状だったり、仕上がりの精密さが異なったりするとのこと。今回私が使用したのは、光造形法の3Dプリンタです。

## スライサーソフト

スライサーソフトというのは、3Dモデルを薄くスライスし、光造形3Dプリンターで出力される層を作るものです。光造形3Dプリンタはその薄い層を積み重ねることで立体形状を出力可能としています。

# 出力実験

必要と思われるソフトがそろったので、出力実験を行います。
確認する事項は、

* 3Dプリンタが正常に動くかどうか
* 準備したソフトウェアと想定するファイル形式で問題ないかどうか
* 寸法はデータ通りに出力できるか

です。

## 20mmキューブ

最初にBlender上で1辺20mmの立方体を作成し、
![20mmCube_blender.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673394/5bc6e3b8-8e79-c1d2-dacd-0ae90f59ff7b.png)

STLで出力、CHITUBOXに読み込んでみました。
![20mmCube_chitubox.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673394/6fa890bd-8b00-bea2-eafa-d9555505f9dd.png)
読み込めてるっぽいけどみえない…！？

寄ってみると、小さいのがいました。
![20mmCube_chitubox_zoom.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673394/a7c26328-a996-c28e-27b8-db1be6070704.png)

どうやら、Blender上の寸法とCHITUBOX上の寸法が等しくないようです。

いろいろ試したところ、Blender上のmとCHITUBOX上のmmが対応するようでした。1000倍の差がある感じです。

![20mCube_blender.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673394/3789fac0-c8be-6a4f-d43c-8a64981d4d39.png)

![20mCube_chitubox.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673394/c7450305-e5b1-a6e1-9f24-efef71178144.png)

3Dプリンタの出力結果を定規で確認したところ、確かに1辺20mmの立方体が出力できていました。CHITUBOXの下のマス目は10mmに対応していそうですね。
出力実験完了です。

# 夢の専用筐体作成

ここからいよいよ箱のモデリングです。
考慮する必要がある項目は

* 中に入れるものの配置
* ボタンや端子受け口の取り出し方
* 3Dプリンターで出力できるサイズ
* 組み立ての手順
* 光造形3Dプリンターで正確に出力できる形状、出力方向
* 製造工程に移ったときに効率的に出力できること
* 有色レジンと透明レジンの出力誤差

です。実際に使用する機器を、定規(大工さんが使うような高性能の測定機器なんて持っていないのです)で計りながら寸法と形状を決定、出力テストを行い、出力誤差を受け入れる遊びの設定をしていきました。
それぞれ困難だった部分を抜き出してみます。

## ボタンや端子受け口の取り出し方

ボタンや端子受け口を箱の外から任意に操作、つけ外しができるように
という要件があったため、ボタンや端子を固定するためのストッパーを作成しました。採寸、テスト出力、遊びの調整を何度か繰り返し、何とか端子が押し込まれてしまう問題を解決しました。
複雑な形状の端子は採寸の時点で誤差が大きく、3Dスキャナーが欲しくなりましたね…。

## 3Dプリンタで出力できるサイズとパーツ組み立て

3Dプリンターで出力できるサイズの上限が決まっていて、かつ必要な箱の大きさはその2倍以上となっていました。つまり、組み立てに必要なパーツ分割の他にも、サイズ上限を回避するためのパーツ分割が必要ということです。
また、パーツを分割するということは、それぞれにパーツ組み立てに必要なネジ穴、ネジ頭が出っ張ること、ネジ穴にドライバーが届くか、ドライバーが回せるか、細かい考慮事項はどんどん増えていきました。

## 光造形3Dプリンタで正確に出力できる形状、出力方向

光造形3Dプリンタは薄くスライスしたものを積み上げて立体造形物を作ります。その関係上、積み上げる土台がない部分は、サポート材(細い棒を網目状につなげるもの、平たくいうとプラモデルの枠部分のようなもの)を付ける必要があり、サポート材が付くということは、仕上がりが凸凹し正確性が下がります。他にも、出力方向に向かって重力で僅かながら変形が起こったり、積み上げる層の解像度により精密さが左右されたりします。
そのため、できるだけサポート材が必要ないよう積み上げる土台部分となるものをモデル自体に追加する。細部が正確に出力できるよう方向を考慮してモデルを調整する。などを行いました。

## 製造工程に移ったときに効率的に出力できること

形状が大体決まったころに、3Dプリンタの出力にかかる時間は非常に長く、効率的に出力できるよう調整できないかとの要件追加が行われました。

光造形3Dプリンタの出力時間に影響するのは、モデルの体積ではなく、モデルの高さです。一つだけ出力しても、出力可能エリアにできるだけ多くのパーツを並べて一気に出力しても、高さが同じなら同じ時間で出力が可能ということです。
ただし、上記の通りモデルの出力方向を変えると正確性が失われ、サポート材が増えて仕上がりが凸凹になります。また、まとめて出力するとそれだけ一つ一つの失敗の可能性も上がり、一つ失敗すると隣にあるパーツも影響を受けて被害が拡大するかもしれない、というリスクが伴います。

そのリスクを受け入れたうえで、とりあえずやってみようということになり、出力実験を行いました。

出力結果を確認したところ、全体のうちで一番細かい部分(幅1mm未満の溝)が縦横出力方向を変えると、つぶれてダメになってしまいました。
許容できない誤差が生まれる部分は元の出力方向で出力、そのほかはまとめられるだけまとめて出力というところに収まりました。

## 有色レジンと透明レジンの出力誤差

最初は透明レジンを使用して実験を行っていましたが、実際の製品では有色レジンでやりたいとのことで、途中からグレーの有色レジンに変更になりました。

何が変わったかというと、出力方向への太り誤差が透明レジンより有色レジンを使うと減りました。
要因の予測としては、透明レジンだとすでに硬化したレジン越しにその上に取り残された液体レジンまで紫外線が届くため、不要な部分まで硬化していた。有色レジンだと、すでに硬化したレジン越しに取り残された液体レジンまで紫外線が届くことが少ないため、不要な部分の硬化が行われなかった。ということなのかなと考えています。

初めは透明レジン向けにモデルの調整を行ってしまっていたので、有色レジン向けにモデルの再調整を行うことになりました。


# 3Dプリンタの出力の調子が悪い！

ある時を境に、3Dプリンタの造形物の向かって右側が、造形の土台(プラットフォーム)にくっつかず、はがれてしまうようになりました。
はがれてしまうとどうなるかというと、出力結果が大きくゆがみます。

## 原因調査
### レジンのボトルが切り替わったから？

出力の調子が悪くなったころ、最初のレジンボトルが終了して、次のレジンボトルを使用し始めていたところでした。しかし、どちらも同じメーカーの同一製品。すこし見た目(液体レジンの色味)が異なっていたものの、これが要因とは考えにくかったです。

### プリンターが使用劣化してきた？

右側の調子が悪いということで、まずはフィルムの劣化を考慮し反転してみましたが、影響なし。その下のUV照射部分が劣化している可能性は残りました。

### レジンの温度が低すぎる？

調子が悪くなり始めたのは、冬が近づき気温が下がってきていたころ、空調は行われていますが、それでも室温は低くなりがちでした。

## 調査の結論

原因を明確に特定することは出来ませんでしたが、3Dプリンターの右側の性能がもともと低く、気温が下がったことで顕著になったのではないか。ということに収まりました。

## とりあえずの対応策

一層一層のUV照射時間を倍に長く設定すると、問題なく出力が可能となったので、その対応で進めることとなりました。

### UV照射時間を伸ばしたことによる弊害

しかし、一層一層のUV照射時間を長くすると、3Dプリンターから出力後のモデルは、今までのものより硬く出るようになります。硬くなるとどうなるかというと、通常プラットフォームから取り外す際は多少曲がって取れるのですが、その時に折れてしまったり、取り外すこと自体が難しくなったりしました。

### 弊害事件

出力された造形物がなかなか剥がせず、スクレイパー(金属のへらで先が刃のようになっているもの)で造形物とプラットフォームの隙間を叩いていたところ、不意に造形物がはがれてその先の押さえていた手の指に刺さりました。いててて…。

### 弊害事件対応策

このままでは、毎回指にスクレイパーが刺さって大変だなあと思ったので、プラットフォームから外しやすいように造形物自体にスクレイパーが入る隙間を付けるようにしました。これで剥がすときに折れてしまうことも減らせそうです。


# まとめ

以上のような事件がありつつ、執務室の中央で3Dプリンターを動かしていたら騒音クレームが入って3Dプリンターもろとも廊下に追い出されつつ、なんとか専用の箱が完成しました。
省スペース化、安定化、ついでに見栄えが良くなった弊社の箱入りIoT機器が、ユーザー様のもとで活躍することを願うばかりです…。