3Dプリンター作る!3Dプリンター作る!3Dプリンターを作る。3Dプリンターで作る。slic3r某掲示板の3Dプリンターのスレッドで、少し前にスライサーの外周がどこを通っているかの話題が上がっていました。実際のところ本当はどこを通っているのか理解していなかったので確認して、実際にプリントしたものと違いを比較してみました。Gコードのパスはどこを通ってるの?某掲示板にある個人向け3Dプリンターのスレッド。そこであるものをプリントしてみたら少しだけ大きいという投稿があって、スライサーで出力したGコードは、実際どこを通っているの?という話題が上がっていました。CNCなどではGコードが描くパスをミルの中心が通るので、ミルの太さの半分だけ内側にオフセットしなければいけないといったことを聞いたことがあります。3Dプリンター用のスライスソフトではどうなっているんだろうか?実際のところ自分でもそのへんを理解していなかったので、これを機会に調べてみることにしました。GコードとはGコードは、もともとNC機械で座標系を使って軸の移動を処理するコードです。軸の移動以外にも処理出来るコードがあります。3Dプリンターで使用するGコードには、このもともとの標準のGコードコマンド以外にRepRapが定義したMから始まるコードもあり、使えるコードも使用するファームウェアによって弱冠の違いがあるようです。基本のGコードは「G1」から始まるノズル移動の為のコードで下の様になっています。E3.24518「G1」はノズルの移動のコマンド。]の長さに押し出しなさいというコマンドです。単位はミリメートルです。このコマンドに従って3Dプリンターは前の点から移動し、同時にフィラメントを前の長さから押し出します。3DプリンターのGコードに付いてはRepRapの「G-code/ja」に詳しく載っています。3Dプリントの為のG-CODE」に大変分かりやすくまとめられています。僕も以前に参考にさせていただいました。ありがとうございます。・ばーちゃわーるどスライスソフト「Slic3r」のGコードを調べてみる僕はスライスソフトをSlic3rしか使ったことが無いので、今回調べたのはSlic3rです。OpenSCADで横20mm×奥20mm×高さ5mmの直方体の中心に直径10mmの穴をあけたモデルを作りました。Slic3rでスライスしてGコードを出力します。Converter)でGコードを確認します。(出力されたGコードは拡張子を.txtに変更すればテキストエディタで開くことが出来ます。)またNCVCはGコードのデータをdxfファイルで書き出せるので、CADで開いてそれぞれの寸法も確認してみました。上のモデルをスライスしたGコードを[G-code]のページで見ることが出来ます。Slic3rの設定は(A)(後述)です。(3千行近くあります。)G-code・NCVCSlic3rの設定スライスソフトSlic3rの主な設定は以下の通りです。ノズル径は0.4mmです。0.4mmGコードが指定する座標スライスソフトSlic3rが出力した座標を確認してみます。直方体の外周部、中心にあけた穴の外周部、infill部分に分けて見てみます。Infill(100%のinfill)の部分です。Y100]としています。直方体の外周部のうち、一番外側の角4点の座標は下の通りです。ノズル径の半分だけオフセットされています。「プリントしたモデルの大きさ」=「設計したモデルの大きさ」となるように計算されていますね。外周部のパスの間隔は0.4mm。こちらはノズル径の太さだけずらして並んでいます。中心にあけた穴の外周のうち、一番外側(穴の中心に近い部分)の座標は下の通りです。ピッタリの数字では無いけれど、穴の直径は10mm(半径5mm)なので、こちらもほぼノズル径の半分だけオフセットされています。円は直線で分割されているので、穴の最小部分は設計したモデルよりも少しだけ小さくなります。穴の外周部も直方体の外周部と同じようにパスの間隔はノズル径の太さだけずれています。infill部分infill部分はパスの間隔だけ見てみます。layer)を見ているので100%の充填をしていますが、パスの間隔は、0.64mmとノズル径の約1.5倍になっています。逆に外周部とinfillが接する部分の間隔は0.315~0.321mmとなっていて、こちらはノズル径よりも小さくなっています。プリントしたものの大きさを測定してみるGコードが出力する座標とパスがわかったので、今度は実際に3Dプリントしたものの大きさを見てみます。フィラメントを押し出す部分の順番を変えて、いくつかプリントしてみました。infill」の順番でのプリントです。外周部は内側(infillに近い方)からプリントしています。立方体の幅を測ってみると20.09mmでした。設計したモデルよりも0.09mm大きいけど、思っていたよりも誤差は小さかったです。中心の穴の直径は9.59mm。スケールを当てるのが難しくて、測る部分によって数値が違ってくるからあまり正確では無けれど、穴は少し小さめですね。perimeters)次は「infill」→「外周部」と逆にしてみます。perimeters」にチェックを入れます。外周部は前回と同じく内側(infillに近い方)からプリントしています。立方体の幅は20.14mmでした。穴の大きさは9.63mm。Gコードのパスを見てみて分かったようにinfillと外周部が接する部分のパスの間隔が狭くなっているので、infillを先にプリントするとその分だけ外側に押し出されているのでしょうか。立方体の幅は大きくなっています。穴は少し大きくなっているけど(A)とほぼ同じでした。first)こんどは(A)と同じく「外周部」→「infill」の順だけど、外周部の一番外側をまずプリントするようにしています。first」にチェックをいれます。立方体の幅は20.03mm。穴の大きさは9.73mm。幅に関してはもう誤差の範囲ですね。設計通りの幅になっています。外周部の一番外側を始めにプリントしているので、他のパスの影響を受けていないですからね。穴に関しては改善はしているけれど、やっぱり小さくなってしまいました。0.9)もう(C)でほぼ誤差の範囲になっているので良いのだけど、こんどはフィラメントの押出量を90%に減らしてプリントしてみました。Multiplier」を「0.9」にします。他の設定は(A)と同じで、「外周部」→「infill」の順番でプリントしました。立方体の幅は20.05mm。穴の大きさは9.75mm。(A)よりも少し良い結果ですが、押出量を減らしても大きさには余り影響していないですね。ノズル径の大きさでしかフィラメントが押し出されないから、少なくしても幅は変わらない。その代わり密実な充填では無くなってしまっているんじゃないかなと思います。中心の穴に関してはやっぱり少し小さくなってしまいます。Gコードはきちんとオフセットされた位置のパスになっているけど、(A)~(D)まで全て小さくなっています。これはノズルが円を描く時に曲がる方向、すなわち円の中心の方に押し出したフィラメントが引っ張られていて、その影響で円が小さくなっているんじゃないかな。(E)中心の円を四角にするそれじゃあ次は、押し出されたフィラメントが曲がる方向に押し出されないように、中心の穴を四角形にしてみます。四角形の穴の大きさは10mm×10mm。設定は(A)と同じです。測る位置が難しすぎてこれこそ正確では無いと思うけれど、四角形の穴の幅は9.98mmでした。円よりも誤差は小さくなっていますね。円の場合は穴が小さくなる傾向にあるみたいです。(A)~(E)までの結果(A)~(E)までの立方体の幅と穴の大きさ、誤差を表にまとめました。ー9.98Δ0.02スライサーが出力するGコードと実際のプリントのまとめスライスソフトSlic3rが出力するGコードは、ノズル径を考慮してオフセットされたパスが出力されます。円形(曲線も)に関しては、その曲線の分割数や分割場所によっては大きさが異なる部分も出てくる部分もあります。OpenSCADは円の分割数を設定することが出来るので、より正確な円にしたい場合はその分割数を多くすれば良いと思いますが、その他のCADとかモデリングソフトはどうなっているのでしょうか。Slic3rだけしか見ていないけど、100%のinfillは、実は密に並んだパスを描いていない。infillと外周部は少し重なっている。いうことも分かりました。そのオフセットして出力されたGコードでプリントすると、ほぼ設計通りの大きさでプリントされますが、円などは小さくなってしまいます。外周部よりも先にinfillをプリントすると、infillの影響で外周部が少し大きくなる。正確な大きさや穴があいたものをプリントしたい時の為に、事前に幾つか大きさの異なるモデルを作っておいて、実際にどのくらいの大きさになるか把握して置くのが良いですね。すれば例えばM3のボルトを通す穴を開けたい時に、きつい穴、ちょうどの穴、すこし遊びのある穴など、適宜使い分けられます。ベアリング用の穴とかも、きつく固定出来る穴とすぐに取り外せる穴とかも出来ます。今回はXY平面の場合でしか見ていないので、横向きとか斜めの場合はまた違ってくるだろうと思います。今回もこのブログを書くのに時間がかかってしまい、もう掲示板ではこの話題はすっかい無くなっていました。Slic3rが出力するGコードを確認することが出来たし、プリントの精度も分かったので良かったです。AMばーちゃわーるどさん。コメントありがとうございます。どさんのGコードのページをリンクさせて頂きました。PMまたまた、参考になります。ありがとうございます。スペーサーのカラーを作りますが、内径はやはり小さめに出来上がります。S-CADの場合、出来上がりを見て数値をいじってます。(蛇足ですが、円は$fん=100で滑らかな円にしてます。AMyama4taさん。コメントありがとうございます。僕はいつも$Fn=32にしていますよ。AM大変参考になりました。CNCの誤差は知っていたのですが、3DプリンタのG-codeはどうなっているのか気になっていました。AMぐ~とさん、コメントありがとうございます。スライサー(Slic3r、CURA、kisslicerなど)によって同じモデルを同じような設定でスライスしても出力するGコードが少しずつ違ってくるみたいですので、いろいろと試してみてください。PM内円は・・・分割頂点の対角距離が設計距離になり、各分割頂点をつなぐ直線は必然的に設計距離より内側を通ります。内径は分割数を上げて限りなく真円に近くするか、頂点間直線部分の2等分線で作った対角線が設計距離になるように円を拡大しなければなりません。コメントをキャンセルメールアドレスが公開されることはありません。上に表示された文字を入力してください。PostsAutodeskのFusion360で”ローレット加工”を作るデルタ型3Dプリンターを作る。-フレーム完成100円ショップのアクリルスタンドでLCDコントローラーのケースを作るデルタ型3Dプリンターを作る。改良PROFILEAKIRA3Dプリンターを自作したり、改良したり、それで好きなモノをプリントしたりして遊んでいます。上手く行かないことが多くて試行錯誤してます。デルタ型3Dプリンターを作る。