<?xml version="1.0"?>
<PrintDeviceCapabilities
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:psk="http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords"
    xmlns:psk3d="http://schemas.microsoft.com/3dmanufacturing/2013/01/pskeywords3d"
    xmlns:psk3dx="http://schemas.microsoft.com/3dmanufacturing/2014/11/pskeywords3dextended"
    xmlns:pskv="http://schemas.microsoft.com/3dmanufacturing/2014/11/pskeywordsvendor"
    xmlns:psf="http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework"
    xmlns:psf2="http://schemas.microsoft.com/windows/2013/12/printing/printschemaframework2"
    xmlns="http://schemas.microsoft.com/windows/2013/12/printing/printschemaframework2"
    version="2">
  <CapabilitiesChangeID xsi:type="xsd:string">{9F58AF07-DCB6-4865-8CA3-A52EA5DCB05F}</CapabilitiesChangeID>

  <!--psk3d:AppName psf2:psftype="Property">XYZ3DPrintDashboard_0r0kzfqhse896</psk3d:AppName-->
  <!--psf:Property name="psk3d:Job3DWSDAPackageFamilyName">
    <psf:Value xsi:type="xsd:string">XYZ3DPrintDashboard_0r0kzfqhse896</psf:Value>
  </psf:Property-->
  <!--psk3d:Job3DWSDAPackageFamilyName psf2:psftype="Property">XYZ3DPrintDashboard_0r0kzfqhse896</psk3d:Job3DWSDAPackageFamilyName-->

  <psk3d:Job3DOutputArea psf2:psftype="Property">
    <psk3d:Job3DOutputAreaWidth>200000</psk3d:Job3DOutputAreaWidth>
    <psk3d:Job3DOutputAreaDepth>200000</psk3d:Job3DOutputAreaDepth>
    <psk3d:Job3DOutputAreaHeight>200000</psk3d:Job3DOutputAreaHeight>
  </psk3d:Job3DOutputArea>

  <psk3d:Job3DMaterials psf2:psftype="Property">

    <!-- Cartridge entries $TODO - these need to be read from the device -->
    <!--psk3dx:MaterialPLA config -->
    <psk3dx:MaterialPLA>
      <psk:DisplayName>PLA (190*C/45*C)</psk:DisplayName>
      <psk3d:Job3DMaterialType>psk3d:PLA</psk3d:Job3DMaterialType>
      <psk3d:MaterialColor>#FFFFFFFF</psk3d:MaterialColor>
      <psk3dx:platformtemperature>45</psk3dx:platformtemperature>
      <psk3dx:filamentdiameter>1750</psk3dx:filamentdiameter>
      <psk3dx:filamentcalibrationoverride>1.0</psk3dx:filamentcalibrationoverride>
      <psk3dx:extrudertemperature>190</psk3dx:extrudertemperature>

      <psk3dx:SpeedFactor>1.0</psk3dx:SpeedFactor>

      <psk3dx:SetupCommands>
        <!-- Executed during pre-commands: nozzle pre-heating, priming, etc -->
        <psk3dx:command>;T$currentextruder$</psk3dx:command>
        <psk3dx:command>M104 S$extrudertemperature$</psk3dx:command>
        <!-- Set extruder temperature -->
        <!--psk3dx:command>M140 S$platformtemperature$</psk3dx:command-->
        <!-- Set bed temperature -->
        <psk3dx:command>M109 S$extrudertemperature$</psk3dx:command>
        <!-- Wait for extruder temperature -->
        <psk3dx:command>M190 S$platformtemperature$</psk3dx:command>
        <!-- Wait for bed temperature -->
      </psk3dx:SetupCommands>

      <psk3dx:SelectCommands>
        <!-- Executed during printing: T0/T1 selection, nozzle wiping sequence,turn fan on/off/gradual, retract the material, temperature, etc-->
        <psk3dx:command>; PLA on</psk3dx:command>
        <psk3dx:command>T$currentextruder$</psk3dx:command>
      </psk3dx:SelectCommands>

      <psk3dx:DeselectCommands>
        <!-- Executed during printing: retract the material, park the nozzle, reduce temperature, etc -->
        <psk3dx:command>; PLA off</psk3dx:command>
      </psk3dx:DeselectCommands>
    </psk3dx:MaterialPLA>

    <psk3dx:MaterialABS>
      <psk:DisplayName>ABS (210*C/90*C)</psk:DisplayName>
      <psk3d:Job3DMaterialType>psk3d:ABS</psk3d:Job3DMaterialType>
      <psk3d:MaterialColor>#FFFFFFFF</psk3d:MaterialColor>
      <psk3dx:platformtemperature>90</psk3dx:platformtemperature>
      <psk3dx:filamentdiameter>1750</psk3dx:filamentdiameter>
      <psk3dx:filamentcalibrationoverride>1.0</psk3dx:filamentcalibrationoverride>
      <psk3dx:extrudertemperature>210</psk3dx:extrudertemperature>

      <psk3dx:SpeedFactor>1.0</psk3dx:SpeedFactor>

      <psk3dx:SetupCommands>
        <!-- Executed during pre-commands: nozzle pre-heating, priming, etc -->
        <psk3dx:command>;T$currentextruder$</psk3dx:command>
        <psk3dx:command>M104 S$extrudertemperature$</psk3dx:command>
        <!-- Set extruder temperature -->
        <!--psk3dx:command>M140 S$platformtemperature$</psk3dx:command-->
        <!-- Set bed temperature -->
        <psk3dx:command>M109 S$extrudertemperature$</psk3dx:command>
        <!-- Wait for extruder temperature -->
        <psk3dx:command>M190 S$platformtemperature$</psk3dx:command>
        <!-- Wait for bed temperature -->
      </psk3dx:SetupCommands>

      <psk3dx:SelectCommands>
        <!-- Executed during printing: T0/T1 selection, nozzle wiping sequence,turn fan on/off/gradual, retract the material, temperature, etc-->
        <psk3dx:command>; ABS on</psk3dx:command>
        <psk3dx:command>T$currentextruder$</psk3dx:command>
      </psk3dx:SelectCommands>

      <psk3dx:DeselectCommands>
        <!-- Executed during printing: retract the material, park the nozzle, reduce temperature, etc -->
        <psk3dx:command>; ABS off</psk3dx:command>
      </psk3dx:DeselectCommands>
    </psk3dx:MaterialABS>

    <!--psk3dx:Material1>
         <psk:DisplayName>Unknown</psk:DisplayName>
         <psk3d:Job3DMaterialType>psk3d:PLA</psk3d:Job3DMaterialType>
         <psk3d:MaterialColor>#FFFFFFFF</psk3d:MaterialColor>

         <psk3dx:platformtemperature>0</psk3dx:platformtemperature>
         <psk3dx:filamentdiameter>1750</psk3dx:filamentdiameter>
         <psk3dx:filamentcalibrationoverride>1.0</psk3dx:filamentcalibrationoverride>
         <psk3dx:extrudertemperature>200</psk3dx:extrudertemperature>
      </psk3dx:Material1>

      <psk3dx:Material2>
         <psk:DisplayName>Unknown</psk:DisplayName>
         <psk3d:Job3DMaterialType>psk3d:PLA</psk3d:Job3DMaterialType>
         <psk3d:MaterialColor>#FFFFFFFF</psk3d:MaterialColor>

         <psk3dx:platformtemperature>0</psk3dx:platformtemperature>
         <psk3dx:filamentdiameter>1750</psk3dx:filamentdiameter>
         <psk3dx:filamentcalibrationoverride>1.0</psk3dx:filamentcalibrationoverride>
         <psk3dx:extrudertemperature>200</psk3dx:extrudertemperature>
      </psk3dx:Material2-->
  </psk3d:Job3DMaterials>

  <psk3dx:customStatus>Slicing</psk3dx:customStatus>

  <!-- This prompt should be enabled until the printer firmware is updated to prompt user at the beginning as opposed to end of job (deal with power loss scenarios)
    <psk3dx:userprompt>Confirm the 3D printer is calibrated and ready for the next print</psk3dx:userprompt>
  -->

  <psk3dx:MS3DPrinter>
    <psk3dx:extruders>1</psk3dx:extruders>
    <psk3dx:autocenter>0</psk3dx:autocenter>

    <psk3dx:debug>
      <psk3dx:log>c:\windows\temp\3DPrint\XYZdaVinci.log</psk3dx:log>
    </psk3dx:debug>

    <psk3dx:communication>
      <!-- communication parameters -->
      <psk3dx:connection name="serialport">
        <psk3dx:comport></psk3dx:comport>
        <!-- leave empty for PnP or specify a file URI -->
        <psk3dx:baudrate>115200</psk3dx:baudrate>
      </psk3dx:connection>
    </psk3dx:communication>

    <psk3dx:customcommands>
      <psk3dx:precommands>
        <!-- XYZ Header sent by the driver -->
        <psk3dx:command>G21</psk3dx:command>
        <psk3dx:command>M107</psk3dx:command>
        <psk3dx:command>M108</psk3dx:command>
        <psk3dx:command>$materialsetup0$</psk3dx:command>
        <!-- prepare primary material -->
        <psk3dx:command>$materialsetup1$</psk3dx:command>
        <!-- prepare secondary material -->
        <psk3dx:command>M191</psk3dx:command>
        <psk3dx:command>G90</psk3dx:command>
        <psk3dx:command>G92 E0</psk3dx:command>
        <psk3dx:command>M82</psk3dx:command>
        <psk3dx:command>T0</psk3dx:command>
        <psk3dx:command>G1 X20 Y180 Z0.35 F2000</psk3dx:command>
        <psk3dx:command>G1 X180 Y180 Z0.35 E24 F540</psk3dx:command>
        <psk3dx:command>G92 E0</psk3dx:command>
      </psk3dx:precommands>

      <psk3dx:postcommands>
        <psk3dx:command>G92 E0</psk3dx:command>
        <!-- Reset E axis -->
        <psk3dx:command>M107</psk3dx:command>
        <psk3dx:command>M84</psk3dx:command>
      </psk3dx:postcommands>
      <psk3dx:failsafepostcommands>
        <psk3dx:command></psk3dx:command>
      </psk3dx:failsafepostcommands>
    </psk3dx:customcommands>

    <psk3dx:print>
      <psk3dx:medium default="true">
        <!-- model parameters -->
        <psk3dx:layerthickness>250</psk3dx:layerthickness>
        <!-- layer thickness (micron) -->
        <psk3dx:maxlayerthickness>400</psk3dx:maxlayerthickness>
        <!-- maximum  layer thickness (micron) -->
        <psk3dx:minlayerthickness>100</psk3dx:minlayerthickness>
        <!-- minimum layer thickness (micron) -->
        <psk3dx:pathwidth>400</psk3dx:pathwidth>
        <!-- path width (micron) -->
        <psk3dx:shells>2</psk3dx:shells>
        <!-- number of perimeters (zero would make the infill visible) -->
        <psk3dx:shelloffset>50</psk3dx:shelloffset>
        <!-- offset of the shells (micron) -->
        <psk3dx:topsurfacelayers>4</psk3dx:topsurfacelayers>
        <!-- number of solid top surface layers -->
        <psk3dx:bottomsurfacelayers>3</psk3dx:bottomsurfacelayers>
        <!-- number of solid bottom surface layers -->
        <psk3dx:fill>0.1</psk3dx:fill>
        <!-- sparse infill fraction (between 0 and 1, inclusive) -->
        <psk3dx:fillangle>45</psk3dx:fillangle>
        <!-- intial fill angle (degrees) -->
        <psk3dx:filloverlap>1.0</psk3dx:filloverlap>
        <!-- infill overlap (between 0 and 1 of the path width, inclusive) -->
        <psk3dx:speed>10000</psk3dx:speed>
        <!-- speed of normal printing movements (micron/s) -->
        <psk3dx:speedouter>10000</psk3dx:speedouter>
        <!-- speed of outer perimeter (micron/s) -->
        <psk3dx:speedfirst>10000</psk3dx:speedfirst>
        <!-- speed of first layer (micron/s), supercedes speedOuter -->
        <psk3dx:speedtravel>100000</psk3dx:speedtravel>
        <!-- speed of non-extrusion moves (micron/s) -->
        <psk3dx:speedretract>90000</psk3dx:speedretract>
        <!-- speed of filament retraction (micron/s) -->
        <psk3dx:retraction>4123</psk3dx:retraction>
        <!-- amount of retraction (micron) -->
        <psk3dx:supportorientationoptimization>0</psk3dx:supportorientationoptimization>
        <!-- Apply the best orientation -->
        <psk3dx:supportoverhangangle>45</psk3dx:supportoverhangangle>
        <!-- The minimum overhang angle to generate support -->
        <psk3dx:supportzgap>250</psk3dx:supportzgap>
        <!-- The Z gap in micron -->
        <psk3dx:supportxygap>700</psk3dx:supportxygap>
        <!-- The XY gap in micron -->
        <psk3dx:supportfill>0.3</psk3dx:supportfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftlayers>3</psk3dx:raftlayers>
        <!-- number of solid raft layers -->
        <psk3dx:raftlayerthickness>400</psk3dx:raftlayerthickness>
        <!-- layer thickness of the raft (micron) -->
        <psk3dx:raftpathwidth>2000</psk3dx:raftpathwidth>
        <!-- path width of raft (micron) -->
        <psk3dx:raftfill>0.6</psk3dx:raftfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftoffset>2000</psk3dx:raftoffset>
        <!-- size of the raft (micron) -->
        <psk3dx:raftzgap>350</psk3dx:raftzgap>
        <!-- The Z gap (micron) -->
        <psk3dx:raftspeedfirst>20000</psk3dx:raftspeedfirst>
        <!-- speed of raft first layer (micron/s) -->
        <psk3dx:coolingtime>1</psk3dx:coolingtime>
        <!-- cooling time for a layer (second) -->
        <psk3dx:mincoolingspeed>1000</psk3dx:mincoolingspeed>
        <!-- the minimum cooling speed for a layer (micron/s) -->
        <psk3dx:bridgingspeed>5000</psk3dx:bridgingspeed>
        <!-- the speed for bridging (micron/s) -->
      </psk3dx:medium>
      <psk3dx:high default="false">
        <!-- model parameters -->
        <psk3dx:layerthickness>150</psk3dx:layerthickness>
        <!-- layer thickness (micron) -->
        <psk3dx:maxlayerthickness>400</psk3dx:maxlayerthickness>
        <!-- maximum  layer thickness (micron) -->
        <psk3dx:minlayerthickness>100</psk3dx:minlayerthickness>
        <!-- minimum layer thickness (micron) -->
        <psk3dx:pathwidth>400</psk3dx:pathwidth>
        <!-- path width (micron) -->
        <psk3dx:shells>2</psk3dx:shells>
        <!-- number of perimeters (zero would make the infill visible) -->
        <psk3dx:shelloffset>50</psk3dx:shelloffset>
        <!-- offset of the shells (micron) -->
        <psk3dx:topsurfacelayers>4</psk3dx:topsurfacelayers>
        <!-- number of solid top surface layers -->
        <psk3dx:bottomsurfacelayers>3</psk3dx:bottomsurfacelayers>
        <!-- number of solid bottom surface layers -->
        <psk3dx:fill>0.1</psk3dx:fill>
        <!-- sparse infill fraction (between 0 and 1, inclusive) -->
        <psk3dx:fillangle>45</psk3dx:fillangle>
        <!-- intial fill angle (degrees) -->
        <psk3dx:filloverlap>1.0</psk3dx:filloverlap>
        <!-- infill overlap (between 0 and 1 of the path width, inclusive) -->
        <psk3dx:speed>45000</psk3dx:speed>
        <!-- speed of normal printing movements (micron/s) -->
        <psk3dx:speedouter>15000</psk3dx:speedouter>
        <!-- speed of outer perimeter (micron/s) -->
        <psk3dx:speedfirst>10000</psk3dx:speedfirst>
        <!-- speed of first layer (micron/s), supercedes speedOuter -->
        <psk3dx:speedtravel>45000</psk3dx:speedtravel>
        <!-- speed of non-extrusion moves (micron/s) -->
        <psk3dx:speedretract>30000</psk3dx:speedretract>
        <!-- speed of filament retraction (micron/s) -->
        <psk3dx:retraction>4123</psk3dx:retraction>
        <!-- amount of retraction (micron) -->
        <psk3dx:supportorientationoptimization>0</psk3dx:supportorientationoptimization>
        <!-- Apply the best orientation -->
        <psk3dx:supportoverhangangle>45</psk3dx:supportoverhangangle>
        <!-- The minimum overhang angle to generate support -->
        <psk3dx:supportzgap>200</psk3dx:supportzgap>
        <!-- The Z gap in micron -->
        <psk3dx:supportxygap>700</psk3dx:supportxygap>
        <!-- The XY gap in micron -->
        <psk3dx:supportfill>0.3</psk3dx:supportfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftlayers>3</psk3dx:raftlayers>
        <!-- number of solid raft layers -->
        <psk3dx:raftlayerthickness>400</psk3dx:raftlayerthickness>
        <!-- layer thickness of the raft (micron) -->
        <psk3dx:raftpathwidth>2000</psk3dx:raftpathwidth>
        <!-- path width of raft (micron) -->
        <psk3dx:raftfill>0.6</psk3dx:raftfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftoffset>2000</psk3dx:raftoffset>
        <!-- size of the raft (micron) -->
        <psk3dx:raftzgap>350</psk3dx:raftzgap>
        <!-- The Z gap (micron) -->
        <psk3dx:raftspeedfirst>20000</psk3dx:raftspeedfirst>
        <!-- speed of raft first layer (micron/s) -->
        <psk3dx:coolingtime>5</psk3dx:coolingtime>
        <!-- cooling time for a layer (second) -->
        <psk3dx:mincoolingspeed>1000</psk3dx:mincoolingspeed>
        <!-- the minimum cooling speed for a layer (micron/s) -->
        <psk3dx:bridgingspeed>30000</psk3dx:bridgingspeed>
        <!-- the speed for bridging (micron/s) -->
      </psk3dx:high>
      <psk3dx:draft default="false">
        <!-- model parameters -->
        <psk3dx:layerthickness>350</psk3dx:layerthickness>
        <!-- layer thickness (micron) -->
        <psk3dx:maxlayerthickness>400</psk3dx:maxlayerthickness>
        <!-- maximum  layer thickness (micron) -->
        <psk3dx:minlayerthickness>100</psk3dx:minlayerthickness>
        <!-- minimum layer thickness (micron) -->
        <psk3dx:pathwidth>400</psk3dx:pathwidth>
        <!-- path width (micron) -->
        <psk3dx:shells>2</psk3dx:shells>
        <!-- number of perimeters (zero would make the infill visible) -->
        <psk3dx:shelloffset>50</psk3dx:shelloffset>
        <!-- offset of the shells (micron) -->
        <psk3dx:topsurfacelayers>4</psk3dx:topsurfacelayers>
        <!-- number of solid top surface layers -->
        <psk3dx:bottomsurfacelayers>3</psk3dx:bottomsurfacelayers>
        <!-- number of solid bottom surface layers -->
        <psk3dx:fill>0.1</psk3dx:fill>
        <!-- sparse infill fraction (between 0 and 1, inclusive) -->
        <psk3dx:fillangle>45</psk3dx:fillangle>
        <!-- intial fill angle (degrees) -->
        <psk3dx:filloverlap>1.0</psk3dx:filloverlap>
        <!-- infill overlap (between 0 and 1 of the path width, inclusive) -->
        <psk3dx:speed>60000</psk3dx:speed>
        <!-- speed of normal printing movements (micron/s) -->
        <psk3dx:speedouter>15000</psk3dx:speedouter>
        <!-- speed of outer perimeter (micron/s) -->
        <psk3dx:speedfirst>10000</psk3dx:speedfirst>
        <!-- speed of first layer (micron/s), supercedes speedOuter -->
        <psk3dx:speedtravel>45000</psk3dx:speedtravel>
        <!-- speed of non-extrusion moves (micron/s) -->
        <psk3dx:speedretract>30000</psk3dx:speedretract>
        <!-- speed of filament retraction (micron/s) -->
        <psk3dx:retraction>4123</psk3dx:retraction>
        <!-- amount of retraction (micron) -->
        <psk3dx:supportorientationoptimization>0</psk3dx:supportorientationoptimization>
        <!-- Apply the best orientation -->
        <psk3dx:supportoverhangangle>45</psk3dx:supportoverhangangle>
        <!-- The minimum overhang angle to generate support -->
        <psk3dx:supportzgap>500</psk3dx:supportzgap>
        <!-- The Z gap in micron -->
        <psk3dx:supportxygap>700</psk3dx:supportxygap>
        <!-- The XY gap in micron -->
        <psk3dx:supportfill>0.3</psk3dx:supportfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftlayers>3</psk3dx:raftlayers>
        <!-- number of solid raft layers -->
        <psk3dx:raftlayerthickness>400</psk3dx:raftlayerthickness>
        <!-- layer thickness of the raft (micron) -->
        <psk3dx:raftpathwidth>2000</psk3dx:raftpathwidth>
        <!-- path width of raft (micron) -->
        <psk3dx:raftfill>0.6</psk3dx:raftfill>
        <!-- sparse infill fraction for support (between 0 and 1, inclusive) -->
        <psk3dx:raftoffset>2000</psk3dx:raftoffset>
        <!-- size of the raft (micron) -->
        <psk3dx:raftzgap>500</psk3dx:raftzgap>
        <!-- The Z gap (micron) -->
        <psk3dx:raftspeedfirst>20000</psk3dx:raftspeedfirst>
        <!-- speed of raft first layer (micron/s) -->
        <psk3dx:coolingtime>5</psk3dx:coolingtime>
        <!-- cooling time for a layer (second) -->
        <psk3dx:mincoolingspeed>1000</psk3dx:mincoolingspeed>
        <!-- the minimum cooling speed for a layer (micron/s) -->
        <psk3dx:bridgingspeed>30000</psk3dx:bridgingspeed>
        <!-- the speed for bridging (micron/s) -->
      </psk3dx:draft>
    </psk3dx:print>

  </psk3dx:MS3DPrinter>

</PrintDeviceCapabilities>
