Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…

<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8" /> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1" /> | |
<title>SLAcer.js for SparkMaker (bêta)</title> | |
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> | |
<link rel="stylesheet" type="text/css" href="vendor/jquery-ui/jquery-ui.min.css" /> | |
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css" /> | |
<link rel="stylesheet" type="text/css" href="vendor/bootstrap-slider/css/bootstrap-slider.min.css" /> | |
<link rel="stylesheet" type="text/css" href="vendor/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css" /> | |
<link rel="stylesheet" type="text/css" href="css/main.css" /> | |
</head> | |
<body> | |
<nav class="navbar navbar-inverse navbar-fixed-top"> | |
<div class="container-fluid"> | |
<div class="navbar-header"> | |
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> | |
<span class="sr-only">Toggle navigation</span> | |
<span class="icon-bar"></span> | |
<span class="icon-bar"></span> | |
<span class="icon-bar"></span> | |
</button> | |
<a class="navbar-brand" href="#">SLAcer.js for SparkMaker (beta)</a> | |
</div> | |
<div id="navbar" class="navbar-collapse collapse"> | |
<ul class="nav navbar-nav navbar-right"> | |
<li><a href="#">About</a></li> | |
<li><a href="https://www.thingiverse.com/groups/sparkmaker/forums/gadgets/topic:28168">Thingiverse</a></li> | |
<li><a href="https://github.com/n0sr3v/SLAcer.js">GitHub (Fork)</a></li> | |
<li><a href="https://github.com/lautr3k/SLAcer.js">GitHub (↪thank you to lautr3k)</a></li> | |
</ul> | |
</div> | |
</div> | |
</nav><!-- .navbar --> | |
<div class="body container-fluid"> | |
<div id="sidebar"> | |
<div class="form-group"> | |
<button id="open-viewer-2d" class="btn btn-primary" type="button"> | |
<span class="glyphicon glyphicon-picture"></span> 2D viewer | |
</button> | |
<button id="slice-button" class="btn btn-success" type="button"> | |
<span class="glyphicon glyphicon-align-center"></span> Slice | |
</button> | |
<button id="abort-button" class="btn btn-danger hidden" type="button"> | |
<span class="glyphicon glyphicon-off"></span> Abort | |
</button> | |
<button id="zip-button" class="btn btn-info" type="button" disabled="disabled"> | |
<span class="glyphicon glyphicon-compressed"></span> ZIP | |
</button> | |
</div> | |
<div id="transform" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#transform-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Transformations</h3> | |
</div> | |
<div id="transform-body" class="panel-body collapse in"> | |
<div class="form-group" id="transform-mirror"> | |
<label for="transform-mirror">Mirror</label> | |
<input type="radio" name="transform-mirror" id="transform-mirror-yes" value="yes" /> yes | |
<input type="radio" name="transform-mirror" id="transform-mirror-no" value="no" checked="checked" /> no | |
</div> | |
<hr /> | |
<div class="form-group"> | |
<label for="transform-action">Action</label> | |
<select id="transform-action" class="form-control input-sm"> | |
<option>scale</option> | |
<option>rotate</option> | |
<option>translate</option> | |
</select> | |
</div> | |
<div class="form-group" id="transform-uniform"> | |
<label for="transform-uniform">Uniform</label> | |
<input type="radio" name="transform-uniform" id="transform-uniform-yes" value="yes" checked="checked" /> yes | |
<input type="radio" name="transform-uniform" id="transform-uniform-no" value="no" /> no | |
</div> | |
<div class="form-group"> | |
<label for="transform-x">X</label> | |
<input type="number" id="transform-x" class="form-control input-sm" placeholder="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="transform-y">Y</label> | |
<input type="number" id="transform-y" class="form-control input-sm" placeholder="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="transform-z">Z</label> | |
<input type="number" id="transform-z" class="form-control input-sm" placeholder="0" /> | |
</div> | |
</div> | |
</div><!-- #transform --> | |
<div id="file" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#file-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">File</h3> | |
</div> | |
<div id="file-body" class="panel-body collapse in"> | |
<div class="form-group"> | |
<span class="btn btn-default btn-file btn-xs"> | |
Browse <input type="file" name="file" id="file-input" accept=".stl" /> | |
</span> | |
<small>Or drop an STL file anywhere.<br>In case of error check your model <a href="https://service.netfabb.com/service.php">here</a>!</small> | |
</div> | |
</div> | |
</div><!-- #file --> | |
<div id="mesh" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#mesh-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Mesh</h3> | |
</div> | |
<div id="mesh-body" class="panel-body collapse in"> | |
<div class="info"> | |
<span class="info-label">Faces</span> | |
<span class="info-value" id="mesh-faces">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Width <small>(<span class="mesh-size-unit">mm</span>)</small></span> | |
<span class="info-value" id="mesh-size-x">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Depth <small>(<span class="mesh-size-unit">mm</span>)</small></span> | |
<span class="info-value" id="mesh-size-y">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Height <small>(<span class="mesh-size-unit">mm</span>)</small></span> | |
<span class="info-value" id="mesh-size-z">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Volume <small>(ml)</small></span> | |
<span class="info-value" id="mesh-volume">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Weight <small>(g)</small></span> | |
<span class="info-value" id="mesh-weight">0</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Cost <small>($)</small></span> | |
<span class="info-value" id="mesh-cost">0</span> | |
</div> | |
</div> | |
</div><!-- #mesh --> | |
<div id="slicer" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#slicer-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Slicer</h3> | |
</div> | |
<div id="slicer-body" class="panel-body collapse in"> | |
<div class="info"> | |
<span class="info-label">Layers <small>(current / total)</small></span> | |
<span class="info-value"> | |
<span id="slicer-layer-value">0</span> / <span id="slicer-layers-value">0</span> | |
</span> | |
</div> | |
<div class="info"> | |
<span class="info-label">Print Time <small>(h:m:s.ms)</small></span> | |
<span class="info-value" id="print-time">0</span> | |
</div> | |
<hr /> | |
<div class="form-group"> | |
<label for="slicer-layers-height">Layers height <small>(μm)</small></label> | |
<input type="number" id="slicer-layers-height" class="form-control input-sm" placeholder="100" min="1" /> | |
</div> | |
<div class="form-group"> | |
<label for="slicer-light-on">Exposure time <small>(ms)</small></label> | |
<input type="number" id="slicer-light-on" class="form-control input-sm" placeholder="10000" min="1" /> | |
</div> | |
<!-- new --> | |
<div class="form-group"> | |
<label for="slicer-light-strength">Exposure Strength Grade <small>(bit)</small></label> | |
<input type="number" id="slicer-light-strength" class="form-control input-sm" placeholder="225" min="1" max="255" /> | |
</div> | |
<!-- new --> | |
<div class="form-group"> | |
<label for="slicer-light-bottom">Bottom Layers Exposure Time <small>(ms)</small></label> | |
<input type="number" id="slicer-light-bottom" class="form-control input-sm" placeholder="60000" min="1" /> | |
</div> | |
<div class="form-group clearfix"> | |
<label for="slicer-lifting-height">Lifting height <small>(mm)</small></label> | |
<input type="number" id="slicer-lifting-height" class="form-control input-sm" placeholder="5" min="1" /> | |
</div> | |
<div class="form-group clearfix"> | |
<label for="slicer-lifting-speed">Lifting speed <small>(mm/min)</small></label> | |
<input type="number" id="slicer-lifting-speed" class="form-control input-sm" placeholder="30" min="1" /> | |
</div> | |
<!-- new --> | |
<div class="form-group clearfix"> | |
<label for="slicer-decline-speed">Decline speed <small>(mm/min)</small></label> | |
<input type="number" id="slicer-decline-speed" class="form-control input-sm" placeholder="100" min="1" /> | |
</div> | |
<hr /> | |
<div class="form-group"> | |
<label for="slicer-image-extension">Output type</label> | |
<input type="radio" name="slicer-image-extension" id="slicer-image-extension-png" value="png" /> png | |
<input type="radio" name="slicer-image-extension" id="slicer-image-extension-svg" value="svg" /> svg | |
<input type="radio" name="slicer-image-extension" id="slicer-image-extension-wow" value="wow" checked="checked" /> wow | |
</div> | |
<hr /> | |
<div class="form-group hidden"> | |
<label for="slicer-light-off">Light off delay <small>(ms)</small></label> | |
<input type="number" id="slicer-light-off" class="form-control input-sm" placeholder="500" min="1" /> | |
</div> | |
<div class="form-group"> | |
<label for="slicer-make-zip">Make ZIP file</label> | |
<input type="radio" name="slicer-make-zip" id="slicer-make-zip-yes" value="yes" checked="checked" /> yes | |
<input type="radio" name="slicer-make-zip" id="slicer-make-zip-no" value="no" /> no | |
</div> | |
<div class="form-group"> | |
<label for="slicer-make-folder">Make layer-folder</label> | |
<input type="radio" name="slicer-make-folder" id="slicer-make-folder-yes" value="yes" /> yes | |
<input type="radio" name="slicer-make-folder" id="slicer-make-folder-no" value="no" checked="checked" /> no | |
</div> | |
<div class="form-group"> | |
<label for="slicer-speed">Slicing mode</label> | |
<input type="radio" name="slicer-speed" id="slicer-speed-yes" value="yes" checked="checked" /> yes | |
<input type="radio" name="slicer-speed" id="slicer-speed-no" value="no" /> no | |
</div> | |
<div class="form-group"> | |
<label for="slicer-speed-delay">Slicing delay<br />delay <small>(ms)</small></label> | |
<input type="number" id="slicer-speed-delay" class="form-control input-sm" placeholder="10" min="1" /> | |
</div> | |
</div> | |
</div><!-- #slicer --> | |
<div id="build-volume" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#build-volume-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Build volume</h3> | |
</div> | |
<div id="build-volume-body" class="panel-body collapse in"> | |
<div class="form-group"> | |
<label for="build-volume-x">X <small>(width)</small></label> | |
<input type="number" id="build-volume-x" class="form-control input-sm" placeholder="102" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="build-volume-y">Y <small>(depth)</small></label> | |
<input type="number" id="build-volume-y" class="form-control input-sm" placeholder="56" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="build-volume-z">Z <small>(height)</small></label> | |
<input type="number" id="build-volume-z" class="form-control input-sm" placeholder="125" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="build-volume-unit">unit</label> | |
<input type="radio" name="build-volume-unit" id="build-volume-unit-in" value="in" /> in | |
<input type="radio" name="build-volume-unit" id="build-volume-unit-mm" value="mm" checked="checked" /> mm | |
</div> | |
</div> | |
</div><!-- #build-volume --> | |
<div id="resin" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#resin-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Resin</h3> | |
</div> | |
<div id="resin-body" class="panel-body collapse in"> | |
<div class="form-group"> | |
<label for="resin-density">Density <small>(g / cm³)</small></label> | |
<input type="number" id="resin-density" class="form-control input-sm" placeholder="1.1" min="0" step="0.1" /> | |
</div> | |
<div class="form-group"> | |
<label for="resin-price">Price <small>($ / l)</small></label> | |
<input type="number" id="resin-price" class="form-control input-sm" placeholder="60" min="0" /> | |
</div> | |
</div> | |
</div><!-- #resin --> | |
<div id="screen" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#screen-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Screen</h3> | |
</div> | |
<div id="screen-body" class="panel-body collapse in"> | |
<div class="info"> | |
<span class="info-label">Dot pitch <small>(mm)</small></span> | |
<span class="info-value" id="screen-dot-pitch">0</span> | |
</div> | |
<div class="form-group"> | |
<label for="screen-width">Width <small>(px)</small></label> | |
<input type="number" id="screen-width" class="form-control input-sm" placeholder="854" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="screen-height">Height <small>(px)</small></label> | |
<input type="number" id="screen-height" class="form-control input-sm" placeholder="480" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="screen-diagonal-size">Diagonal size</label> | |
<input type="number" id="screen-diagonal-size" class="form-control input-sm" placeholder="4.6" min="0" /> | |
</div> | |
<div class="form-group"> | |
<label for="screen-diagonal-unit">Diagonal unit</label> | |
<input type="radio" name="screen-diagonal-unit" id="screen-diagonal-unit-in" value="in" checked="checked" /> in | |
<input type="radio" name="screen-diagonal-unit" id="screen-diagonal-unit-mm" value="mm" /> mm | |
</div> | |
</div> | |
</div><!-- #screen --> | |
<div id="colors" class="panel panel-default"> | |
<div class="panel-heading"> | |
<button class="panel-toggle btn btn-default btn-xs pull-right" type="button" data-toggle="collapse" data-target="#colors-body"> | |
<span class="glyphicon glyphicon-menu-down"></span> | |
</button> | |
<h3 class="panel-title">Colors</h3> | |
</div> | |
<div id="colors-body" class="panel-body collapse in"> | |
<div class="form-group"> | |
<label for="mesh-color">Mesh</label> | |
<input type="text" id="mesh-color" class="form-control input-sm" placeholder="#555555" /> | |
</div> | |
<div class="form-group"> | |
<label for="slice-color">Slice</label> | |
<input type="text" id="slice-color" class="form-control input-sm" placeholder="#550000" /> | |
</div> | |
</div> | |
</div><!-- #colors --> | |
</div><!-- #sidebar --> | |
<div id="main"> | |
<div id="viewer3d" class="box fl">loading...</div> | |
</div><!-- #main --> | |
<div id="slider"> | |
<span class="max">100</span> | |
<input id="ex4" type="text" | |
data-slider-min="0" | |
data-slider-max="100" | |
data-slider-step="1" | |
data-slider-value="0" | |
data-slider-tooltip="always" | |
data-slider-tooltip-position="left" | |
data-slider-orientation="vertical" /> | |
<span class="min">0</span> | |
</div><!-- #main --> | |
</div><!-- .body --> | |
<div id="alert" class="alert alert-warning hidden" role="alert"> | |
<!-- <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> --> | |
<p class="message">Alert message empty...</p> | |
</div> | |
<script src="vendor/jquery-2.1.4.min.js" type="text/javascript"></script> | |
<script src="vendor/jquery-ui/jquery-ui.min.js" type="text/javascript"></script> | |
<script src="vendor/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> | |
<script src="vendor/bootstrap-slider/bootstrap-slider.min.js" type="text/javascript"></script> | |
<script src="vendor/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js" type="text/javascript"></script> | |
<script src="vendor/lodash.min.js" type="text/javascript"></script> | |
<script src="vendor/three.min.js" type="text/javascript"></script> | |
<script src="vendor/earcut.js" type="text/javascript"></script> | |
<script src="vendor/triangulation.js" type="text/javascript"></script> | |
<script src="js/slacer/settings.js" type="text/javascript"></script> | |
<script src="js/slacer/mesh.js" type="text/javascript"></script> | |
<script src="js/slacer/viewer.js" type="text/javascript"></script> | |
<script src="vendor/OrbitControls.js" type="text/javascript"></script> | |
<script src="js/slacer/viewcontrols.js" type="text/javascript"></script> | |
<script src="js/slacer/viewer3d.js" type="text/javascript"></script> | |
<script src="js/slacer/viewer2d.js" type="text/javascript"></script> | |
<script src="js/slacer/slicer.js" type="text/javascript"></script> | |
<script src="js/loader/stl.js" type="text/javascript"></script> | |
<script src="vendor/FileSaver.min.js" type="text/javascript"></script> | |
<script src="vendor/jszip.min.js" type="text/javascript"></script> | |
<script src="js/main.js" type="text/javascript" charset="utf-8"></script> | |
</body> | |
</html> |