0
0

More than 5 years have passed since last update.

スライサー(FDM式3Dプリンタ向け)の作成 其の9(インフィルアルゴリズム)

Last updated at Posted at 2017-01-04

1.はじめに

 今回は、其の7其の8で求めたスライス面(閉領域),閉領域の縮小領域(インフィルの領域)から出力結果(インフィル)となる要素を求めていきます。

2.求めるもの

 現状本ソフトでは、1種類のインフィル形状になります。(Simplify3Dで[Infill]タブのInternal Fill PatternをRectilinear指定した場合と同等になるはずです。
 今回のインフィルもそうですが、基本的には一筆書きの線(パス,ルート,経路)を求める方が印刷結果が良くなります。(これについては別途記載するかもしれません)
 インフィルは以下の様になります。(パラメータとしては45度/-45度)

三角形状の場合
tra.JPG

四角形状の場合
sq.JPG

3.基本的な考え方

 求めるもので示した様な四角形状の場合を例に説明します。

  1. まずは其の8で説明した閉領域の縮小を繰り返し、インフィルとなる閉領域を求めます。
    a1.JPG

  2. この閉領域のある点をスタート地点とします。(右上に上がる斜め線の場合は左下の点,左上に上がる斜め線の場合右下の点が良いと考えます。)
    a2.JPG

  3. 次にインフィルの網目となる斜線部分をパラメータの角度から生成します。(紫色がイメージ。ここでは、S地点を通過する斜線のみ)
    a3.JPG

  4. まず、斜線を1ステップ(今回は)右へ移動させます。そして、スタート地点から、L1と交差する斜線部分までの線を経路登録します。
    a4.JPG

  5. 次に、斜線部分をそのまま経路とします。(終点はL4との交差まで)
    a5.JPG

  6. 斜線を1ステップ(今回は)右へ移動させます。そして、斜線部分とL4が交差する点までを経路とします。
    a6.JPG

  7. 次に、斜線部分をそのまま経路とします。(終点はL1との交差まで)
    a7.JPG

 以降は、開始地点からと同じ要領(4~)で繰り返しです。

※補足
 処理中は、S地点のとき、当該頂点を含むL1/L4の稜線と斜線となる線を保持します。
 そしてアルゴリズムを繰り返すうちに、(今回の場合)L4と斜線が交差しなくなります。このときL4の代わりにL3を保持することになります。
 同様にL1の次はL2となります。
 アルゴリズムの終了はこの閉領域が終了する点(L2/L3に含まれる頂点)になります。

 簡単な閉領域の場合、この基本となるアルゴリズムのみで良いのですが、少し複雑な形状などでは、一筋縄ではいきません。
 なので、また別の機会にでも考慮点などを説明できればと思います。
 ただ、別のよいアルゴリズムが無いかとも模索しています。

4.斜線の移動量について

 上記例では、S地点から一定間隔で右へ移動させています。
 この一定量はどのように計算するのか。
 ちなみに2項の絵は、ノズル径0.4[mm]の20[%]インフィル設定時の場合です。

 まず、インフィルが100[%]の場合を考えます。
a8.JPG
 この場合、ノズル径の幅で経路となる斜線が移動します(斜め基準で)。つまり図中Xは三角関数でパラメータの角度とノズル径から得られます。
 では50[%]の場合は?...線有り,線無しと経路を描く事になります。よって、100[%]時の倍の移動量です。(本当はL1上など繋ぐ部分もあるので本当の充填率とは異なる)
 充填率の逆数を100[%]時の移動量に掛ければよいと思います。
 ※インフィル0[%]時は処理自体しません。

5.おわりに

 これで、1層当たりの基本的なスライス結果が得られました。
 この1層当たりのスライスをモデルの全高さ分繰り返し、あとは結果をG-Codeとして出力すれば良いことになります。
 ※本当ならもっと考慮する点は多々あるのですが、まずはきっかけ部分のみで。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0