スライサーを斬る（解像度向上、印刷時間短縮）

# はじめに
本記事は、長野高専アドベントカレンダー2024 10日目の記事です。

https://qiita.com/advent-calendar/2024/nnct

3Dプリンターと戯れてけっこう経ったので、継承も兼ねて色々書いてみようと思います。
斬るとか言っちゃってますけど、そんな大層な内容じゃないし雑記になっちゃいました。ごめんなさい

大まかな内容としては、
・自己流プリントルーティーン
・自己流スライス設定
・3Dプリントできれいな円弧を出力する方法
・初期層の失敗率を下げつつ速度を維持する方法
について書いてみました。

この記事で触れた内容を取り入れて損害等が発生しても責任は取れませんのでご了承ください。

# 簡単な自己紹介
高専ロボコンで回路と制御やってます。
プリンター関連で今年やったのは、自作部品の造形や造形代行、メンテナンス、発注周りでした。

# 3Dプリンターまわりの環境
使用機種：
Neptune 4 無印（部室）
・去年購入
・学校LANに繋げなかったので適当なルーターに接続

Ender 3 V3 KE（私物）
・今年ジャンクで購入
・自室のLANに接続

自分が使っているのはこの二台です。
スライス設定はこれらのプリンターを基準に書いてあります。

スライサー：
Cura 5.7.1

モデリング：
Solidworks
Autodesk Fusion(Fusion 360)

とくに捻りのない王道構成です。
# CADからのエクスポートについて
## ファイル形式
印刷するものはSTLまたは3MF形式（スライサーで使える形式）でエクスポートし、Curaに取り込みます。
ちなみに、２つのファイル形式の実用上の差は殆ど無いのでどっちでも大丈夫です。

## CADからのエクスポートで輪郭を滑らかにする方法
Curaがサポートしている拡張子の都合で円弧などが三角形の集合体になるので、以下の手順でCADからのエクスポート時の出力を細かくして誤魔化します。
### Solidworks
指定保存→3MFあるいはSTLを選択
フォルダ選択画面から「ｵﾌﾟｼｮﾝ」を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2842607/43b08155-d131-f3ec-5748-3968895c0056.png)

解像度をユーザー定義にし、偏差と角度を適当に細かく
（目安：偏差を0.01mm程度、角度は3度ぐらいに）
注意：細かすぎるとファイルサイズや処理の負荷が大きくなるので程々にする
その設定で保存する
### Autodesk Fusion
ボディ右クリック→メッシュを保存などから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2842607/055996ed-a7f5-4de2-1de9-a3e6fb0dd570.png)
リファインメント設定を開く
リファインメントを高にする
適宜法線の偏差を小さくする
その設定で保存する

デフォルトで100kBぐらいのファイルなら数MBぐらいまで膨らむけど、どうせ中間ファイルなので気にしないことにします。

# Curaについて
概要は既存の記事におまかせするとして、自分の使ってるプラグインや工夫について書きます。
### プラグイン
自分の環境では以下のプラグインを導入しています
* Arc Welder
    * 円弧っぽい部分のGコードを円弧補間に置き換え→出力サイズ削減・円弧の造形がきれいに
* Auto-Orientation
    * モデルのインポート時、自動で最適な積層方向になるように配置してくれる
* Tabbed Settings
    * スライス設定をいじるときに項目が探しやすくなる

## スライスの大まかな流れ
### モデルの配置
Curaにデータを取り込んだら、全選択してAuto-Orientationでいい感じの向きにします。
底面積が広い面とか、強度とかを考慮して決定します。
思った通りの向きじゃなければ手動で直します。
（空中に浮く部分が多いなど、もらったデータが造形上問題が生じそうなものだったらこの段階で設計者に突き返します。）

全選択し直したら右クリックから「すべてのモデルをアレンジ」していい感じに並べます。
こちらも同様に手動で微調整します。

### スライス設定
プリンターの設定が済んでいることを前提とします。
右側のプリント設定から厚さ0.3mmぐらいの速そうなプロファイルを選びます。
そこから自分の好みの設定を施していきます。
よく触る項目は以下の通りです。
* レイヤー高さとか
    * せっかちなので基本レイヤー厚0.3mm　うまく造形できる限界ギリギリ？
    * アダプティブレイヤー（実験のタブにある）を使うと丸みのある部分だけ細かくできるので、時間節約しながら綺麗にできておすすめ
* インフィル関連
    * 過剰強度な部品は密度を15%ぐらいまで落としちゃいます。せっかちなので
    * インフィルの種類はジャイロイドにしています
    * Gridとかだと交差部分が引っかかって悲惨なことになります
    * インフィルライン接合→オンにすると時間ほぼ変化なしに強度が増すのでおすすめ
* マテリアル
    * Elegooの普通のPLAなら215度ぐらいが良さそうです。早い分ちょっと高めにしたけど問題なさそう
    * ビルドプレートは60度より低いと造形物が剥がれやすくなる気がする
* スピード
    * プリンター次第だけど使っているのは250~300mm/sぐらい、初期層はその1/3ぐらい
    * 加速度制御を有効に→初期レイヤー印刷加速度を200mm/s^2ぐらいまで下げると失敗率が大きく下がる
* 移動
    * 引き戻し距離　造形物が糸を引くなら大きくする
    * 印刷パーツに対するZホップを有効に,高さ0.2mmぐらい→印刷中に壁にぶつかって失敗することが減る
* サポート
    * 造形物によって種類を使い分け（ツリーは角ばっていない材に有用)
    * サポートインターフェースを有効に→サポートの剥がしやすさUP
* ビルドプレート
    * 小さい材はブリム幅3mm,　距離0.12mmとかでも十分。距離詰めるとブリムが剥げづらくなる
    * でかい材は距離つめないとブリムが剥がれて材が浮くので、距離をつめたほうが良さそう
* 実験
    * 小さい穴の最大サイズを10mmぐらい,　小さな機能の速度（small feature speed）を50%ぐらいに→小さい穴のプリントがゆっくりになり、ネジ穴等の部分の失敗率が下がる
* 特別モード
    * Arc Welder　→プラグイン使うなら設定を忘れずに

こんな感じです。

## 印刷
Neptune 4 ならWifiに繋いだ状態でローカルIPアドレス（プリンターの画面でいじれる方の設定から見られる）をブラウザに入力すればPCから操作ができるので、遠隔でアップロードして印刷する。
または、USBメモリを介して直接プリントする。

Ender3 V3 KEならCreality Cloudから印刷できるので、そこから印刷する。
あるいは、同様にIPアドレスを入れてブラウザからプリントする。
USBでも普通にプリントできます。プリント中にUSB抜いても大丈夫なのがこのプリンタの良い点です。

## プリント開始・終了Gcodeの編集
ここからはおまけです。
プリントの開始時、予熱、原点だしなどを行う流れがあります。
デフォルトだと２回原点を出したり、ノズルとヒートベッドを別々で加熱したり刷るようになっていることがあります。
自分の用途だとかなり余剰なので、適宜省いたりインチキしていきます。

元になったプロファイルはhttps://github.com/Ultimaker/Cura/pull/17519
からいただきました。

Ender3 V3 KE プロファイル（編集後）
```
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate
M140 S{material_bed_temperature_layer_0}
M104 S{material_print_temperature_layer_0}

G28 ;Home

G92 E0 ;Reset Extruder
G1 X-2.0 Y20 Z10 F5000.0 ;Move to start position
M109 S{material_print_temperature_layer_0}
M190 S{material_bed_temperature_layer_0}
G1 X-2.0 Y20 Z0.28 F5000.0 ;Move to start position
G1 X-2.0 Y72.0 Z0.28 F3000.0 E15 ;Draw the first line
G1 X-1.7 Y72.0 Z0.28 F5000.0 ;Move to side a little
G1 X-1.7 Y20 Z0.28 F2000.0 E30 ;Draw the second line
G92 E0 ;Reset Extruder
G1 E-1 F1800 ;Retract a bit
G1 Z2.0 F3000 ;Move Z Axis up
G1 E0 F1800

```
本来であれば、ベッドの加熱後、原点に戻ってからヘッドの加熱を開始する流れになります。そのほうがフィラメントの垂れなどを回避できるので一般的なプロファイルはこのような設定になっているみたいです。
ただ、ベッドを60℃まで温めるのってかなり時間がかかるので、その時間中に色々進めちゃいます。

M140,M190はヒートベッド、M104,M109はノズルの温度設定のコマンドです。
十の位が0であれば待機なし、そうでなければ指定温度まで待機することになります。

そこで、M140,M104で同時に加熱を開始し、原点出しをしてから所定の位置に移動、ヘッドが温まったらプリントを開始するようにしてみました。
ついでにノズルを拭う部分もスピードを上げてみました。

初期層のベッド温度をスライス設定で下げておくと、ベッドが40℃ぐらいのときに動き出すようにもできます。
40~60℃の加熱はやっぱり時間がかかるので、加熱しながら初期層を刷ってしまおうという算段です。
実際やってみた感じは失敗することもなさそうなのでPLAなら案外大丈夫なんだと思います。


こんな感じで同時加熱などをするようにしたので電源への負荷が大きい気がしますが、今のところは問題なさそうです。
プリント開始から初期層の印刷が始まるまで実測80秒程度まで縮まったので、小物を良く刷るならやってみる価値があるかもしれません。

## まとめ

外形の綺麗さが必要ならCADのエクスポートから工夫が必要
Curaのスライス設定はデフォルトもいいけどなんだかんだ改善できる
プリント開始のGcodeをいじると印刷開始までの時間を80秒ぐらいまで減らせたり刷る
今となってはプリント手段は色々あるが、結局USBメモリ経由が楽なのかもしれない

## 最後に

アドベントカレンダーにふさわしい記事かと言われたら怪しいですが、せっかくの機会なので継承も兼ねて普段工夫している点をまとめてみました。
3Dプリンターを使う上で、よかったら参考にしてみてください。