1.はじめに
本ソフトでは出力対象の輪郭を表す部分を外壁と称しています。
立方体で例えると、水平な面(2面:上面/下面),垂直な面(4面:正面/背面/右側面/左側面)となります。
これらの面の厚みについての考察です。
2.パラメータ
パラメータで外壁の厚みが指定されます。
水平面については、[print-Layer-topSolidLayers]で上面の厚み,[print-Layer-bottomSolidLayers]で下面の厚みです。
垂直面については、[print-Layer-perimeterOutlines]です。
積層高さ=0.3[mm]/ノズル径=0.4[mm]の場合で例えると
topSolidLayersが 3(層)指定の場合、3×0.3=0.9[mm]となります。
perimeterOutlinesが3(ループ)指定の場合、3×0.4=1.2[mm]となります。
3.考慮点
この指定方法は、スライサーとして利用しているSimplify3Dの指定方法なのですが、スライサー目線の指定方法だと考えます。
ユーザ目線からの指定方法は、「一律1[mm]としたい」や「最低でも1[mm]以上欲しい」などではないでしょうか?私はそう思います。
ノズル径の違うツールヘッドを利用したり、積層高さを変更したりすると、上記厚み部分も合わせて調整しなければいけない状況です。
本ソフトは、上記[topSolidLayers]/[bottomSolidLayers]/[perimeterOutlines]のパラメータは元々の(層)や(ループ)指定の代わりに[mm]単位指定もできりょうにしました。
[mm]指定の場合、その時の層高さや、ノズル径から必要な、層数やループ数を逆算させることになります。
他のパラメータもいくつか同様の改良をしています。
参考:付録C パラメータ
4.ところで...
下図のような形状の場合、外壁の厚みはどのようになるでしょうか?
(横からの図。三角柱を横にした形状)
垂直,水平面(下記黄色枠)は前記直方体と同じですが、斜めの面(下記赤色枠)については別に考慮する必要があります。
上図の場合、面が上方向であるめた、上面厚みと側面厚みを考慮します。
水平方向の厚みは、パラメータ[perimeterOutlines]で必要な厚みがとれます。
しかし上面方向の厚みについては注意が必要です。
下図の場合、垂直方向の厚みが不足します。(水平方向3ループ)赤黄緑。垂直方向を見ると3層無く、1層や2層分となる)
これを解消するため、下図のエリアを外壁として扱う必要があります。(水色塗りつぶし。斜め部分ではオレンジ囲い
本スライサでは、この領域(外壁とする領域)を求めるため、以下の方法としています。
- 出力対象の各面のうち法線が上向きの面(法線のZ>0)を元に垂直方向の厚み(topSolidLayers相当の厚み)分下にシフトした面から構成される上面モデルを生成(下図ではオレンジ)
- 上記同様に法線が下向きの面(法線のZ<0)の面を元に垂直方向の厚み(bottomSolidLayers相当の厚み)分上にシフトした面から構成される下面モデルを生成(下図では水色)
- 出力対象と、上面モデル,下面モデルを同一層高さでスライス
- 求めた3つの閉領域のうち、出力対象の閉領域と、上面モデルの閉領域または、下面モデルの閉領域が重なる部分を外壁部分とする
- 実際は、出力対象の閉領域からまず、水平方向の外壁となるループ分を求め、残るインフィル領域と上面モデルの閉領域,下面モデルの閉領域の重なる部分を求めています。重ならい部分は通常インフィルとなり、重なる部分は100%インフィルとして処理します。