From 965f5a10415ea1c97aec012132d89cb1727d7366 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 24 Feb 2022 19:53:22 -0500 Subject: [PATCH] add prusa MK3S profile --- app.js | 1 + src/kiri-dev/fdm/Prusa.i3.MK3S+ | 179 ++++++++++++++++++++++++++++++++ src/kiri/init.js | 12 ++- src/kiri/tools.js | 10 +- 4 files changed, 194 insertions(+), 8 deletions(-) create mode 100644 src/kiri-dev/fdm/Prusa.i3.MK3S+ diff --git a/app.js b/app.js index 710b903f..fa40beb3 100644 --- a/app.js +++ b/app.js @@ -367,6 +367,7 @@ function initModule(mod, file, dir) { addCORS: addCorsHeaders, redirect: http.redirect, reply404: http.reply404, + decodePost: http.decodePost, reply: quickReply }, ws: { diff --git a/src/kiri-dev/fdm/Prusa.i3.MK3S+ b/src/kiri-dev/fdm/Prusa.i3.MK3S+ new file mode 100644 index 00000000..57a3ce32 --- /dev/null +++ b/src/kiri-dev/fdm/Prusa.i3.MK3S+ @@ -0,0 +1,179 @@ +{ + "noclone": false, + "mode": "FDM", + "internal": 0, + "imageURL": "", + "imageScale": 0.75, + "imageAnchor": 0, + "bedHeight": 2.5, + "bedWidth": 250, + "bedDepth": 210, + "bedRound": false, + "bedBelt": false, + "resolutionX": 1600, + "resolutionY": 900, + "deviceZMax": 0, + "maxHeight": 210, + "originCenter": false, + "extrudeAbs": false, + "spindleMax": 0, + "gcodeFan": [ + "M106 S{fan_speed}" + ], + "gcodeTrack": [ + "M73 P{progress}" + ], + "gcodeLayer": [ + ";; LAYER {layer} of {layers}", + "M117 Layer {layer} of {layers}" + ], + "gcodePre": [ + "M104 S160 ; set extruder temp", + "M140 S{bed_temp} ; set bed temp", + "M190 S{bed_temp} ; wait for bed temp", + "G28 W ; home all without mesh bed level", + "G80 ; mesh bed leveling", + "G90 ; set absolute positioning mode", + "M83 ; set relative positioning for extruder", + "M900 K0.04 ; linear advance", + "G1 F1000 ; set feedrate", + "G1 Y-3.0 Z0.5 ; park outside print area", + "M104 S{temp} ; set extruder actual required temp", + "M109 S{temp} ; wait for extruder actual required temp", + "G1 X60.0 E9.0 ; purge line", + "G1 X100.0 E12.5 ; purge line", + "M117 Printing" + ], + "gcodePost": [ + "G0 E-1 F900 ; retract slightly", + "M104 S0 ; turn off nozzle heat", + "M140 S0 ; turn off bed heat", + "M107 ; turn off fan", + "G0 F3000 ; set feedrate", + "G0 Y210 Z210 ; serve up print", + "G4 ; wait", + "M84 ; disable steppers", + "M117 Print Done" + ], + "gcodeProc": "", + "gcodeDwell": [], + "gcodeSpindle": [], + "gcodeChange": [], + "gcodeFExt": "gcode", + "gcodeSpace": true, + "gcodeStrip": false, + "gcodeLaserOn": [], + "gcodeLaserOff": [], + "extruders": [ + { + "extFilament": 1.75, + "extNozzle": 0.4, + "extSelect": [ + "T0" + ], + "extDeselect": [], + "extOffsetX": 0, + "extOffsetY": 0 + } + ], + "new": false, + "deviceName": "Prusa i3 MK3S+", + "fwRetract": false, + "extras": { + "palette": { + "printer": "3612e108c25c", + "ping": null, + "feed": null, + "push": null, + "offset": null, + "heat": null, + "cool": null, + "press": null + } + }, + "profiles": [ + { + "processName": "MK3S+ PLA", + "sliceHeight": 0.2, + "sliceShells": 3, + "sliceShellOrder": "in-out", + "sliceLayerStart": "center", + "sliceFillAngle": 45, + "sliceFillOverlap": 0.35, + "sliceFillSparse": 0.1, + "sliceFillType": "hex", + "sliceAdaptive": false, + "sliceMinHeight": 0, + "sliceSupportDensity": 0.25, + "sliceSupportOffset": 0.4, + "sliceSupportGap": 0, + "sliceSupportSize": 6, + "sliceSupportArea": 0.25, + "sliceSupportExtra": 0, + "sliceSupportAngle": 1, + "sliceSupportNozzle": 0, + "sliceSolidMinArea": 5, + "sliceSolidLayers": 2, + "sliceBottomLayers": 2, + "sliceTopLayers": 3, + "firstLayerRate": 10, + "firstLayerPrintMult": 1, + "firstLayerYOffset": 0, + "firstLayerBrim": 0, + "firstLayerBeltLead": 200, + "firstLayerFanSpeed": 0, + "outputTemp": 205, + "outputBedTemp": 70, + "outputFanSpeed": 255, + "outputFeedrate": 80, + "outputFinishrate": 30, + "outputSeekrate": 150, + "outputShellMult": 1, + "outputFillMult": 1.1, + "outputSparseMult": 1.1, + "outputRetractDist": 4, + "outputRetractSpeed": 60, + "outputRetractWipe": 2, + "outputRetractDwell": 0, + "outputShortPoly": 50, + "outputMinSpeed": 1, + "outputCoastDist": 0.05, + "outputLayerRetract": false, + "zHopDistance": 0.1, + "antiBacklash": 0, + "outputOriginCenter": false, + "sliceFillWidth": 1, + "sliceFillRate": 0, + "sliceSupportEnable": false, + "firstSliceHeight": 0.2, + "firstLayerFillRate": 35, + "firstLayerLineMult": 1, + "firstLayerNozzleTemp": 0, + "firstLayerBedTemp": 0, + "firstLayerBrimTrig": 0, + "firstLayerBrimGap": 0, + "outputRaft": false, + "outputRaftSpacing": 0.2, + "outputBrimCount": 0, + "outputBrimOffset": 2, + "outputPurgeTower": 0, + "outputInvertX": false, + "outputInvertY": false, + "arcTolerance": 0, + "ranges": [], + "outputLoops": 0, + "firstLayerBrimIn": 0, + "firstLayerBeltBump": 0, + "outputBeltFirst": false, + "sliceFillRepeat": 4, + "sliceLineWidth": 0, + "sliceSupportSpan": 5, + "sliceSupportOutline": true, + "firstLayerFlatten": 0, + "outputDraftShield": false, + "outputAvoidGaps": true, + "sliceDetectThin": "off", + "beltAnchor": 200 + } + ] +} \ No newline at end of file diff --git a/src/kiri/init.js b/src/kiri/init.js index d59c97c1..f068fec6 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1034,15 +1034,16 @@ gapp.register("kiri.init", [], (root, exports) => { removeLocalDevice(getSelectedDevice()); showDevices(); }; - ui.deviceExport.onclick = function() { - let exp = api.util.b64enc({ + ui.deviceExport.onclick = function(event) { + const record = { version: kiri.version, device: selected, process: api.process.code(), code: devs[selected], time: Date.now() - }); - deviceExport(exp, selected); + }; + let exp = api.util.b64enc(record); + api.device.export(exp, selected, { event, record }); }; ui.deviceList.innerHTML = ''; @@ -1514,6 +1515,9 @@ gapp.register("kiri.init", [], (root, exports) => { space.platform.setRound(true); space.useDefaultKeys(api.feature.on_key === undefined || api.feature.on_key_defaults); + // api augmentation with local functions + api.device.export = deviceExport; + Object.assign(ui, { tracker: tracker, container: container, diff --git a/src/kiri/tools.js b/src/kiri/tools.js index b9c88dfb..e04734f9 100644 --- a/src/kiri/tools.js +++ b/src/kiri/tools.js @@ -4,6 +4,7 @@ // dep: kiri.api gapp.register("kiri.tools", [], (root, exports) => { +const { Vector3, Quaternion } = THREE; const { kiri } = root; const { api } = kiri; @@ -11,6 +12,7 @@ const { api } = kiri; let pgeo = new THREE.CircleGeometry(8, 30); let pmat = new THREE.MeshBasicMaterial({color: 0xff0000, opacity: 0.5, transparent: true}); let pmesh = new THREE.Mesh(pgeo, pmat); + // circle outline let pi = pgeo.index.array; let pp = pgeo.attributes.position.array; @@ -88,9 +90,9 @@ api.event.on('mouse.hover', (ev) => { pmesh.position.x = point.x - opos.x + norm.x * 0.1; pmesh.position.y = -point.z - opos.y + norm.y * 0.1; pmesh.position.z = point.y + norm.z * 0.1; - let q = new THREE.Quaternion().setFromUnitVectors( - new THREE.Vector3(0,0,1), - new THREE.Vector3(norm.x,norm.y,norm.z) + let q = new Quaternion().setFromUnitVectors( + new Vector3(0,0,1), + new Vector3(norm.x,norm.y,norm.z) ); pmesh.setRotationFromQuaternion(q); } @@ -104,7 +106,7 @@ api.event.on('mouse.hover.up', (ev) => { if (!object) { return; } - let q = new THREE.Quaternion().setFromUnitVectors(lastface.normal, new THREE.Vector3(0,0,-1)); + let q = new Quaternion().setFromUnitVectors(lastface.normal, new Vector3(0,0,-1)); api.selection.rotate(q); endit(); });