2020年1月12日日曜日

Cura でエクストルーダ・ベッドを同時に加熱する

Cura で吐かれる G-code は,ベッドの加熱が完了しないとエクストルーダの加熱を開始しないので加熱に無駄な時間がかかる.3D プリンタによってはそうする必要があるのかもしれんけど,少なくとも Ender-3 Pro ではその必要はなく,エクストルーダ・ベッドを同時加熱できるはず.
M140 S60 ; ベッド加熱 (突き放し)
M105
M190 S60 ; ベッド加熱完了待ち
M104 S185 ; エクストルーダ加熱 (突き放し)
M105
M109 S185 ; エクストルーダ加熱完了待ち
となっているのを
M140 S60 ; ベッド加熱 (突き放し)
M105
M104 S185 ; エクストルーダ加熱 (突き放し)
M105
M190 S60 ; ベッド加熱完了待ち
M109 S185 ; エクストルーダ加熱完了待ち
とすれば,エクストルーダ・ベッドを並行して加熱してくれるのだが,このコードは以前 blog に書いたスタートアップコードでは書けず,Cura プログラムでハードコーディングされているっぽく,設定で変えることが出来ない.

んーと思ったら,Cura にはプラグイン機能があり色々 python で拡張できるっぽい.プラグインの仕様が多すぎて全貌を把握しきれないのだが,とりあえず PostProcessingPlugin という仕組みで,Cura が disk に吐く直前に G-code を python で好きなように編集できるっぽい.


これを適当な名前で C:\Program Files\Ultimaker Cura 4.4\plugins\PostProcessingPlugin\scripts に置き,
Cura 再起動→メニューの 拡張子→後処理→G-codeを修正→スクリプトを加える→Fast Heating Head and Bed を選択
で,以後エクストルーダ・ベッドが並行で加熱される G-code が出力される.

気をつけるべき点は,
・python を修正時は Cura を再起動しないと反映されない
・python のエラーがあっても何もメッセージ等が出ず,plugin が無効化されるだけ
 →なんか方法があるはずだけど,自分が知らないだけかも
・execute に渡される data は,G-code 1行が 1要素ではなく複数行が 1要素になってるので,初めに data の内容をダンプして確かめたほうが良い

0 件のコメント:

コメントを投稿