スライサー（FDM式３Ｄプリンタ向け）の作成　其の２（ソフト概要）

* [スライサー（FDM式３Ｄプリンタ向け）の作成　目次](http://qiita.com/isTwt/items/5d40286eec73296ea790)

-----

# １．はじめに
　今回は、作成したスライサーソフトの概要を説明します。
　今後記載するスライスアルゴリズム（考え方）の先にあるのがことのソフトになります。
 
# 2．ソフト概要
　以下の様な概要になります。

* コマンドライン形式（ＣＵＩソフト）
* 入力はＳＴＬファイル
* 出力はG-Codeファイル
* パラメータはxml形式（独自仕様）
* スライサ本体機能部分はDLL化
* 対応OSはWindows（windowsしか環境が無いため。Windows特有のAPIは利用していないつもり）
* 開発環境はMicrosoft Visual C++ 2010 Express

　DLL化については、モデリングソフト（私の場合Shade3Dのプラグインとして）や、フロントエンドソフトから呼び出せることを考慮して。
　ＣＵＩ化については、まずは利用するため。
　３Ｄデータ形状表示や、スライス結果表示などのＧＵＩ部については、別途開発とし、今回は省略。
　入力データの作成はShade3Dで行いました。（3Dプリント様補助機能やチェッカーがあり便利です）
　また、スライス中の結果などを３次元的に確認するためDXF形式でファイル出力し、Shade3Dで確認しました。
　出力結果（G-Code）の確認は、Simplify3Dで行いました。

## 2－１．パラメータファイル
※Simplify3Dをリスペクトしているため、パラメータ名などが一致するかもしれませんが、同じ機能とは限りません。
　スライスパラメータはxml形式のファイルとし、複数定義や交換，入替えをしやすくを目指しました。
　ここも従来のスライサーで利用しづらかった面を改良したポイントになります。

## 2－２．コマンドラインパラメータ
　現状以下の様になります。
　また、実行時に数種類のパラメータをコマンドラインから指定し、パラメータファイルに設定した値を上書き利用できるようにもしました。

```cl
cmdline [-pt]file [-po path] [-pp file] [-pb file] [-pr file] [-ps file] [-ts val]
[-ts xval,yval,zval] [-tr xval,yval,zval] [-tm xval,yval,zval]
[-otb] [-mbc] [-noprompt]
[-op_dlh height] [-op_spd speed] [-op_inf infill] [-op_skb skirt/brim] [-op_raf raft] [-op_sup support]

[-pt]file : STLファイルパス(モデルデータ)
[-po path] : 出力先フォルダ
[-pp file] : パラメータファイル
[-pb file] : STLファイルパス(スカート／ブリムモデルデータ)
[-pr file] : STLファイルパス(ラフトモデルデータ)
[-ps file] : STLファイルパス(サポートモデルデータ)
[-ts val] : XYZ等倍のスケール指定
[-ts xval,yval,zval] : XYZ個別のスケール指定
※スケールで負数指定の場合,モデルの反転指定
ex.-s -1,1,1でx軸反転
[-tr xval.yval.zval] : 回転指定
[-tm xval,yval,zval] : 移動指定
[-otb] : ベッド上へ移動(Zの自動移動)
[-mbc] : ベッド中央移動(XYの自動移動)
[-noprompt] : ｺﾏﾝﾄﾞﾗｲﾝでの入力なし
[-op_dlh height] : ﾃﾞﾌｫﾙﾄ積層高さ変更
[-op_spd speed] : ﾃﾞﾌｫﾙﾄ速度変更
[-op_inf infill] : infill充填率更新
[-op_skb skirt/brim] : ｽｶｰﾄ/ﾌﾞﾘﾑ利用更新
[-op_raf raft] : ﾗﾌﾄ利用更新
[-op_sup support] : ｻﾎﾟｰﾄ利用更新
```

## 2－３．出力結果
　10[mm]角の正方形をスライスした結果です。
　このファイルをSimplify3DやCraftWareで読み込むと種別ごとの色表示に対応します。

[Simplify3D](https://www.simplify3d.com/)
![s3dキャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/157557/21894914-d9f1-ae9e-b54e-1a19d7f8e17a.jpeg)

[CraftWare](https://craftunique.com/craftware)
![cwキャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/157557/4b9671c9-96b1-8009-98d0-14a271f29faf.jpeg)

```cl:（抜粋)
;--------------------------------------------------
; total info
; action time          :   00:02        (175105.84 [ms])
; action length        :    5.96 [m]    (  5956.47 [mm])
; action avr. velocity :   34.02 [mm/s] (  2040.98 [mm/min])
; filament extrude  : (1)   0.24 + (2)   0.00 = (t)   0.24 [m]    ((1) 239.75 + (2)   0.00 = (t) 239.75 [mm])
; filament capacity : (1)   0.58 + (2)   0.00 = (t)   0.58 [cm^3] ((1) 576.66 + (2)   0.00 = (t) 576.66 [mm^3])
; filament grams    : (1)   0.59 + (2)   0.00 = (t)   0.59 [g]
; filament price    : (1)   2.54 + (2)   0.00 = (t)   2.54 [price]
;--------------------------------------------------
; pre code start
G28
G90
M82
T0			 ; T0 select
M140 S90
M190 S90
M104 S0 T1
M104 S175 T0
M109 S175 T0
G92 E0
G1 E-4.0000 F2400
M104 S245 T0
M109 S245 T0
M106 S0
;--------------------------------------------------
; Starting G-Code Script
;--------------------------------------------------
G1 X100 F8000	 ; move X100
M700		 ; (org)Start Print
;--------------------------------------------------
; pre code end
;--------------------------------------------------
; layer info
; action time          : 24128.1206 [ms]
; action length        :   273.5705 [mm]
; action avr. velocity :    11.3382 [mm/s]
; filament extrude  : (1)   0.02 + (2)   0.00 = (t)   0.02 [m]    ((1)  15.53 + (2)   0.00 = (t)  15.53 [mm])
; filament capacity : (1)   0.04 + (2)   0.00 = (t)   0.04 [cm^3] ((1)  37.36 + (2)   0.00 = (t)  37.36 [mm^3])
; filament grams    : (1)   0.04 + (2)   0.00 = (t)   0.04 [g]
; filament price    : (1)   0.16 + (2)   0.00 = (t)   0.16 [price]
;--------------------------------------------------
; layer 1
; layer 1, Z = 0.300
G1 Z0.300 F1002
; inner perimeter
;segType:Loop
G1 X70.600 Y69.400 F4800
G92 E0
G1 E4.0000 F2400
G92 E0
G1 X70.600 Y60.600 E0.5157 F720
G1 X79.400 Y60.600 E1.0314
G1 X79.400 Y69.400 E1.5472
G1 X70.600 Y69.400 E2.0629
G92 E0
G1 X71.000 Y69.000 F4800
G1 X71.000 Y61.000 E0.4688 F720
G1 X79.000 Y61.000 E0.9377
G1 X79.000 Y69.000 E1.4065
G1 X71.000 Y69.000 E1.8753
G92 E0
; outer perimeter
;segType:Perimeter
G1 X70.200 Y69.800 F4800
G1 X70.200 Y60.200 E0.5626 F450
G1 X79.800 Y60.200 E1.1252
G1 X79.800 Y69.800 E1.6878
G1 X70.200 Y69.800 E2.2504
G92 E0
; solid layer
;segType:HShell
G1 X71.200 Y61.200 F4800
G1 X71.736 Y61.200 E0.0314 F720
G1 X71.200 Y61.736 E0.0758
...（中略）...
G1 X78.278 Y68.800 E9.2706
G1 X78.800 Y68.278 E9.3138
G1 X78.800 Y68.800 E9.3444
G92 E0
G92 E0
G1 E-4.0000 F2400
G92 E0
G1 X70.600 Y69.400 F4800	;sp2
;--------------------------------------------------
...（中略）...
;--------------------------------------------------
; post code start
T0
G92 E0
G1 E-4.0000 F0
M106 S0
M140 S0
M104 S0 T0
;--------------------------------------------------
; Ending G-Code Script
;--------------------------------------------------
G1 Y0 F8000	 ; move Y0
M701		 ; (org)End Print
M84		 ; disable motors
M31		 ; show print time
;--------------------------------------------------
G28	 ; home all axes
; post code end
;--------------------------------------------------
; Build Summary
;   Build time: 0 hour 2 minutes
;   Filament length: 239.7 mm (0.24 m)
;   Plastic volume: 576.66 mm^3 (0.58 cc)
;   Plastic weight: 0.59 g (0.00 lb)
;   Material cost: 2.54
```

# ３．おわりに
　今回は、作成したソフトの概要紹介でした。