Skip to content

Instantly share code, notes, and snippets.

View paulkaplan's full-sized avatar

Paul Kaplan paulkaplan

View GitHub Profile
@paulkaplan
paulkaplan / Shapeoko_mm.pp
Last active January 26, 2018 21:55
Vectric configuration file for Shapeoko (mm, with arcs)
+================================================
+
+ Vectric machine output configuration file
+
+================================================
+
+ History
+
+ Who When What
+ ======== ========== ===========================
@paulkaplan
paulkaplan / motor_controller_repl.py
Last active December 26, 2015 09:39
A brief example of how to connect to a GRBL shield via serial port and send basic machine movements
import serial
import atexit
def initController():
port = serial.Serial(
port='/dev/tty.usbmodem1411',
baudrate=9600
)
closePort(port)
@paulkaplan
paulkaplan / requireConfirmation.css
Last active December 23, 2015 04:49
Make a potentially dangerous function 'confirmable' by wrapping the function call in a confirmation dialog box.
#confirmation-overlay {
position: absolute;
width: 100%;
height:100%;
background: rgba(0,0,0,0.5);
top:0;
left:0;
line-height:18px;
font-size:18px;
z-index:100000000;
@paulkaplan
paulkaplan / STLFileSaver.js
Last active September 14, 2020 13:44
Create an ASCII STL file from a THREE.js mesh that can be saved save from browser and 3D printed
/*
Paul Kaplan, @ifitdidntwork
Create an ASCII STL file from a THREE.js mesh
that can be saved save from browser and 3D printed
--------------------------------------------------
See further explanation here:
http://buildaweso.me/project/2013/2/25/converting-threejs-objects-to-stl-files
--------------------------------------------------
Saving the file out of the browser is done using FileSaver.js
@paulkaplan
paulkaplan / retina_fabric.js
Created July 21, 2013 22:47
Getting fabric.js to work with Retina screens
if( window.devicePixelRatio !== 1 ){
var c = canvas.getElement(); // canvas = fabric.Canvas
var w = c.width, h = c.height;
// Scale the canvas up by two for retina
// just like for an image
c.setAttribute('width', w*window.devicePixelRatio);
c.setAttribute('height', h*window.devicePixelRatio);
@paulkaplan
paulkaplan / fabricBezierCurve.js
Last active February 2, 2024 08:30
Cubic bezier curves with fabric.js renderer
var CubicBezier = function(canvas, opts){
if(!opts) opts = {};
this.start = opts.start || new Vec2(100,100);
this.end = opts.end || new Vec2(400, 400);
this.c1 = opts.c1 || new Vec2(100, 300);
this.c2 = opts.c2 || new Vec2(300, 100);
this.curve = new fabric.Path( this.toSVGPath() );
@paulkaplan
paulkaplan / IllustratorHandles.js
Created July 21, 2013 21:43
Interactive Bezier curves with Illustrator style handles
var Curve = function(points, canvas){
this.points = points.map( function(p){ return new Point(p); })
this.points[0].setFirst();
this.points[this.points.length-1].setLast();
// create the underlying beziers
this.beziers = [];
for(var n=0; n<this.points.length-1; n++){
@paulkaplan
paulkaplan / measureSort.js
Last active December 19, 2015 11:49
jQuery plugin to sort a list of measurements
(function($){
$.fn.sortByMeasurement = function(child_type){
var element = this;
if(!child_type) child_type = "li";
var SINGLE_REGEX = /\s*(\d*)?([\.\/])?(\d*)\s*([a-zA-z]*)/;
@paulkaplan
paulkaplan / gist:5770247
Last active October 12, 2021 01:43
Orbit Controls with momentum and damping for THREE.js
/**
* @author qiao / https://github.com/qiao
* @author mrdoob / http://mrdoob.com
* @author alteredq / http://alteredqualia.com/
* @author WestLangley / http://github.com/WestLangley
*
* customized for momentum (zoom and phi/delta) by paulkaplan
*/
THREE.OrbitControls = function ( object, domElement ) {
@paulkaplan
paulkaplan / shapeKeysToJSON.py
Last active November 16, 2017 21:40
Blender Shape Keys to JSON
#http://stackoverflow.com/questions/7553726/blender-how-to-export-shape-keys-using-python
#and three js blender exporter
import bpy
import json
# monkeypatch the json encoder to truncate floats
# http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module
from json import encoder
encoder.FLOAT_REPR = lambda o: format(o, '.15g')