initial commit

This commit is contained in:
Stewart Allen 2017-04-18 17:09:33 -04:00
commit bd51ac38f0
90 changed files with 29458 additions and 0 deletions

BIN
web/kiri/favicon-mobile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

BIN
web/kiri/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 400,
"bed_depth": 400
}
}

View file

@ -0,0 +1,24 @@
{
"file-ext": "ngc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)",
"M03 S20000 ; spindle on"
],
"post":[
"M05 ; spindle off",
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 400,
"bed_depth": 400
}
}

View file

@ -0,0 +1 @@
Any.Generic.Grbl

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 200,
"bed_depth": 200
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 400,
"bed_depth": 400
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 830,
"bed_depth": 400
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 830,
"bed_depth": 830
}
}

View file

@ -0,0 +1,24 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"origin_center": false,
"spindle_max": 12000,
"bed_width": 290,
"bed_depth": 200
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 1000,
"bed_depth": 1000
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 500,
"bed_depth": 500
}
}

View file

@ -0,0 +1,22 @@
{
"file-ext": "nc",
"token-space": " ",
"strip-comments": true,
"pre":[
"G21 ; set units to MM (required)",
"G90 ; absolute position mode (required)"
],
"post":[
"M30 ; program end"
],
"tool-change":[
"M6 T{tool} ; change tool to '{tool_name}'"
],
"dwell":[
"G4 P{time} ; dwell for {time}ms"
],
"settings": {
"bed_width": 235,
"bed_depth": 185
}
}

View file

@ -0,0 +1,34 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 ; home axes",
"G29 ; level bed",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 X0 Y0 Z0.25 F180 ; move xy to 0,0 and z 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M190 S{bed_temp} T0 ; wait for bed to reach target temp",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false
}
}

View file

@ -0,0 +1 @@
Any.Generic.Marlin

View file

@ -0,0 +1,26 @@
{
"pre":[
"M104 S{temp} ; set extruder temperature",
"M140 S{bed_temp} ; set bed temperature",
"G28 ; Home",
"G1 F5000 Z50 ; lift nozzle",
"G0 X0 Y-100 Z50 ; parking",
"G0 Z20 ; parking",
"G92 E0 ; zero the extruded length",
"G1 F200 E3 ; extrude 3mm of feed stock"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 ; turn off right extruder",
"M140 S0 ; turn off bed"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": true,
"bed_width": 210,
"bed_depth": 210,
"build_height": 320
}
}

View file

@ -0,0 +1,30 @@
{
"pre":[
"M104 S{temp} T0 ; set extruder temperature",
"G21 ; Make sure we're in metric mode",
"G90 ; set absolute positioning mode",
"M83 ; set relative positioning for extruder",
"G28 ; home axes",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 F200 E3.5 ; set feed speed, prime nozzle",
"G92 E0 ; zero the extruded",
"G1 Z30 ; position near the bed before first position"
],
"post":[
"G28 ; home axes",
"M104 S0 T0 ; turn off right extruder",
"M140 S0 T0 ; turn off bed",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"nozzle_size": 0.5,
"origin_center": true,
"bed_width": 240,
"bed_depth": 240,
"build_height": 480
}
}

View file

@ -0,0 +1,30 @@
{
"pre":[
"M104 S{temp} T0 ; set extruder temperature",
"G21 ; Make sure we're in metric mode",
"G90 ; set absolute positioning mode",
"M83 ; set relative positioning for extruder",
"G28 ; home axes",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 F200 E3.5 ; set feed speed, prime nozzle",
"G92 E0 ; zero the extruded",
"G1 Z30 ; position near the bed before first position"
],
"post":[
"G28 ; home axes",
"M104 S0 T0 ; turn off right extruder",
"M140 S0 T0 ; turn off bed",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"nozzle_size": 0.35,
"origin_center": true,
"bed_width": 240,
"bed_depth": 240,
"build_height": 260
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z axis",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F300 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 270,
"bed_depth": 280,
"build_height": 180
}
}

View file

@ -0,0 +1,38 @@
{
"pre":[
"M108 S255 ; set extruder speed",
"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",
"M107 ; turn off filament cooling fan",
"G28 XY ; home XY axes",
"G28 Z ; home Z axis",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F300 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M108 S0 ; set extruder speed",
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z200 F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 200,
"bed_depth": 250,
"build_height": 200
}
}

View file

@ -0,0 +1,44 @@
{
"pre":[
"M73 P0 ; set progress to 0%",
"G90 ; set absolute positioning mode",
"M83 ; set relative positioning for extruder",
"M104 S{temp} T0 ; set extruder temperature for T0 (tool 0)",
"M127 ; close extruder valve (if it has one)",
"G162 X Y F3000 ; move X,Y axis to maximum position at speed 3000 (top/right of table)",
"G161 Z F1200 ; move Z axis to minimum position as speed 1200 (bottom)",
"G92 Z-5 ; set Z axis value to -5 (no move)",
"G1 Z0 ; move Z axis to 0 (lifting it 5mm off endstop)",
"G161 Z F100 ; move Z axis to minimum position at speed 100",
"M132 X Y Z A B ; load EEPROM home offsets for all axis",
"G1 X{left} Y{bottom+10} Z30 F9000 ; move to wait position off table",
"G130 X20 Y20 Z20 A20 B20 ; lower stepper Vrefs to give more juice to the extruder heater",
"M133 T0 ; wait for extruder T0 temperature to stabilize",
"G130 X127 Y127 Z40 A127 B127 ; default stepper Vrefs now that extruder is hot",
"G92 A0 ; set extruder position value to 0 (no move)",
"G1 Z0.4 ; move nozzle just above the bed height",
"G1 E25 F300 ; purge extruder for 25mm at speed 300",
"G1 X{left+10} Y{bottom+10} Z0.15 F1200 ; slow wipe",
"G1 X{left+15} Y{bottom+15} Z0.5 F1200 ; lift",
"G92 A0 ; set extruder position value to 0 (no move)",
"M135 T0 ; set toolhead 0"
],
"post":[
"M127 ; stop filament cooling fan",
"M73 P100 ; set build progress to 100%",
"G1 Z150 F1000 ; send Z axis to bottom (engaging end stop)",
"G162 X Y F3000 ; move X,Y axis to maximum position at speed 3000 (top/right of table)",
"M18 ; disable all stepper motors",
"M72 P1 ; play song 1 (tada)"
],
"cmd":{
"fan_power": "M126 S{fan_speed}",
"progress": "M73 P{progress}"
},
"settings":{
"origin_center": true,
"bed_width": 300,
"bed_depth": 175,
"build_height": 150
}
}

View file

@ -0,0 +1,37 @@
{
"pre":[
"G1 Z15.0 F12000 ; move the platform down 15mm",
"G1 X150 Y5 F12000 ; center extruder on X",
"M107 ; turn off filament cooling fan",
"M83 ; use relative positioning for extruder",
"M104 S{temp} ; set extruder temperature",
"G21 ; use metric values",
"G90 ; use absolute positioning mode",
"G28 ; move to endstops",
"G29 ; perform auto-levelling",
"M109 S{temp} ; wait for extruder to reach target temp",
"G1 X150 Y5 Z0.3 ; move the platform to purge extrusion",
"G92 E0 ; zero the extruded length",
"G1 F200 X250 E30 ; extrude 30mm of feed stock",
"G92 E0 ; zero the extruded length again",
"G1 X150 Y150 Z25 F12000 ; center head for print",
"G1 F12000 ; set head seek rate"
],
"post":[
"G1 E-1 F300 ; retract the filament to release pressure",
"G1 Z{z_max} E-5 F1200 ; drop bed, retract more filament",
"G28 X0 Y0 ; move X/Y to min endstops",
"M107 ; turn off filament cooling fan",
"M104 S0 ; turn off extruder",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 305,
"bed_depth": 305,
"build_height": 305
}
}

View file

@ -0,0 +1,40 @@
{
"pre":[
"G1 Z15.0 F12000 ; move the platform down 15mm",
"G1 X150 Y5 F12000 ; center extruder on X",
"M107 ; turn off filament cooling fan",
"M83 ; use relative positioning for extruder",
"M104 S{temp} ; set extruder temperature",
"M140 S{bed_temp} ; set bed temperature",
"G21 ; use metric values",
"G90 ; use absolute positioning mode",
"G28 ; move to endstops",
"G29 ; perform auto-levelling",
"M109 S{temp} ; wait for extruder to reach target temp",
"M190 S{bed_temp} ; wait for bed to reach target temp",
"G1 X150 Y5 Z0.3 ; move the platform to purge extrusion",
"G92 E0 ; zero the extruded length",
"G1 F200 X250 E30 ; extrude 30mm of feed stock",
"G92 E0 ; zero the extruded length again",
"G1 X150 Y150 Z25 F12000 ; center head for print",
"G1 F12000 ; set head seek rate"
],
"post":[
"G1 E-1 F300 ; retract the filament to release pressure",
"G1 Z{z_max} E-5 F1200 ; drop bed, retract more filament",
"G28 X0 Y0 ; move X/Y to min endstops",
"M107 ; turn off filament cooling fan",
"M104 S0 ; turn off extruder",
"M140 S0 ; turn off bed",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 305,
"bed_depth": 305,
"build_height": 305
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z205 F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 223,
"bed_depth": 223,
"build_height": 205
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 225,
"bed_depth": 145,
"build_height": 150
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 305,
"bed_depth": 205,
"build_height": 575
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 200,
"bed_depth": 200,
"build_height": 180
}
}

View file

@ -0,0 +1,36 @@
{
"pre":[
"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",
"M107 ; turn off filament cooling fan",
"G28 X0 Y0 ; home XY axes",
"G28 Z0 ; home Z",
"G92 X0 Y0 Z0 E0 ; reset all axes positions",
"G1 Z0.25 F180 ; move z to 0.25mm over bed",
"G92 E0 ; zero the extruded",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G1 E15 F200 ; purge 15mm from extruder",
"G92 E0 ; zero the extruded",
"G1 F225 ; set feed speed"
],
"post":[
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off right extruder",
"M104 S0 T1 ; turn off left extruder",
"M140 S0 T0 ; turn off bed",
"G1 Z{z_max} F1200 ; drop bed",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"cmd":{
"fan_power": "M106 S{fan_speed}"
},
"settings":{
"origin_center": false,
"bed_width": 200,
"bed_depth": 200,
"build_height": 180
}
}

27
web/kiri/help-kiri.html Normal file
View file

@ -0,0 +1,27 @@
<button id="help-close">X</button>
<center><b>Quick Start</b></center>
<p>
<a href="#" title="Kiri-e is the Japanese art of papercutting"><b>Kiri:Moto</b></a>
is an extensible, multi-purpose slicing<br>and visualization engine that produces output for:
<li><label>CAM</label> : 3 axis CNC toolpaths
<li><label>FDM</label> : GCode for 3D printers
<li><label>LASER</label> : DXG / SVG cut paths
<li><label><a target="_onshape" href="https://appstore.onshape.com/apps/CAM/EAAEWYIOMQKBENEMYW2N7MF253CT4WYL6SUJGEY=/description">Onshape</a></label> : Directly Integrated
<li><label><a target="_thingiverse" href="http://www.thingiverse.com/apps/kirimoto/">Thingiverse</a></label> : Thing App
</p>
<p>
<b><a>Files</a></b> are loaded via drag/drop or 'load' menu
<li>Loaded files are cached in the lower-left menu
<li>Check device mode (FDM, CAM, Laser)
<li>Select a GCode profile for your device
<li>Check slicing parameters in right menu
<li>Slice can be found under 'function'
</p>
<p>Refer to the <a target="_help" href="https://wiki.grid.space/wiki/Kiri:Moto">Grid.Space Wiki</a> for more information</p>
<p id="kiri-version"></p>

251
web/kiri/index.html Normal file
View file

@ -0,0 +1,251 @@
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="copyright" content="stewart allen [stewart@neuron.com]">
<meta name="description" content="3d slice modeler, gcode and CNC toolpath generator">
<meta name="keywords" content="3d slicer,slicer,3d slicing,cnc,cam,toolpaths,toolpath generation,kiri,kirimoto,kiri:moto,gcode" />
<meta name="author" content="Stewart Allen">
<meta name="robots" content="noindex, nofollow">
<meta property="og:description" content="Kiri:Moto is a unique multi-modal 3D slicer that runs entirely in browser and creates output for your favorite maker tools: 3D Printers, CNC Mills and Laser Cutters. Advanted layer view helps debug prints ahead of time.">
<meta property="og:title" content="Cloud-based Slicer for Makers">
<meta property="og:type" content="website">
<meta property="og:url" content="https://grid.space/kiri">
<meta property="og:image" content="https://grid.space/img/logo_km_og.png">
<title>Kiri:Moto</title>
<link rel="icon" href="/kiri/favicon.ico">
<link rel="apple-touch-icon" href="/kiri/favicon-mobile.png">
<link rel="stylesheet" type="text/css" href="/moto/style.css">
<link rel="stylesheet" type="text/css" href="/kiri/style.css">
</head>
<body>
<script>
/* because TWEEN complains */
module = {};
</script>
<!--{kiri}-->
<!-- app title home page links -->
<div id="appid">
<span><a href="#" id="kiri">Kiri:Moto</a> by <a href="/" target="home">Grid.Space</a></span>
</div>
<!-- left control menu -->
<div id="control-left" class="control"><div id="assets"></div></div>
<!-- right control menu -->
<div id="control-right" class="control"><div id="control"></div></div>
<!-- SPJS gcode sender -->
<div id="sender">
<div id="sender-bar">
<button id="sender-spjs">?</button>
<button id="sender-close">X</button>
</div>
<span>direct device control</span>
<div class="sender-sel">
<table>
<tr>
<th colspan="2" class="flow-row">
<input class="flow-grow" id="sender-host" size="30" spellcheck="false" placeholder="host:port of SPJS server" />
</th>
<td> <button id="sender-connect">connect</button> </td>
</tr>
<tr>
<th class="flow-row">
<select class="flow-grow" id="sender-port" disabled="true"><option>select port</option></select> &nbsp;
<select id="sender-mode" disabled="true">
<option id="mode-option">set mode</option>
<option value="grbl">grbl</option>
<option value="tinyg">tinyg</option>
</select>
</th>
<td> <button id="sender-port-close">close</button> </td>
</tr>
</table>
</div>
<div class="sender-sel"> <div id="sender-log"></div> </div>
<div class="sender-sel" id="sender-cc">
<table>
<tr>
<th>
<label>status</label>
<input id="sender-status" size="5" disabled="true" />
<label>send</label>
<input id="sender-command" size="30" />
</th>
</tr>
<tr>
<th class="flow-row" id="sender-quick">
<button id="sender-ctrlx">soft reset</button> &nbsp;
<button id="sender-hold">feed hold</button> &nbsp;
<button id="sender-resume">feed resume</button>
</td>
</tr>
</table>
</div>
<div class="sender-sel flow-row flow-space-between" id="sender-pad">
<div>
<table>
<tr><th>
<button id="sjx-">X-</button>
<button id="sjx+">X+</button>
</th></tr>
<tr><th>
<button id="sjy-">Y-</button>
<button id="sjy+">Y+</button>
</th></tr>
<tr><th>
<button id="sjz-">Z-</button>
<button id="sjz+">Z+</button>
</th></tr>
</table>
</div><div>
<table>
<tr><th> <label>jog</label><input id="sender-jog" size="4" value="1" title="jog distance in mm" /><label>mm</label> </th></tr>
<tr><th> <button id="sender-set-zero">zero out axes</button> </th></tr>
<tr><th> <button id="sender-goto-zero">goto zero axis</button> </th></tr>
</table>
</div><div>
<table>
<tr><th><label>X</label> <input id="saxi" disabled="true" size="9" /> <input id="srxi" disabled="true" size="9" /></th></tr>
<tr><th><label>Y</label> <input id="sayi" disabled="true" size="9" /> <input id="sryi" disabled="true" size="9" /></th></tr>
<tr><th><label>Z</label> <input id="sazi" disabled="true" size="9" /> <input id="srzi" disabled="true" size="9" /></th></tr>
</table>
</div>
</div>
<div class="sender-sel" id="sender-control">
<table>
<tr><td>
<label>gcode control</label>
<div id="sender-control-buttons">
<button id="sender-gc-send">send</button>
<button id="sender-gc-pause">pause</button>
<button id="sender-gc-abort">abort</button>
: <button id="sender-gc-runbox">runbox</button>
</div>
</td></tr>
<tr><td class="flow-row flow-space-between">
<div><label>queue</label><input id="sender-gc-queue" disabled="true" size="9" /> </div>
<div><label>sent</label><input id="sender-gc-sent" disabled="true" size="9" /> </div>
<div><label>total</label><input id="sender-gc-lines" disabled="true" size="9" /> </div>
</td></tr>
</table>
</div>
</div>
<!-- all modal dialogs -->
<div id="modal">
<div id="help"></div>
<!-- changeable print dialog -->
<div id="print"></div>
<!-- hidden file input loader -->
<input id="load-file" type="file" name="loadme" style="display:none" accept=".stl,.gcode,.nc"/>
</div>
<!-- 3js -->
<div id="container"></div>
<!-- progress bar -->
<div id="loading"><div id="progress"><span id="prostatus">status</span></div></div>
<!-- file load catalog -->
<div id="catalog" class="dialog">
<div id="catalogBody" class="flow-col">
<span id="localCache">local cache</span>
<div id="catalogList"></div>
</div>
</div>
<!-- settings load dialog -->
<div id="settings" class="dialog">
<div id="settingsBody" class="flow-col">
<span id="settingsCache">saved settings</span>
<div id="settingsList"></div>
</div>
</div>
<!-- GCode filter editor -->
<div id="devices" class="dialog">
<div id="devices-body" class="flow-col">
<div id="device-labels" class="flow-row">
<span>device</span>
<span>settings</span>
</div>
<div id="device-cols" class="flow-row">
<div id="device-list" class="flow-col">
<select id="device-select" size="15"></select>
</div>
<div id="device-info">
<div id="device"></div>
</div>
</div>
<div id="device-action" class="flow-row">
<button id="device-add">+</button>
<button id="device-del">-</button>
<span id="device-spacer"></span>
<button id="device-save">save</button>
<button id="device-close">close</button>
</div>
</div>
</div>
<!-- CAM tools dialog -->
<div id="tools" class="dialog">
<div id="tools-body" class="flow-col">
<div id="tool-labels" class="flow-row">
<span>tools</span>
<span>details</span>
</div>
<div id="tool-cols" class="flow-row">
<div id="tool-list" class="flow-col">
<select id="tool-select" size="15"></select>
</div>
<div id="tool-info" class="flow-col">
<div class="flow-row"><label>type</label>
<select id="tool-type">
<option value="endmill" selected>endmill</option>
<option value="ballmill">ballmill</option>
</select>
</div>
<div class="flow-row"><label>name</label><input id="tool-name" size=8></input></div>
<div class="flow-row"><label>tool #</label><input id="tool-num" size=5></input></div>
<div class="flow-row"><label>metric</label><input id="tool-metric" type="checkbox"></input></div>
<div class="grouphead">flute</div>
<div class="flow-row" title="flute diameter"><label>diameter</label><input id="tool-fdiam" size=5></input></div>
<div class="flow-row" title="flute length"><label>length</label><input id="tool-flen" size=5></input></div>
<div class="grouphead">shaft</div>
<div class="flow-row" title="shaft diameter"><label>diameter</label><input id="tool-sdiam" size=5></input></div>
<div class="flow-row" title="shaft length"><label>length</label><input id="tool-slen" size=5></input></div>
</div>
</div>
<div id="tool-action" class="flow-row">
<button id="tool-add">+</button>
<button id="tool-del">-</button>
<span id="tool-spacer"></span>
<button id="tools-save">save</button>
<button id="tools-close">done</button>
</div>
</div>
</div>
<!-- selection info -->
<div id="selection">
<span>
<label class="label">width:</label><label id="sel_width" class="value">mm</label>
<label class="label">depth:</label><label id="sel_depth" class="value">mm</label>
<label class="label">height:</label><label id="sel_height" class="value">mm</label>
&nbsp;&nbsp;
<label class="label">scale</label>
<label class="label">x</label><input id="scale_x" size="3" value="1"/>
<label class="label">y</label><input id="scale_y" size="3" value="1"/>
<label class="label">z</label><input id="scale_z" size="3" value="1"/>
<label class="label">uniform</label><input type="checkbox" id="scale_uni" checked>
&nbsp;&nbsp;
<label class="label">rotate</label>
<button id="x+" title="hold SHIFT to rotate 5 degrees">x+</button><button id="x-" title="hold SHIFT to rotate 5 degrees">x-</button>
<button id="y+" title="hold SHIFT to rotate 5 degrees">y+</button><button id="y-" title="hold SHIFT to rotate 5 degrees">y-</button>
<button id="z+" title="hold SHIFT to rotate 5 degrees">z+</button><button id="z-" title="hold SHIFT to rotate 5 degrees">z-</button>
</span>
</div>
<!-- layer slider -->
<div id="layer-view" class="flow-row">
<span>
<button id="layer-toggle">layers</button>
<div id="layers"></div>
<input id="layer-id" size="4">
<input id="layer-slider" type="range">
<button id="layer-range"> section</button>
<input id="layer-span" size="4" value="1">
</span>
</div>
</body>
</html>

View file

@ -0,0 +1,47 @@
<button id="print-close">X</button>
<span id="print-title">output options</span>
<div>
<table id="print-info">
<tr><th>file name</th><td><input id="print-filename" size="30" spellcheck="false" /></td></tr>
<tr><th>file size (bytes)</th><td><input id="print-filesize" size="10" disabled="true" /></td></tr>
<tr id="mill-info"><th>estimated mill time (h:m:s)</th><td><input id="mill-time" size="10" disabled="true" /></td></tr>
</table>
</div>
<div id="print-filament-row">
<table>
<tr><th>filament used (mm)</th><td><input id="print-filament" size="10" disabled="true" /></td></tr>
<tr><th>filament density (g/cm^3)</th><td><input id="print-density" size="10" value="1.25" /></td></tr>
<tr><th>printed weight (g)</th><td><input id="print-weight" size="10" disabled="true" /></td></tr>
<tr><th>estimated print time (h:m:s)</th><td><input id="print-time" size="10" disabled="true" /></td></tr>
</table>
</div>
<div class="print-sel">
<table><tr><th>
<button id="print-download">download gcode file</button>
<button id="print-serial">use gcode sender</button>
</th></tr></table>
</div>
<div class="print-sel" id="send-to-octoprint">
<table>
<tr><th colspan="2"><button id="print-octoprint">send to octoprint</button></th></tr>
<tr id="ophost"><th>host:port</th><td><input id="octo-host" size="35" placeholder="http(s)://host:port" /></td></tr>
<tr id="opapik"><th>api key</th><td><input id="octo-apik" size="35" /></td></tr>
<!--<tr><th>options</th><td><input type="checkbox" id="octo-print">start print</td></tr>-->
<tr id="ophint"><td colspan="2"><span id="octo-hint"><a href="http://docs.octoprint.org/en/master/api/general.html?highlight=cors#cross-origin-requests" target="_help">CORS support</a> must be enabled in API settings</span></td></tr>
</table>
</div>
<div class="print-sel" id="send-to-gridprint">
<table>
<tr><th colspan="2"><button id="print-gridprint">send to grid:print</button></th></tr>
<tr><th>host:port</th><td><input id="grid-host" size="35" placeholder="http(s)://host:port" /></td></tr>
<tr><th>api key</th><td><input id="grid-apik" size="35" /></td></tr>
<tr><th>target</th><td><input id="grid-target" size="35" /></td></tr>
<tr><td colspan="2"><span id="grid-hint">setup <a href="https://github.com/stewartoallen/grid-print" target="_help">grid:print</a> for your network</span></td></tr>
</table>
</div>

View file

@ -0,0 +1,18 @@
<button id="print-close">X</button>
<span>output options</span>
<div>
<table id="print-info">
<tr><th>file name</th><td><input id="print-filename" size="30" spellcheck="false" /></td></tr>
<tr><th>segments</th><td><input id="print-lines" size="10" disabled="true" /></td></tr>
</table>
</div>
<div class="print-sel">
<table>
<tr><th><button id="print-svg">download as svg</button></th></tr>
<tr><th><button id="print-dxf">download as dxf</button></th></tr>
<tr><th><button id="print-lg">download as gcode</button></th></tr>
</table>
</div>

View file

@ -0,0 +1,31 @@
/** atom3dp css */
button {
color: #000;
border: 1px solid rgba(20,20,20,0.5);
}
label {
border-bottom: 1px solid rgba(200,200,0,0.75);
}
.grouphead {
background-color: rgba(0,0,0,0.85);
}
#control-left {
background-color: rgba(240,240,20,0.5);
}
#control-right {
color: #000;
background-color: rgba(240,240,20,0.5);
}
#appid span {
background-color: rgba(240,240,20,0.5) !important;
}
#selection span {
background-color: rgba(240,240,20,0.5) !important;
}
#layer-view span {
background-color: rgba(240,240,20,0.5) !important;
}
#modeCAM {
display: none !important;
}

578
web/kiri/style.css Normal file
View file

@ -0,0 +1,578 @@
th, tr, td, span, div, label, button {
user-select: none;
}
input[type=range]::-moz-focus-outer {
border: 0;
}
.dialog {
display: none;
color: white;
padding: 10px;
border: 1px solid rgba(255,255,255,0.75);
background-color: rgba(20,20,20,0.75);
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
position: fixed;
top: 25px;
xleft: 25px;
}
.dialog span {
padding: 2px 5px 2px 5px;
margin: 0 5px 5px 5px;
background-color: #333;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
border: 1px solid #555;
text-align: center;
}
.helper {
position: relative;
display: none;
}
.mono {
unicode-bidi: embed;
font-family: monospace;
white-space: pre;
}
#selection {
display: none;
text-align: center;
position: fixed;
width: 100%;
bottom: 3px;
}
#selection span {
border: 1px solid #ccc;
border-radius: 5px;
padding: 3px 8px 8px 8px;
background-color: rgba(170,221,255,0.75);
color: rgba(0,0,0,0.5);
}
#selection label {
border: 0;
}
#selection .value {
font-weight: bold;
font-style: italic;
color: black;
}
#selection button {
margin-left: 1px;
border: 1px solid rgba(255,255,255,0.75);
}
#appid {
text-align: center;
position: fixed;
width: 100%;
top: 3px;
}
#appid span {
border: 1px solid #ccc;
border-radius: 5px;
padding: 5px 8px 3px 8px;
background-color: rgba(170,221,255,0.75);
color: rgba(0,0,0,0.5);
}
#appid a {
color: rgba(0,0,0,0.75);
font-weight: bold;
}
#appid a:hover {
color: rgba(0,50,50,0.75);
}
#container {
width: 100%;
height: 100%;
overflow: hidden;
}
#loading {
position: fixed;
top: 30px;
left: 20%;
right: 20%;
border: 2px solid rgba(10,10,10,0.25);
border-radius: 5px;
margin: 2px;
background-color: rgba(200,200,200,0.75);
text-align: center;
display: none;
}
#progress {
position: relative;
width: 1%;
height: 100%;
background-color: #f00;
text-align: left;
}
#progress > span {
color: white;
padding-left: 10px;
}
#modal {
z-index: 20000;
position: fixed;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0,0,0,0.2);
display: none;
}
/** PRINT DIALOG */
#print {
position: fixed;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
text-align: center;
top: 50px;
left: 50%;
color: white;
border: 1px solid white;
background-color: rgba(20,20,20,0.75);
padding: 10px;
}
#print-close {
position: absolute;
z-index: 200;
right: 3px;
top: 3px;
}
#print > div {
border: 1px solid #888;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
padding: 2px;
margin: 6px 0 6px 0;
}
#print .print-sel:hover {
border: 1px solid yellow;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#print table {
width: 100%;
}
#print th {
text-align: left;
}
#print td {
text-align: right;
}
#print input {
text-align: right;
}
#print input[disabled] {
background-color: #bbb;
border-color: #ccc;
color: black;
}
#print-density {
disabled: false;
}
#grid-hint {
font-style: italic;
font-weight: lighter;
font-size: 10px;
}
#octo-hint {
font-style: italic;
font-weight: lighter;
font-size: 10px;
}
#print a {
color: #8ae;
}
#print a:hover {
color: #fff;
background-color: #888;
}
/** sender dialog */
#sender {
position: absolute;
text-align: center;
top: 25px;
right: 0px;
color: white;
border: 1px solid white;
background-color: rgba(20,20,20,0.75);
padding: 10px;
display: none;
}
#sender-bar {
border: 0 !important;
margin: 2px 2px 0 0 !important;
padding: 0 !important;
position: absolute;
z-index: 200;
right: 3px;
top: 3px;
}
#sender-bar button {
margin: 0;
}
#sender > div {
border: 1px solid #888;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
padding: 2px;
margin: 6px 0 6px 0;
}
#sender .sender-sel:hover {
border: 1px solid yellow;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#sender table {
width: 100%;
}
#sender th {
text-align: left;
}
#sender td {
text-align: right;
}
#sender input[disabled] {
background-color: #bbb;
border-color: #ccc;
color: black;
}
#v a {
color: #8ae;
}
#sender a:hover {
color: #fff;
background-color: #888;
}
#sender-log {
width: 100%;
height: 100px;
padding: 5px;
overflow: auto;
text-align: left;
font-size: 11px;
max-width: 100em;
}
#sender-set-zero, #sender-goto-zero, #sender-connect, #sender-port-close {
width: 100%;
}
#sender-jog {
flex-grow: 1;
}
#sender label {
color: #ddd;
background-color: #555;
border: 1px solid #aaa;
padding-top: 1px;
padding-left: 3px;
padding-right: 3px;
padding-bottom: 1px;
}
#sender span {
font-weight: normal;
}
#sender-control td {
text-align: justify;
}
#sender-control input {
margin-left: 2px;
}
#sender-control-buttons {
float:right;
}
#sender-status {
text-align: center;
xbackground-color: #555 !important;
xborder: 1px solid black !important;
xmargin: 2px 2px 2px 0;
xpadding: 2px 2px 2px 0;
}
#sender-quick button {
flex-grow: 1;
}
/** help dialog */
#help {
position: fixed;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
text-align: left;
top: 50px;
left: 50%;
color: white;
border: 1px solid white;
background-color: rgba(20,20,20,0.75);
padding: 10px;
}
#help-close {
position: absolute;
z-index: 200;
right: 3px;
top: 3px;
}
#help a {
color: #8ae;
}
#help a:hover {
color: #fff;
background-color: #888;
}
#help p {
font-weight: normal;
}
button.selected {
background-color: white;
}
/** tool dialog */
#tools {
text-align: center;
}
#tools button {
margin-left: 1px;
margin-right: 2px;
}
#tools span {
border: 0;
background: transparent;
}
#tools-body {
height: 100%;
}
#tool-labels span {
width: 200px;
padding: 2px 5px 2px 5px;
margin: 0 5px 5px 5px;
background-color: #333;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
border: 1px solid #555;
text-align: center;
}
#tool-cols > div {
width: 200px;
padding: 5px;
margin: 5px;
border: 1px solid #aaa;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#tool-info > div {
margin-top: 2px;
margin-bottom: 2px;
flex-basis: auto;
flex-shrink: 0;
}
#tool-action > button {
text-align: center;
}
#tool-action > span {
flex-grow: 1;
width: 100%;
}
#tools label {
text-align: left;
}
#tools input {
background-color: #ddd;
margin-bottom: 1px;
text-align: right;
}
#tools input:focus {
background-color: #dee;
}
#tool-list > select {
flex-grow: 1;
width: 100%;
height: 100%;
color: white;
border: 0;
margin-bottom: 2px;
padding-bottom: 2px;
background-color: transparent;
overflow-y: auto;
outline: none;
}
#tool-list select::-webkit-scrollbar {
display: none;
}
/** device dialog */
#devices {
text-align: center;
}
#devices button {
margin-left: 1px;
margin-right: 2px;
}
#devices span {
border: 0;
background: transparent;
}
#devices-body {
height: 100%;
}
#device-labels span {
width: 200px;
padding: 2px 5px 2px 5px;
margin: 0 5px 5px 5px;
background-color: #333;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
border: 1px solid #555;
text-align: center;
}
#device-cols > div {
width: 200px;
padding: 5px;
margin: 5px;
border: 1px solid #aaa;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#device-info > div {
margin-top: 2px;
margin-bottom: 2px;
flex-basis: auto;
flex-shrink: 0;
position: relative;
}
#device-action > button {
text-align: center;
}
#device-action > span {
flex-grow: 1;
width: 100%;
}
#devices label {
text-align: left;
}
#devices input {
background-color: #ddd;
margin-bottom: 1px;
text-align: right;
}
#devices input:focus {
background-color: #dee;
}
#device-list select {
flex-grow: 1;
width: 100%;
height: 100%;
color: white;
border: 0;
margin-bottom: 2px;
padding-bottom: 2px;
background-color: transparent;
overflow-y: auto;
outline: none;
}
#device-list select::-webkit-scrollbar {
display: none;
}
#device-list option[local="1"] {
color: #ff5;
}
#device label {
white-space: nowrap;
}
#device textarea {
overflow: hidden;
font-family: monospace;
}
/** file catalog */
#import {
width: 100%;
}
button[import="1"] {
width: 5px;
padding-left: 2px;
padding-right: 2px;
}
#catalog {
text-align: center;
min-height: 25%;
max-height: 75%;
height: 1000px;
}
#catalog div {
position: relative;
}
#catalogBody {
height: 100%;
}
#catalogBody div::-webkit-scrollbar {
display: none;
}
#catalogList {
overflow-y: scroll;
overflow-x: hidden;
}
#catalogList button {
margin: 0px 0px 2px 2px;
overflow-x: hidden;
text-overflow: ellipsis;
}
/** saved settings list */
#settings button {
margin: 1px;
}
/** layer slider and controls */
#layer-view {
display: none;
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 25px;
text-align: center;
vertical-align: middle;
}
#layer-view span {
position: relative;
border-radius: 5px;
padding: 3px 8px 8px 8px;
background-color: rgba(170,221,255,0.75);
color: rgba(0,0,0,0.5);
}
#layer-view input {
vertical-align: middle;
}
#layer-view button {
position: relative;
margin-left: 1px;
border: 1px solid rgba(255,255,255,0.75);
}
#layer-slider {
border: 0;
margin: 0;
padding: 0;
height: 100%;
width: 50%;
}
#layers {
display: none;
position: fixed;
bottom: 30px;
background-color: rgba(0,0,0,0.2);
border: 1px solid rgba(0,0,0,0.5);
border-radius: 3px;
padding: 6px;
-webkit-transform: translate(-10px, 0);
transform: translate(-10px, 0);
}
#layers label {
text-align: left;
color: rgba(0,0,0,0.85);
}