<?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>150000</psk3d:Job3DOutputAreaWidth>
    <psk3d:Job3DOutputAreaDepth>150000</psk3d:Job3DOutputAreaDepth>
    <psk3d:Job3DOutputAreaHeight>150000</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/0*C)</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>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:Material1>
      <psk:DisplayName>Unknown</psk:DisplayName>
      <psk3d:Job3DMaterialType>Unknown</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>Unknown</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>210</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>M104 S210</psk3dx:command-->
          <!--psk3dx:command>M109 S210</psk3dx:command-->
          <psk3dx:command>$materialsetup0$</psk3dx:command> <!-- prepare primary material -->
          <psk3dx:command>G92 E0</psk3dx:command>
          <psk3dx:command>G90</psk3dx:command>
          <psk3dx:command>M82</psk3dx:command>
          <psk3dx:command>T0</psk3dx:command>
          <psk3dx:command>G1 X30 Y140 Z0.35 F2000</psk3dx:command>
          <psk3dx:command>G1 X120 Y140 Z0.35 E18 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>30000</psk3dx:speed> <!-- speed of normal printing movements (micron/s) -->
          <psk3dx:speedouter>30000</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>30000</psk3dx:speedretract> <!-- speed of filament retraction (micron/s) -->
          <psk3dx:retraction>4000</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>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>20000</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>30000</psk3dx:speed> <!-- speed of normal printing movements (micron/s) -->
          <psk3dx:speedouter>30000</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>30000</psk3dx:speedretract> <!-- speed of filament retraction (micron/s) -->
          <psk3dx:retraction>4000</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>20000</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>30000</psk3dx:speed><!-- speed of normal printing movements (micron/s) -->
          <psk3dx:speedouter>30000</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>30000</psk3dx:speedretract> <!-- speed of filament retraction (micron/s) -->
          <psk3dx:retraction>4000</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>20000</psk3dx:bridgingspeed><!-- the speed for bridging (micron/s) -->
        </psk3dx:draft>
      </psk3dx:print>

  </psk3dx:MS3DPrinter>

</PrintDeviceCapabilities>
