Adventurer3-OrcaSlicer

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

【重要】FlashPrint5更新終了のお知らせ
日本国内向けに3Dプリンターを販売しているFLASHFORGE JAPAN(フラッシュフォージ ジャパン)です。家庭用から工業向けまで、幅広い製品を取り扱っています。充実したアフタサポートで、国内に販売拠点・修理拠点があるので、安心してご使...
  • 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から乗り換える場合の問題点

ざっと触った感じ、以下のものがある。まだ実機判断してないので、その時はまた記載する。

  1. Adventurer3に直接印刷できない。
  2. ヘッダー・フッターに疑問なコード出力がある。
  3. G3コードが出力される。
  4. M106/M107の取り扱いの違い。
  5. 解釈可能かどうか不明なGコード。
    G3コードについては先に記載。

それぞれについて、解説及び可能であれば対策を記載する。

Adventurer3に直接印刷できない

OrcaSlicerから機器にスライスしたGコードを転送できる機能を有しているのだけど、Adventurer3にそれを使って転送しようとしても、転送できなかった。

転送中の情報をWiresharkでパケット解析したら以下2つの問題が判明。

  1. ファイル転送の送信単位が4096以下になっていない。
  2. 転送終了・データ保存を表す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値の設定

コメント

タイトルとURLをコピーしました