Adventurer3のスライサーとしてFlashPrintを使っていたのだけど、とうとうFlashPrintの更新終了のお知らせが出てしまったので、次の”無料”スライサーとしてOrcaSlicerを利用することを考えることにした。

- 2025/06/07
「ヘッダー・フッターに疑問なコード出力がある」一部修正
OrcaSlicer
由来みたいなものは、こちらを参照。
ざっと書くと、slic3r→prusa slicer→Bambu Studio→OrcaSlicerとフォーク発展していったもので、一部SuperSlicerの機能も取り込んでいる。
Orca-FlashforgeはOrcaSlicerからさらにフォークして作られたもの。
Adventurer3用のスライサーとして利用するには
現在(2025/06/06)最新の2.3.0では、システムプリセットとしてAdventurer3の0.4mm、0.6mmノズルのものが用意されている。
これをプリンター設定に使用することで利用することができる。
FlashPrintから乗り換える場合の問題点
ざっと触った感じ、以下のものがある。まだ実機判断してないので、その時はまた記載する。
- Adventurer3に直接印刷できない。
- ヘッダー・フッターに疑問なコード出力がある。
- G3コードが出力される。
- M106/M107の取り扱いの違い。
- 解釈可能かどうか不明なGコード。
G3コードについては先に記載。
それぞれについて、解説及び可能であれば対策を記載する。
Adventurer3に直接印刷できない
OrcaSlicerから機器にスライスしたGコードを転送できる機能を有しているのだけど、Adventurer3にそれを使って転送しようとしても、転送できなかった。
転送中の情報をWiresharkでパケット解析したら以下2つの問題が判明。
- ファイル転送の送信単位が4096以下になっていない。
- 転送終了・データ保存を表すM29コマンドが、ファイル情報の末尾にくっついている。
転送単位が4096以下になっていない問題は、ここで調べたときにわかったこと。
今回の転送結果は以下の通り、4096を超えたデータを1パケットで送信している。
上の図は、キャプチャしたのをキャプチャした画像だけど、送信データのサイズが14600バイトになっている。
次がM29コマンドがファイル転送に追加されて送られているというものだけど、こちらもキャプチャした結果わかった。
この図のようにM29コマンドが最後に入っている。
直接的な原因に関しては、4096バイト問題だとは思う。
対策
すでに対策済みの実装がOrcaSlicer側には入っていて、2.3.0には入れることができなかったのだと思う。次の例えば2.4.0とかでは利用できると思う。
ただ、何となく対策がスリープを入れるという点が微妙に気になる。
boost::asio::async_writeを使って送信してるんだけど、非同期だからかキューにたまったデータを連結して出力しているようで、それをスリープ入れて事前にキューの内容を吐き出すという想定外な使い方をしているような気がする。タイミング、マシン速度、ネットワーク速度によっては4096を超えたデータで転送しちゃうんじゃないかという気がする。
そういった場合、転送が失敗し、「時々転送が失敗する」というIssueが入るんじゃないかと想像してしまう。
自分の場合、Gコードをファイル出力し自前のツールでAdventurer3に送信したいと思う。
一応試したがファイル転送はできたので。
ヘッダー・フッターに疑問なコード出力がある
まずヘッダー項目。
実際の出力 | 定義部の記述 |
M140 S45 T0 M104 S200 T0 M104 S0 T1 M107 M900 K0.02 T0 G90 G28 M132 X Y Z A B G1 Z50.000 F420 G161 X Y F3300 M7 T0 M6 T0 M651 S255 ;pre-extrude M108 T0 G1 X-37.50 Y-75.00 F6000 M73 P0 R18; 自動生成 M106 G1 Z0.200 F420 G1 X-37.50 Y-74.50 F6000 M73 P1 R18; 自動生成 G1 X37.50 Y-74.50 E9.5 F1200 |
M140 S[bed_temperature_initial_layer] T0 M104 S[nozzle_temperature_initial_layer] T0 M104 S0 T1 M107 M900 K[pressure_advance] T0 G90 G28 M132 X Y Z A B G1 Z50.000 F420 G161 X Y F3300 M7 T0 M6 T0 M651 S255 ;pre-extrude M108 T0 G1 X-37.50 Y-75.00 F6000 M106 G1 Z0.200 F420 G1 X-37.50 Y-74.50 F6000 G1 X37.50 Y-74.50 E9.5 F1200 |
上記のうち、太字斜線部分がいらない記述。
FlashPrintでも同様な出力はあったのだけど、それはあくまでスライス結果で自動生成されたもので、固定出力されるものではない。
2025/06/07 追記
この部分は、FlashPrintのプレ押し出しに相当するもので、それを固定コードで記述している。
OrcaSlicerではスカートで代替し、出力を10mm/sとすればいいかも。
ただABS等の出力で保護シールドとする使用する場合、役割として競合してしまうかも。
フッター部分定義は以下のようになるのだが、ヘッダーと同様に太字斜線部分がいらない記述。
G1 E-3 F3600 G0 X50 Y50 F9000 M104 S0 T0 M140 S0 T0 G162 Z F1800 G28 X Y M132 X Y A B M652 G91 M18 |
先頭のE-3はリトラクト処理なのだが、これに関してはOrcaSlicer側の生成に依存するようにする。実際のデータに関して、上記フッター処理の前段階でリトラクト・ワイプ処理が実施されている。
次の平面移動コードは、こちらもFlashPrintでは自動生成されるコードなのだが、そちらはさらにZ軸を上げるという操作が入っており、逆にそのZ軸移動が入っていない。
また次のM106/M107の取り扱いの違いにも関連するが、ノズルファン停止であるM107が入っていない。
ということで、フッターのGコード記述は以下のようなものが望ましい。
M107 G1 Z{layer_z+0.1} F420 M104 S0 T0 M140 S0 T0 G162 Z F1800 G28 X Y M132 X Y A B M652 G91 M18 |
G3コードが出力される
スライサーでの出力にG3コードが出力されていた。
G3コードは円弧補間コード。Adventurer3でこれが解釈できるのだろうか。
実際に出力される場所はワイプ処理。
上のオレンジの真円がG3コードの部分だと思われる。
赤い矢印の先がリトラクト位置。
そこから吐出をなぞるように一定距離移動して戻り、丸を描いて次の吐出ポイントに移動する感じ。
M106/M107の取り扱いの違い
Adventurer3はM106がノズルファンのON、M107がノズルファンのOFFになる。
OrcaSlicerではM106にSパラメータをつけた本来の運用で処理しており、かつM107の利用はされていない。
ファン停止はM106 S0というコードになっている。
これが実際に動作するかどうか、別途確認したい。
解釈可能かどうか不明なGコード
以下のものがFlashPrintでは出力されていなかったものだと思うコード。
- M73
経過情報。Pが進捗(パーセント)、Rが経過時間(分) - M201
最大加速度の設定 - M202
非吐出状態の加速度設定 - M203
最大送り出し量の設定 - M204
デフォルト加速度の設定 - M205
拡張設定 - M106
ファン制御(筐体のものか) - M82
押出機を絶対モードに設定
M92
axis_steps_per_unitに設定 - M132
PID値の設定
コメント