1.はじめに
今回は、其の7,其の8で求めたスライス面(閉領域),閉領域の縮小領域(インフィルの領域)から出力結果(インフィル)となる要素を求めていきます。
2.求めるもの
現状本ソフトでは、1種類のインフィル形状になります。(Simplify3Dで[Infill]タブのInternal Fill PatternをRectilinear指定した場合と同等になるはずです。
今回のインフィルもそうですが、基本的には一筆書きの線(パス,ルート,経路)を求める方が印刷結果が良くなります。(これについては別途記載するかもしれません)
インフィルは以下の様になります。(パラメータとしては45度/-45度)
3.基本的な考え方
求めるもので示した様な四角形状の場合を例に説明します。
-
この閉領域のある点をスタート地点とします。(右上に上がる斜め線の場合は左下の点,左上に上がる斜め線の場合右下の点が良いと考えます。)
-
次にインフィルの網目となる斜線部分をパラメータの角度から生成します。(紫色がイメージ。ここでは、S地点を通過する斜線のみ)
-
まず、斜線を1ステップ(今回は)右へ移動させます。そして、スタート地点から、L1と交差する斜線部分までの線を経路登録します。
以降は、開始地点からと同じ要領(4~)で繰り返しです。
※補足
処理中は、S地点のとき、当該頂点を含むL1/L4の稜線と斜線となる線を保持します。
そしてアルゴリズムを繰り返すうちに、(今回の場合)L4と斜線が交差しなくなります。このときL4の代わりにL3を保持することになります。
同様にL1の次はL2となります。
アルゴリズムの終了はこの閉領域が終了する点(L2/L3に含まれる頂点)になります。
簡単な閉領域の場合、この基本となるアルゴリズムのみで良いのですが、少し複雑な形状などでは、一筋縄ではいきません。
なので、また別の機会にでも考慮点などを説明できればと思います。
ただ、別のよいアルゴリズムが無いかとも模索しています。
4.斜線の移動量について
上記例では、S地点から一定間隔で右へ移動させています。
この一定量はどのように計算するのか。
ちなみに2項の絵は、ノズル径0.4[mm]の20[%]インフィル設定時の場合です。
まず、インフィルが100[%]の場合を考えます。
この場合、ノズル径の幅で経路となる斜線が移動します(斜め基準で)。つまり図中Xは三角関数でパラメータの角度とノズル径から得られます。
では50[%]の場合は?...線有り,線無しと経路を描く事になります。よって、100[%]時の倍の移動量です。(本当はL1上など繋ぐ部分もあるので本当の充填率とは異なる)
充填率の逆数を100[%]時の移動量に掛ければよいと思います。
※インフィル0[%]時は処理自体しません。
5.おわりに
これで、1層当たりの基本的なスライス結果が得られました。
この1層当たりのスライスをモデルの全高さ分繰り返し、あとは結果をG-Codeとして出力すれば良いことになります。
※本当ならもっと考慮する点は多々あるのですが、まずはきっかけ部分のみで。