diff --git a/notes.md b/notes.md index ac42732a..ba5b0e1e 100644 --- a/notes.md +++ b/notes.md @@ -14,6 +14,7 @@ * `P` do not move (average) endpoints connected to long lines in decimate * `P` explore widget vertex reloading / replacing (Onshape) (issue #48) * `P` faster ray intersect https://github.com/gkjohnson/three-mesh-bvh/ +* `P` try material clipping planes for slice range selection * `F` edit in Mesh:Tool * `F` custom device vars for profiles / ranges / gcode diff --git a/src/kiri-dev/fdm/Anycubic.Kobra b/src/kiri-dev/fdm/Anycubic.Kobra new file mode 100644 index 00000000..8d727d1d --- /dev/null +++ b/src/kiri-dev/fdm/Anycubic.Kobra @@ -0,0 +1,83 @@ +{ + "noclone": false, + "mode": "FDM", + "internal": 0, + "bedHeight": 2.5, + "bedWidth": 222, + "bedDepth": 222, + "bedRound": false, + "bedBelt": false, + "resolutionX": 1600, + "resolutionY": 900, + "maxHeight": 222, + "originCenter": false, + "extrudeAbs": false, + "gcodeFan": [ + "M106 S{fan_speed}" + ], + "gcodeTrack": [ + "M117 {progress}% layer {layer} / {layers}" + ], + "gcodeLayer": [], + "gcodePre": [ + "M107 ; turn off filament cooling fan", + "M104 S{temp} T0 ; set extruder temperature", + "M140 S{bed_temp} T0 ; set bed temperature", + "G90 ; set absolute positioning mode", + "M83 ; set relative positioning for extruder", + "G28 ; home axes", + "G1 F3000 ; set default move speed", + "G1 Z1 F6000 ; pause above the bed", + "M190 S{bed_temp} T0 ; wait for bed to reach target temp", + "M109 S{temp} T0 ; wait for extruder to reach target temp", + "G92 E0 ; set extruder position to 0" + ], + "gcodePost": [ + "M107 ; turn off filament cooling fan", + "M104 S0 T0 ; turn off extruder", + "M140 S0 T0 ; turn off bed", + "G91 ; relative movement", + "G1 Z10 F1200 ; drop bed 10mm", + "G90 ; absolute positioning", + "G28 X0 Y0 ; home XY axes", + "M84 ; disable stepper motors" + ], + "gcodeExt": [], + "gcodeInt": [], + "gcodeProc": "", + "gcodePause": [], + "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 + } + ], + "deviceName": "Anycubic Kobra", + "fwRetract": false, + "extras": { + "palette": { + "printer": "6c99ea036da", + "ping": null, + "feed": null, + "push": null, + "offset": null, + "heat": null, + "cool": null, + "press": null + } + } +} diff --git a/src/kiri/widget.js b/src/kiri/widget.js index 21225274..246e80dd 100644 --- a/src/kiri/widget.js +++ b/src/kiri/widget.js @@ -301,13 +301,16 @@ class Widget { const mesh = new THREE.Mesh( geometry, [ new THREE.MeshPhongMaterial({ + side: THREE.DoubleSide, color: 0xffff00, specular: 0x202020, shininess: 125, transparent: true, - opacity: solid_opacity + opacity: solid_opacity, + clipIntersection: false }), new THREE.MeshPhongMaterial({ + side: THREE.DoubleSide, color: 0x0088ee, specular: 0x202020, shininess: 100, @@ -318,7 +321,7 @@ class Widget { mesh.renderOrder = 1; geometry.computeVertexNormals(); geometry.addGroup(0, Infinity, 0); - mesh.material[0].side = THREE.DoubleSide; + // mesh.material[0].side = THREE.DoubleSide; mesh.castShadow = true; mesh.receiveShadow = true; mesh.widget = this; @@ -380,6 +383,15 @@ class Widget { return this.mesh.material[0]; } + setZClip(from, to) { + let mat = this.getMaterial(); + mat.clippingPlanes = (from >= 0 && to >= 0) ? [ + new THREE.Plane(new THREE.Vector3(0, 1, 0), -from), + new THREE.Plane(new THREE.Vector3(0, -1, 0), to), + ] : null; + moto.space.refresh(); + } + isVisible() { return this.getMaterial().visible; } diff --git a/src/moto/space.js b/src/moto/space.js index 8b4facda..94cd9f03 100644 --- a/src/moto/space.js +++ b/src/moto/space.js @@ -1231,6 +1231,7 @@ gapp.register("moto.space", [], (root, exports) => { preserveDrawingBuffer: true, logarithmicDepthBuffer: true }); + renderer.localClippingEnabled = true; camera = ortho ? new THREE.OrthographicCamera(-100 * aspect(), 100 * aspect(), 100, -100, 0.1, 100000) : new THREE.PerspectiveCamera(perspective, aspect(), 0.1, 100000);