diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.2.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.2.json new file mode 100644 index 00000000..971b799e --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.2.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 143.36, + "bed_depth": 89.6, + "bed_height": 1, + "max_height": 165, + "resolution_x": 4096, + "resolution_y": 2560, + "sla_format": "pm3n", + "sla_file_ext": "pm3n", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.4.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.4.json new file mode 100644 index 00000000..17d157bf --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.4.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 153.4, + "bed_depth": 87, + "bed_height": 1, + "max_height": 165, + "resolution_x": 9024, + "resolution_y": 5120, + "sla_format": "pm4n", + "sla_file_ext": "pm4n", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.4K.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.4K.json new file mode 100644 index 00000000..a6eb0104 --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.4K.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 132, + "bed_depth": 80, + "bed_height": 1, + "max_height": 165, + "resolution_x": 3840, + "resolution_y": 2400, + "sla_format": "pwma", + "sla_file_ext": "pwma", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.M5s.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.M5s.json new file mode 100644 index 00000000..af59b806 --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.M5s.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 218.88, + "bed_depth": 122.88, + "bed_height": 1, + "max_height": 200, + "resolution_x": 11520, + "resolution_y": 5120, + "sla_format": "pm5s", + "sla_file_ext": "pm5s", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.X.6Ks.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.X.6Ks.json new file mode 100644 index 00000000..184fe317 --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.X.6Ks.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 195.84, + "bed_depth": 122.4, + "bed_height": 1, + "max_height": 200, + "resolution_x": 5760, + "resolution_y": 3600, + "sla_format": "pwmb", + "sla_file_ext": "pwmb", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.X.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.X.json new file mode 100644 index 00000000..23cb1f95 --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.X.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 192, + "bed_depth": 120, + "bed_height": 1, + "max_height": 245, + "resolution_x": 3840, + "resolution_y": 2400, + "sla_format": "pwmx", + "sla_file_ext": "pwmx", + "sla_format_version": 1 + } +} diff --git a/src/kiri/dev/sla/Anycubic.Photon.Mono.json b/src/kiri/dev/sla/Anycubic.Photon.Mono.json new file mode 100644 index 00000000..3d362198 --- /dev/null +++ b/src/kiri/dev/sla/Anycubic.Photon.Mono.json @@ -0,0 +1,15 @@ +{ + "no_clone": true, + "cmd": {}, + "settings": { + "bed_width": 130, + "bed_depth": 80, + "bed_height": 1, + "max_height": 165, + "resolution_x": 1620, + "resolution_y": 2560, + "sla_format": "pwmo", + "sla_file_ext": "pwmo", + "sla_format_version": 1 + } +} diff --git a/src/kiri/mode/sla/core/formats.js b/src/kiri/mode/sla/core/formats.js index e07da79f..bc83ae66 100644 --- a/src/kiri/mode/sla/core/formats.js +++ b/src/kiri/mode/sla/core/formats.js @@ -46,6 +46,20 @@ export const SLA_FORMATS = { priority: 1, family: 'chitubox' }, + pw0: { + id: 'pw0', + ext: 'pw0', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pwx: { + id: 'pwx', + ext: 'pwx', + proprietary: true, + available: false, + family: 'photon-workshop' + }, pwmo: { id: 'pwmo', ext: 'pwmo', @@ -60,6 +74,20 @@ export const SLA_FORMATS = { available: false, family: 'photon-workshop' }, + pwms: { + id: 'pwms', + ext: 'pwms', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pwmx: { + id: 'pwmx', + ext: 'pwmx', + proprietary: true, + available: false, + family: 'photon-workshop' + }, pwmb: { id: 'pwmb', ext: 'pwmb', @@ -67,6 +95,27 @@ export const SLA_FORMATS = { available: false, family: 'photon-workshop' }, + pwsq: { + id: 'pwsq', + ext: 'pwsq', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + px6s: { + id: 'px6s', + ext: 'px6s', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm3: { + id: 'pm3', + ext: 'pm3', + proprietary: true, + available: false, + family: 'photon-workshop' + }, pm3n: { id: 'pm3n', ext: 'pm3n', @@ -74,12 +123,75 @@ export const SLA_FORMATS = { available: false, family: 'photon-workshop' }, + pm3m: { + id: 'pm3m', + ext: 'pm3m', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm3r: { + id: 'pm3r', + ext: 'pm3r', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm4m: { + id: 'pm4m', + ext: 'pm4m', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm4u: { + id: 'pm4u', + ext: 'pm4u', + proprietary: true, + available: false, + family: 'photon-workshop' + }, pm4n: { id: 'pm4n', ext: 'pm4n', proprietary: true, available: false, family: 'photon-workshop' + }, + pm5: { + id: 'pm5', + ext: 'pm5', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm5s: { + id: 'pm5s', + ext: 'pm5s', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm7: { + id: 'pm7', + ext: 'pm7', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pm7m: { + id: 'pm7m', + ext: 'pm7m', + proprietary: true, + available: false, + family: 'photon-workshop' + }, + pwsz: { + id: 'pwsz', + ext: 'pwsz', + proprietary: true, + available: false, + family: 'photon-workshop' } }; diff --git a/src/kiri/mode/sla/work/export.js b/src/kiri/mode/sla/work/export.js index 0dfb6d0b..96831f4b 100644 --- a/src/kiri/mode/sla/work/export.js +++ b/src/kiri/mode/sla/work/export.js @@ -67,8 +67,7 @@ export function sla_export(print, online, ondone) { }); } - if (format === 'pwmo' || format === 'pwma' || format === 'pwmb' || - format === 'pm3n' || format === 'pm4n') { + if (PW.supports(format)) { return PW.encode(format); } diff --git a/src/kiri/mode/sla/work/x_pw.js b/src/kiri/mode/sla/work/x_pw.js index fcf7a17c..7e7b1074 100644 --- a/src/kiri/mode/sla/work/x_pw.js +++ b/src/kiri/mode/sla/work/x_pw.js @@ -1,14 +1,46 @@ /** Copyright Stewart Allen -- All Rights Reserved */ const FAMILY = "Photon Workshop"; +const FORMAT_RECORDS = { + pw0: { ext: "pw0", generation: "pw", notes: "Photon Zero" }, + pwx: { ext: "pwx", generation: "pw", notes: "Photon X" }, + pwmo: { ext: "pwmo", generation: "mono", notes: "Photon Mono" }, + pwma: { ext: "pwma", generation: "mono", notes: "Photon Mono 4K class" }, + pwms: { ext: "pwms", generation: "mono", notes: "Photon Mono SE class" }, + pwmx: { ext: "pwmx", generation: "mono-x", notes: "Photon Mono X class" }, + pwmb: { ext: "pwmb", generation: "m3", notes: "Photon M3 / Mono X 6K class" }, + pwsq: { ext: "pwsq", generation: "m3", notes: "Photon M3 Premium class" }, + px6s: { ext: "px6s", generation: "m3", notes: "Photon X 6Ks class" }, + pm3: { ext: "pm3", generation: "m3", notes: "Photon M3" }, + pm3n: { ext: "pm3n", generation: "m3", notes: "Photon Mono 2" }, + pm3m: { ext: "pm3m", generation: "m3", notes: "Photon M3 Max / Plus class" }, + pm3r: { ext: "pm3r", generation: "m3", notes: "Photon M3 resolver variant" }, + pm4m: { ext: "pm4m", generation: "m4", notes: "Photon Mono M4 class" }, + pm4u: { ext: "pm4u", generation: "m4", notes: "Photon Mono 4 Ultra class" }, + pm4n: { ext: "pm4n", generation: "m4", notes: "Photon Mono 4" }, + pm5: { ext: "pm5", generation: "m5", notes: "Photon Mono M5" }, + pm5s: { ext: "pm5s", generation: "m5", notes: "Photon Mono M5s" }, + pm7: { ext: "pm7", generation: "m7", notes: "Photon Mono M7 class" }, + pm7m: { ext: "pm7m", generation: "m7", notes: "Photon Mono M7 Pro class" }, + pwsz: { ext: "pwsz", generation: "v3-zip", notes: "Photon Workshop v3 zip container" } +}; function encode(format) { + let rec = FORMAT_RECORDS[format]; + return Promise.reject(new Error([ `${FAMILY} format .${format} is registered but not implemented.`, - "Add a fixture sliced by Photon Workshop before enabling this output target." + rec ? `Detected family generation: ${rec.generation} (${rec.notes}).` : "", + "Add a known-good fixture sliced by Photon Workshop for this exact extension before enabling this output target." ].join(" "))); } +function supports(format) { + return FORMAT_RECORDS[format] !== undefined; +} + export const PW = { - encode + encode, + supports, + formats: FORMAT_RECORDS };