スライサー（FDM式３Ｄプリンタ向け）の作成　付録Ｃ（パラメータ）

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

-----

# １．はじめに
　作成したスライサーソフトのパラメータサンプルです。
　パラメータは種類別にファイル化し、メインとなるパラメータファイルで他のファイルを参照する形にしました。また、メインとなるパラメータファイル自体もコマンドラインから指定できるため、ファイル名に規則はありません。

# ２．１　param.xml
　メインとなるパラメータファイルです。

```xml:param.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--
	スライスパラメータ定義ファイル
	[file]　　　　 ：　定義ファイルを定義します。
	　[hardware]　 ：　ハードウェア定義ファイルを定義します。
	　[script]　　 ：　スクリプト定義ファイルを定義します。
	　[print]　　　：　出力定義ファイルを定義します。
	　[filalemnt]　：　フィラメント定義ファイルを定義します。（ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)毎）
	　　[extrude]　：　吐出（押出）幅を定義します。
	[ToolHead]　　 ：　利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
	　[Primary]　　：　ターゲットモデルの利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
	　[Infill]　　 ：　インフィル（ターゲットモデル）の利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
	　[SkirtBrim]　：　スカート／ブリムモデルの利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
	　[Raft]　　　 ：　ラフトモデルの利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
	　[Support]　　：　サポートモデルの利用ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)を定義します。
-->

<profile name="default print settings" version="2016-03-12 00:00:00" app="ISSlicer" type="param">
	<file>
		<hardware        file="Hard.xml"/>
		<script          file="Script.xml"/>
		<print           file="Print.xml"/>

		<filament no="1" file="Filament_ABS.xml">
			<extrude autoWidth="0" width="0.4"/>	<!-- [auto/manual] [mm]	-->
		</filament>

		<filament no="2" file="Filament_PLA.xml">
			<extrude autoWidth="0" width="0.4"/>	<!-- [auto/manual] [mm]	-->
		</filament>
	</file>

	<ToolHead>
		<Primary   no="1"		/>	<!-- [1or2]					-->
		<Infill    no="999"	/>	<!-- [1or2or999] 999 is Primary or Seconday	-->
		<SkirtBrim no="999"	/>	<!-- [1or2or999] 999 is Raft or Primary		-->
		<Raft      no="1"		/>	<!-- [1or2]					-->
		<Support   no="1"		/>	<!-- [1or2]					-->
	</ToolHead>
</profile>
```

# ２．２　Hard.xml
　ハードウェアを定義するパラメータファイルです。

```xml:Hard.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--
	ハードウェア定義ファイル
	[extruder]　　　　　　　：　ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)の定義をします。
	[buildArea]　　　　　　 ：　造形エリアの定義をします。
	[hasHeatedBed]　　　　　：　加熱ベッドの定義をします。
	[hasCoolingFan]　　　　 ：　冷却ファンの定義をします。
	[rapidSpeed]　　　　　　：　空移動速度を定義します。
	[toolChangeRetraction]　：　ｴｸｽﾄﾙｰﾀﾞ(ﾂｰﾙﾍｯﾄﾞ)の変更時のﾘﾄﾗｸｼｮﾝ(ﾌｨﾗﾒﾝﾄ吸込み/戻し)の定義をします。
-->
<profile name="Bonsai Lab BS01+Dual" version="2016-03-12 00:00:00" app="ISSlicer" type="hardware">
	<!-- no[1or2] diameter[mm] offset[mm]	-->
	<extruder no="1" name="Tool 1" diameter="0.4" offsetx= "0.0" offsety="0.0"	/>
	<extruder no="2" name="Tool 2" diameter="0.3" offsetx="28.4" offsety="0.0"	/>

	<buildArea	x="150.0" y="130.0" z="102.0"	/>	<!-- [mm]		-->

	<hasHeatedBed  value="1"                    />	<!-- [on/off]		-->
	<hasCoolingFan value="1" limitLowSpeed="30" />	<!-- [on/off] [%]	-->

	<rapidSpeed	XY="80.0" Z="16.7"		/>	<!-- [mm/sec]		-->

	<toolChangeRetraction distance="12.0" restart="2.0" speed="10.0"	/>	<!-- [mm] [mm] [mm/sec]	-->
</profile>
```

# ２．３　Script.xml
　スクリプトを定義するパラメータファイルです。

```xml:Script.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--
	スクリプト定義ファイル
	[startingGcode]　：　第１層出力前に実行されるG-Codeを定義します。
	[endingGcode]　　：　最終層出力後に実行されるG-Codeを定義します。
　　　　※共通 ,（半角カンマ）を改行コードとして扱います。
-->
<profile name="Script(Default Setting)" version="2016-03-12 00:00:00" app="ISSlicer" type="script">
	<startingGcode>G1 X100 F8000	 ; move X100,M700		 ; (org)Start Print,</startingGcode>
	<endingGcode>G1 Y0 F8000	 ; move Y0,M701		 ; (org)End Print,M84		 ; disable motors,M31		 ; show print time,</endingGcode>
</profile>
```

# ２．４　Print.xml
　出力設定を定義するパラメータファイルです。

```xml:Print.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--
	出力パラメータ定義ファイル
	[Slice]　　　：　スライス一般の定義をします。
	[Layer]　　　：　レイヤーの定義をします。
	[SkirtBrim]　：　スカート／ブリムの定義をします。
	[Raft]　　　 ：　ラフトの定義をします。
	[Infill]　　 ：　インフィルの定義をします。
	[Support]　　：　サポートの定義をします。
	[Speed]　　　：　速度の定義をします。
	[Other]　　　：　(将来対応)
-->
<profile name="default print settings" version="2016-03-12 00:00:00" app="ISSlicer" type="print">
	<Slice>
		<GCodeExt        value=".g"	/>
		<DisableShortCut value="1"	/>	<!-- [on/off]		-->
		<edgeWait        flag="0" angle="125.0" time="1"	/>	<!-- [on/off] [°] [msec]	-->
	</Slice>

	<Layer>
		<layerHeight              value="0.3" />	<!-- [mm]		          -->
		<topSolidLayers           value="3"   />	<!-- [層]   or [mm]		-->
		<bottomSolidLayers        value="3"	  />	<!-- [層]   or [mm]		-->
		<perimeterOutlines        value="3"	  />	<!-- [ﾙｰﾌﾟ] or [mm]		-->
		<printPerimetersInsideOut value="1"	  />	<!-- [in-out/out-in]  -->
		<sequentialIslands        value="0"	  />	<!-- [on/off]		      -->
		<AutoLayerHight           value="0"	  />	<!-- [on/off]		      -->
		<MicroLayering            value="1"   />	<!-- [分割]		        -->
		<AutoMicroLayering        flag="0" Overlap="50.0" LowLimit="5" />  <!-- [on/off] [%] [分割] or [mm]	-->
		<lowestTime               flag="0" time="6"                    />  <!-- [on/off] [sec]	              -->
	</Layer>

  <Infill>
    <infillPercentage         value="20.0"        />    <!-- [%] or [mm]  -->
    <outlineOverlapPercentage value="50.0"        />    <!-- [%] or [mm]  -->
    <infillAngles             value="45.0,-45.0"  />    <!-- [°] ,区切り -->
  </Infill>

  <SkirtBrim>
		<useSkirt      value="0"	  />	<!-- [on/off]		    -->
		<skirtLayers   value="1"	  />	<!-- [層] or [mm]   -->
		<skirtOffset   value="1.0"  />	<!-- [mm]		        -->
		<skirtOutlines value="5"	  />	<!-- [ﾙｰﾌﾟ] or [mm] -->
		<BoundingBox   value="1"	  />	<!-- [on/off]		    -->
	</SkirtBrim>

	<Raft>
		<useRaft                value="0"   	/>	<!-- [on/off]		  -->
		<raftLayers             value="1"   	/>	<!-- [層]         -->
		<raftOffset             value="1.0" 	/>	<!-- [mm] xy		  -->
		<raftSeparationDistance value="0.05"	/>	<!-- [mm] z		    -->
		<raftInfill             value="95.0"	/>	<!-- [%]  or [mm]	-->
<!--		<raftSeparationDistance value="0.14"	/>	<!-- [mm] z		    -->
<!--		<raftInfill             value="85.0"	/>	<!-- [%]  or [mm]	-->
		<disableRaftBaseLayers  value="0"	    />	<!-- [on/off]		  -->
		<BoundingBox            value="1"	    />	<!-- [on/off]		  -->
		<finishWait             value="5"	    />	<!-- [sec]		    -->
  </Raft>

	<Support>
		<generateSupport              value="0"     />	<!-- [on/off]	    -->
		<supportInfillPercentage      value="30.0"  />	<!-- [%]  or [mm] -->

    <denseSupportLayers           value="3"     />	<!-- [層] or [mm] -->
		<denseSupportInfillPercentage value="70.0"  />	<!-- [%]  or [mm] -->

		<supportUpperSeparationLayers value="1"     />	<!-- [層] or [mm] -->
		<supportLowerSeparationLayers value="1"     />	<!-- [層] or [mm] -->

		<maxOverhangAngle             value="45.0"  />	<!-- [°]         -->
	</Support>

	<Speeds>
		<defaultSpeed       value="50.0"    />	<!-- [mm/sec]                     -->
		<FirstLayerSpeed    value="30.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<OuterOutlineSpeed  value="50.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<InnerOutlineSpeed  value="80.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<SolidInfillSpeed   value="80.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<InfillSpeed        value="100.0%"  />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<SkirtBrimSpeed     value="50.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<RaftBaseSpeed      value="25.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<RaftSpeed          value="50.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<SupportSpeed       value="100.0%"  />	<!-- [mm/sec] or [%]@defaultSpeed -->
		<DenseSupportSpeed  value="80.0%"   />	<!-- [mm/sec] or [%]@defaultSpeed -->
	</Speeds>
</profile>
```

# ２．５　Filament_ABS.xml
　フィラメント特性を定義するパラメータファイルです。

```xml:Filament_ABS.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--
	フィラメント定義ファイル
	[filament]　　　　　　 ：　材料(ﾌｨﾗﾒﾝﾄ)の定義をします。
	[extrude]　　　　　　　：　吐出(押出)率を定義します。
	[toolheadTemperature]　：　ﾂｰﾙﾍｯﾄﾞの温度を定義します。
	[bedTemperature]　　　 ：　加熱ﾍﾞｯﾄﾞの温度を定義します。
	[coolingFan]　　　　　 ：　冷却ファンの定義をします。
	[retract]　　　　　　　：　ﾘﾄﾗｸｼｮﾝ(ﾌｨﾗﾒﾝﾄ吸込み/戻し)の定義をします。
-->
<profile name="ABS" version="2016-03-12 00:00:00" app="ISSlicer" type="filament">
	<!-- diameter[mm] density[grams/cm^3] price[price/kg]	-->
	<filament maker="Plasil" brand="" kind="ABS" diameter="1.75" density="1.025" price="4300.0"/>
	<extrude	multiplier="100.0"	/>	<!-- [%]	-->

	<toolheadTemperature>
		<setpoint layer="1" temperature="245"	/>	<!-- [層] [°]	-->
		<setpoint layer="2" temperature="240"	/>	<!-- [層] [°]	-->
	</toolheadTemperature>

	<bedTemperature>
		<setpoint layer="1" temperature="90"	/>	<!-- [層] [°]	-->
		<setpoint layer="2" temperature="80"	/>	<!-- [層] [°]	-->
	</bedTemperature>

	<coolingFan>
		<setpoint layer="1" speed="0.0"	/>	<!-- [層] [%]	-->
	</coolingFan>

	<!-- flag[on/off] distance[mm] restart[mm] zlift[mm] speed[mm/sec]	-->
	<retract  flag="1" distance="4.0" restart="0.0" zlift="0.0" speed="40.0"	/>
</profile>
```