kopia lustrzana https://github.com/OpenBuilds/OpenBuilds-CONTROL
1929 wiersze
117 KiB
HTML
1929 wiersze
117 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<title>OpenBuilds CONTROL</title>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
<meta name="author" content="">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="metro4:init" content="true">
|
|
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script>
|
|
<link rel="stylesheet" href="lib/metro4/css/metro-all.min.css" />
|
|
<link rel="stylesheet" href="css/main.css" />
|
|
<link rel="stylesheet" href="css/splash.css" />
|
|
<link rel="stylesheet" href="css/buttons.css" />
|
|
<link rel="stylesheet" href="css/probev2.css" />
|
|
<link rel="stylesheet" href="/lib/furcanIconPicker/iconpicker-1.5.0.css" />
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="pos-fixed pos-center" id="splash" onclick="socket.emit('adX32');">
|
|
<center>
|
|
<div id="openbuildslogosplash" style="display: none;">
|
|
<!-- <img id="openbuildslogosplashImg" src="/img/openbuilds.png" onload="$('#openbuildslogosplash').fadeIn(800); setTimeout(function() { $('#splash').fadeOut(400); }, 2000)" width="200" /> -->
|
|
<h1>OpenBuilds<sup>®</sup> CONTROL</h1>
|
|
<img id="openbuildslogosplashImgX32" src="/img/x32splash.png" onload="$('#openbuildslogosplash').fadeIn(800); setTimeout(function() { $('#splash').fadeOut(400); }, 4000)" style="cursor:pointer" />
|
|
<h3 style="cursor:pointer">Check out the all NEW OpenBuilds<sup>®</sup> BlackBox X32</h3>
|
|
<div class="waviy" style="cursor:pointer">
|
|
<span style="--i:1">C</span>
|
|
<span style="--i:2">L</span>
|
|
<span style="--i:3">I</span>
|
|
<span style="--i:4">C</span>
|
|
<span style="--i:5">K</span>
|
|
<span style="--i:6"> </span>
|
|
<span style="--i:7">H</span>
|
|
<span style="--i:8">E</span>
|
|
<span style="--i:9">R</span>
|
|
<span style="--i:10">E</span>
|
|
</div>
|
|
</div>
|
|
</center>
|
|
</div>
|
|
|
|
|
|
<div class="window" style="height: 100vh; overflow-y: hidden;">
|
|
<div id="windowtitlebar" class="window-caption bg-openbuilds" style="-webkit-app-region: drag;">
|
|
<!-- <span class="icon mif-cog"></span> -->
|
|
<span class="icon"><img src="icon-transparent.png" /></span>
|
|
<span class="title" id="windowtitle">OpenBuilds CONTROL</span>
|
|
<div class="buttons" style="-webkit-app-region: no-drag">
|
|
<span title="Minimize" class="btn-custom" onclick="socket.emit('minimize')"><i class="fas fa-window-minimize"></i></span>
|
|
<span title="Maximize" class="btn-custom" onclick="socket.emit('maximize')"><i class="fas fa-window-maximize"></i></span>
|
|
<span title="Toggle Fullscreen" class="btn-custom" onclick="socket.emit('fullscreen')"><i class="fas fa-desktop"></i></span>
|
|
<span title="Close to Tray" class="btn-custom" onclick="socket.emit('minimisetotray')"><i class="fas fa-window-close"></i></span>
|
|
</div>
|
|
</div>
|
|
<div class="window-content" style="height: 100%; overflow: hidden !important;">
|
|
<nav data-role="ribbonmenu" class="mt-1">
|
|
<ul class="tabs-holder">
|
|
<li><a id="controlTab" href="#section-two" onclick="manualcontrolPanel();"><i class="fas fa-fw fa-play"></i> Machine Control</a></li>
|
|
<li id="grblSettings" style="display: none;"><a id="grblTab" href="#section-grbl" onclick="grblPanel();"><i class="fas fa-fw fa-sliders-h"></i> Grbl Settings</a></li>
|
|
<li><a href="#section-troubleshooting" id="troubleshootingTab" onclick="troubleshootingPanel();"><i class="fas fa-fw fa-file-medical-alt"></i> Troubleshooting</a></li>
|
|
</ul>
|
|
<div class="content-holder">
|
|
<div class="section" id="section-grbl">
|
|
<div class="group">
|
|
<button class="ribbon-button disabled" onclick="grblSaveSettings();" id="saveBtn" disabled>
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i id="saveBtnIcon" class="fas fa-save fg-gray" data-fa-transform="grow-8"></i>
|
|
<i id="grblSettingsBadge" class="fas fa-exclamation-circle fg-red" data-fa-transform="shrink-4 right-10 up-10" style="display: none;"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Save<br> to Firmware</span>
|
|
</button>
|
|
|
|
<button class="ribbon-button" onclick="backupGrblSettings();">
|
|
<span class="icon">
|
|
<i class="fas fa-download fg-lightOrange"></i>
|
|
</span>
|
|
<span class="caption">Backup<br>Settings</span>
|
|
</button>
|
|
|
|
|
|
|
|
<button class="ribbon-button btn-file">
|
|
<input class="btn-file" id="grblBackupFile" type="file" accept=".txt, .settings, .grbl" />
|
|
<span class="icon">
|
|
<i class="fas fa-upload"></i>
|
|
</span>
|
|
<span class="caption">Restore<br>Backup</span>
|
|
</button>
|
|
<span class="title">Grbl Settings</span>
|
|
</div>
|
|
<div class="group">
|
|
<div class="ribbon-group" style="width: 90px;">
|
|
<button class="ribbon-icon-button" onclick="sendGcode(String.fromCharCode(0x18))">
|
|
<span class="icon">
|
|
<span class="mif-loop"></span>
|
|
</span>
|
|
<span class="caption">Restart</span>
|
|
</button>
|
|
<button class="ribbon-icon-button" onclick="sendGcode('$X')">
|
|
<span class="icon">
|
|
<span class="mif-unlock"></span>
|
|
</span>
|
|
<span class="caption">Unlock</span>
|
|
</button>
|
|
<button class="ribbon-icon-button" onclick="refreshGrblSettings();">
|
|
<span class="icon">
|
|
<i class="fas fa-sync-alt"></i>
|
|
</span>
|
|
<span class="caption">Refresh</span>
|
|
</button>
|
|
|
|
</div>
|
|
<span class="title">Grbl</span>
|
|
</div>
|
|
<div class="group">
|
|
<div class="ribbon-group">
|
|
<button class="ribbon-icon-button" onclick="clearSettings();">
|
|
<span class="icon">
|
|
<i class="fas fa-sliders-h"></i>
|
|
</span>
|
|
<span class="caption">Reset Settings</span>
|
|
</button><br>
|
|
<button class="ribbon-icon-button" onclick="clearWCO();">
|
|
<span class="icon">
|
|
<i class="fas fa-layer-group"></i>
|
|
</span>
|
|
<span class="caption">Reset WCOs</span>
|
|
</button><br>
|
|
<button class="ribbon-icon-button" onclick="clearEEPROM();">
|
|
<span class="icon">
|
|
<i class="fas fa-microchip"></i>
|
|
</span>
|
|
<span class="caption">Reset EEPROM</span>
|
|
</button>
|
|
</div>
|
|
<span class="title">Firmware Reset Defaults</span>
|
|
</div>
|
|
<div class="group estop">
|
|
<button class="ribbon-button" onclick="socket.emit('clearAlarm', 2)">
|
|
<span class="icon">
|
|
<span class="fa-layers" data-toggle="tooltip" data-placement="bottom" title="Flashes red when machine has entered ALARM state, click Clear Alarm button">
|
|
<i id="navbellBtn3" class="fas fa-bell fg-red" style="display: none;"></i>
|
|
<i class="far fa-bell"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Unlock<br>Alarm</span>
|
|
</button>
|
|
<button class="ribbon-button" onclick="socket.emit('stop', { stop: false, jog: false, abort: true});">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-circle fg-red" data-fa-transform="grow-8"></i>
|
|
<i class="fa-inverse far fa-hand-paper" data-fa-transform="grow-1 left-0.5"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Abort</span>
|
|
</button>
|
|
<span class="title">E-Stop</span>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="section-two">
|
|
<div class="group">
|
|
<button class="ribbon-button" onclick="socket.emit('openbuilds', true);">
|
|
<span class="icon">
|
|
<img src="img/openbuilds.svg">
|
|
</span>
|
|
<span class="caption">OpenBuilds</span>
|
|
</button>
|
|
<span class="title">Visit</span>
|
|
</div>
|
|
<div class="group">
|
|
<div class="form-group">
|
|
<form class="form">
|
|
<select data-prepend=" <i class='fab fa-usb'></i>" class="success" data-role="select" data-filter="false" id="portUSB" disabled>
|
|
<option value="">Waiting for USB</option>
|
|
</select>
|
|
|
|
<button class="button small success float-right" onclick="selectPort()" id="connectBtn" type="button" style="margin: 5px;" disabled>Connect</button>
|
|
<button class="button small alert" style="display:none;" onclick="closePort()" id="disconnectBtn" type="button" style="margin: 5px;">Disconnect</button>
|
|
<button class="button small secondary disabled" disabled style="display:none;" id="flashBtn" type="button" style="margin: 5px;">Flashing: please wait...</button>
|
|
<button class="button small outline success float-right" onclick="scanNetwork();" id="scanBtn" type="button" style="margin: 5px;">Scan Network</button>
|
|
|
|
<div class="ribbon-group" id="grblButtons">
|
|
<hr>
|
|
<button class="ribbon-icon-button" onclick="sendGcode(String.fromCharCode(0x18))">
|
|
<span class="icon">
|
|
<span class="mif-loop"></span>
|
|
</span>
|
|
<span class="caption">Restart Grbl</span>
|
|
</button>
|
|
|
|
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
<span class="title">Machine Connection</span>
|
|
</div>
|
|
|
|
<div class="group">
|
|
<div>
|
|
<button id="openGcodeBtn" class="ribbon-button dropdown-toggle" title="Open a GCODE file">
|
|
<span class="icon">
|
|
<span class="far fa-folder-open fg-amber"></span>
|
|
</span>
|
|
<span class="caption">Open<br>G-CODE</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown" data-role="dropdown" data-duration="100">
|
|
<li class="btn-file"><a href="#"><input class="btn-file" id="file" type="file" accept=".gcode, .gc, .tap, .nc, .cnc" /><i class="far fa-folder-open fa-fw"></i> <b>Open GCODE</b> from File (*.gcode, *.gc, *.tap, *.nc, *.cnc)</a>
|
|
</li>
|
|
<li class="divider fg-gray"></li>
|
|
|
|
<li class=""><a href="#" onclick="socket.emit('opencam', true);"><img width="16" src="img/openbuilds.svg"> OpenBuilds CAM</a></li>
|
|
<li class=""><a href="#" onclick="socket.emit('fabber', true);"><img width="16" src="affiliates/fabber/fabber.svg"> Fabber</a></li>
|
|
<li class=""><a href="#" onclick="socket.emit('carveco', true);"><img width="16" src="affiliates/carveco/carveco.svg"> Carveco</a></li>
|
|
<li class=""><a href="#" onclick="socket.emit('lightburn', true);"><img width="16" src="affiliates/lightburn/lightburn.png"> Lightburn</a></li>
|
|
<li class=""><a href="#" onclick="socket.emit('vectric', true);"><img width="16" src="affiliates/vectric/vectric.svg"> Vectric</a></li>
|
|
|
|
</ul>
|
|
</div>
|
|
<span class="title">File</span>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="group" id="controlBtnGrp">
|
|
|
|
|
|
<button id="runBtn" class="ribbon-button" onclick="runJobFile()" title="Run a Job">
|
|
<span class="icon">
|
|
<i class="fas fa-play"></i>
|
|
</span>
|
|
<span class="caption">Run<br>Job</span>
|
|
</button>
|
|
|
|
<div>
|
|
<button id="runToolsBtn" class="ribbon-button dropdown-toggle" title="Run a Job with Toolchanges">
|
|
<span class="icon">
|
|
<i class="fas fa-play"></i>
|
|
</span>
|
|
<span class="caption">Run<br>Job</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown" data-role="dropdown" data-duration="100" id="toolChangesMenu">
|
|
<li class=""><a href="#" onclick="socket.emit('opencam', true);"><i class="fas fa-link fa-fw"></i> Open browser to https://cam.openbuilds.com</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<button id="resumeBtn" class="ribbon-button" onclick="socket.emit('resume', true)">
|
|
<span class="icon">
|
|
<i class="fas fa-play"></i>
|
|
</span>
|
|
<span class="caption">Resume<br>Job</span>
|
|
</button>
|
|
<button id="pauseBtn" class="ribbon-button" onclick="socket.emit('pause', true)">
|
|
<span class="icon">
|
|
<i class="fas fa-pause"></i>
|
|
</span>
|
|
<span class="caption">Pause<br>Job</span>
|
|
</button>
|
|
<button id="stopBtn" class="ribbon-button" onclick="socket.emit('stop', { stop: true, jog: false, abort: false});">
|
|
<span class="icon">
|
|
<i class="fas fa-stop"></i>
|
|
</span>
|
|
<span class="caption">Stop<br>Job</span>
|
|
</button>
|
|
|
|
<div>
|
|
<button id="toolBtn" class="ribbon-button dropdown-toggle">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-bookmark" data-fa-transform="rotate-180"></i>
|
|
<i class="fas fa-screwdriver" data-fa-transform="rotate-135 down-3"></i>
|
|
<i class="fas fa-check fg-green" data-fa-transform="down-3"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Tool<br>On</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
|
|
<li><a class="grblmode" href="#" onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))">Router On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
|
|
<li>
|
|
<a href="#" class="dropdown-toggle">Variable Speed Spindle On (M3 Sxxx)</a>
|
|
<ul class="ribbon-dropdown" data-role="dropdown">
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.05).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 5% RPM (M3 S<span class="ToolOnS5">50</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.1).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 10% RPM (M3 S<span class="ToolOnS10">100</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.25).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 25% RPM (M3 S<span class="ToolOnS25">250</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.5).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 50% RPM (M3 S<span class="ToolOnS50">500</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.75).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 75% RPM (M3 S<span class="ToolOnS75">750</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0)+'\n G1F1000')"><a href="#">Spindle On 100% RPM (M3 S<span class="ToolOnS100">1000</span>)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#" class="dropdown-toggle">Laser On (M3 Sxxx)</a>
|
|
<ul class="ribbon-dropdown" data-role="dropdown">
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.01).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 1% Power (M3 S<span class="ToolOnS1">10</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.05).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 5% Power (M3 S<span class="ToolOnS5">50</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.1).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 10% Power (M3 S<span class="ToolOnS10">100</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.25).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 25% Power (M3 S<span class="ToolOnS25">250</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.5).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 50% Power (M3 S<span class="ToolOnS50">500</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 0.75).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 75% Power (M3 S<span class="ToolOnS75">750</span>)</a></li>
|
|
<li onclick="sendGcode('M3 S'+(parseInt(grblParams.$30) * 1).toFixed(0)+'\n G1F1000')"><a href="#">Laser On 100% Power (M3 S<span class="ToolOnS100">1000</span>)</a></li>
|
|
</ul>
|
|
</li>
|
|
<!-- <li class="divider"></li> -->
|
|
<li><a class="grblmode" href="#" onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))">Plasma On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li id="menuMisting" style="display: none;"><a class="grblmode" href="#" onclick="sendGcode('M7')">Misting On (M7)</a></li>
|
|
<li><a class="grblmode" href="#" onclick="sendGcode('M8')">Coolant On (M8)</a></li>
|
|
<!-- <li><a class="grblmode" href="#" onclick="sendGcode('M9 S1000')">Coolant Off (M9)</a></li> -->
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
<div>
|
|
<button id="toolBtn2" class="ribbon-button dropdown-toggle">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-bookmark" data-fa-transform="rotate-180"></i>
|
|
<i class="fas fa-screwdriver" data-fa-transform="rotate-135 down-3"></i>
|
|
<i class="fas fa-times fg-red" data-fa-transform="down-3"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Tool<br>Off</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
|
|
<li><a class="grblmode" href="#" onclick="sendGcode('M5')">Router / Spindle / Laser / Plasma Off (M5)</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li><a class="grblmode" href="#" onclick="sendGcode('M9')">Coolant Off (M9)</a></li>
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
<button id="grblProbeMenu" class="ribbon-button" onclick="openProbeDialog();" disabled>
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-podcast fa-rotate-180"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption grblmode">Probe</span>
|
|
</button>
|
|
|
|
|
|
<button id="chkSize" class="ribbon-button">
|
|
<span class="icon">
|
|
<i class="far fa-square"></i>
|
|
</span>
|
|
<span class="caption">Check<br>Size</span>
|
|
</button>
|
|
|
|
<button id="homeBtn" class="ribbon-button">
|
|
<span class="icon">
|
|
<i class="fas fa-home"></i>
|
|
</span>
|
|
<span class="caption grblmode">Home<br>All</span>
|
|
</button>
|
|
|
|
<span class="title">Control</span>
|
|
</div>
|
|
|
|
<div class="group">
|
|
|
|
<div>
|
|
<button id="" class="ribbon-button dropdown-toggle">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-hat-wizard"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Wizards<br>& Tools</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
|
|
<li><a href="#" onclick="populateSurfaceToolForm();"><i class="fas fa-exchange-alt"></i> Surfacing / Flattening Wizard</a></li>
|
|
<li><a href="#" onclick="jogWidget();"><i class="fas fa-mobile-alt"></i> Mobile Jog Widget</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li class="disabled grblCalibrationMenu" onclick="xstepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate X-Axes Steps/mm</a></li>
|
|
<li class="disabled grblCalibrationMenu" onclick="ystepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate Y-Axes Steps/mm</a></li>
|
|
<li class="disabled grblCalibrationMenu" onclick="zstepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate Z-Axes Steps/mm</a></li>
|
|
<li class="disabled grblCalibrationMenu servo-active" onclick="servocalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate Servo Pen Up/Down</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li onclick="keyboardShortcutsEditor();"><a href="#"><i class="far fa-edit fa-fw"></i> Customize Keyboard Shortcuts</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li onclick="openFlashingTool();"><a href="#"><i class="fas fa-microchip fa-fw"></i> Firmware Flashing Tool</a></li>
|
|
<li onclick="populateFlashDrivePrepForm();"><a href="#"><i class="fas fa-upload fa-fw"></i> Prepare USB Flashdrive for Interface</a></li>
|
|
<li class="divider fg-gray"></li>
|
|
<li onclick="showJobLog();"><a href="#"><i class="fas fa-history fa-fw"></i> Job Log</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<span class="title">Wizards</span>
|
|
</div>
|
|
|
|
<div class="group">
|
|
|
|
<div id="ddThemeButton">
|
|
<button id="btnTheme" class="ribbon-button" onclick="Theme.toggle();">
|
|
<span class="icon" id="currentThemeIcon">
|
|
<i class="fas fa-paint-brush"></i>
|
|
</span>
|
|
<span class="caption" id="currentThemeName">Dark<br>Mode</span>
|
|
<span class="h6 badge bg-green fg-white"> <i class="fas fa-brush fa-spin"></i> New!</span>
|
|
</button>
|
|
</div>
|
|
<span class="title">Theme</span>
|
|
</div>
|
|
|
|
<div class="group estop" style="width: 100px;">
|
|
<button class="ribbon-button" onclick="socket.emit('clearAlarm', 2)">
|
|
<span class="icon">
|
|
<span class="fa-layers" data-toggle="tooltip" data-placement="bottom" title="Flashes red when machine has entered ALARM state, click Clear Alarm button">
|
|
<i id="navbellBtn2" class="fas fa-bell fg-red" style="display: none;"></i>
|
|
<i class="far fa-bell"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Unlock<br>Alarm</span>
|
|
</button>
|
|
<button class="ribbon-button" onclick="socket.emit('stop', { stop: false, jog: false, abort: true});">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-circle fg-red" data-fa-transform="grow-8"></i>
|
|
<i class="fa-inverse far fa-hand-paper" data-fa-transform="grow-1 left-0.5"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Abort</span>
|
|
</button>
|
|
<span class="title">E-Stop</span>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="section" id="section-troubleshooting">
|
|
<div class="group">
|
|
<div>
|
|
<button id="diagbtn" class="ribbon-button dropdown-toggle">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-stethoscope"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Application<br>Diagnostics</span>
|
|
</button>
|
|
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
|
|
<li onclick="disable3Dviewer = !disable3Dviewer; saveDiagnostics(); location.reload();" id="disable3DviewerTick"><a href="#"><i class="mif-3d-rotation fa-fw"></i> Disable 3D Viewer System (For slower computers)</a></li>
|
|
<li class="divider"></li>
|
|
<li onclick="disable3Dcontrols = !disable3Dcontrols; saveDiagnostics(); location.reload();" id="disable3DcontrolsTick"><a href="#"><i class="mif-3d-rotation fa-fw"></i> Disable 3D Viewer Interactions</a></li>
|
|
<li onclick="disable3Dskybox = !disable3Dskybox; saveDiagnostics(); location.reload();" id="disable3DskyboxTick"><a href="#"><i class="mif-3d-rotation fa-fw"></i> Disable 3D Viewer Skybox/Fog</a></li>
|
|
<li onclick="disable3Drealtimepos = !disable3Drealtimepos; saveDiagnostics(); location.reload();" id="disable3DrealtimeposTick"><a href="#"><i class="mif-3d-rotation fa-fw"></i> Disable 3D Viewer Realtime Job Position
|
|
Indicator</a></li>
|
|
<li onclick="disable3Dgcodepreview = !disable3Dgcodepreview; saveDiagnostics(); location.reload();" id="disable3DgcodepreviewTick"><a href="#"><i class="mif-3d-rotation fa-fw"></i> Disable 3D Viewer GCODE Preview</a></li>
|
|
<li class="divider"></li>
|
|
<li onclick="disableSerialLog =! disableSerialLog; saveDiagnostics(); location.reload();" id="disableSerialLogTick"><a href="#"><i class="fas fa-fw fa-terminal"></i> Disable Serial Log</a></li>
|
|
<li onclick="disableDROupdates = !disableDROupdates; saveDiagnostics(); location.reload();" id="disableDROupdatesTick"><a href="#"><i class="fas fa-fw fa-list-ol"></i> Disable DRO/Status Updates</a></li>
|
|
</div>
|
|
<span class="title">Settings</span>
|
|
</div>
|
|
|
|
<div class="group">
|
|
<button class="ribbon-button" onclick="socket.emit('opendocs', true);">
|
|
<span class="icon">
|
|
<i class="fas fa-book" data-fa-transform=""></i>
|
|
</span>
|
|
<span class="caption">OpenBuilds<br>Documentation</span>
|
|
</button>
|
|
<button class="ribbon-button" onclick="socket.emit('openforum', true);">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="far fa-comment-alt" data-fa-transform=""></i>
|
|
<i class="fas fa-question" data-fa-transform="shrink-8 up-1"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">OpenBuilds<br>Forum</span>
|
|
</button>
|
|
<span class="title">Support</span>
|
|
</div>
|
|
|
|
<div class="group" style="width: 100px;">
|
|
<button class="ribbon-button" onclick="socket.emit('clearAlarm', 2)">
|
|
<span class="icon">
|
|
<span class="fa-layers" data-toggle="tooltip" data-placement="bottom" title="Flashes red when machine has entered ALARM state, click Clear Alarm button">
|
|
<i id="navbellBtn1" class="fas fa-bell fg-red" style="display: none;"></i>
|
|
<i class="far fa-bell"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Unlock<br>Alarm</span>
|
|
</button>
|
|
<button class="ribbon-button" onclick="socket.emit('stop', { stop: false, jog: false, abort: true})">
|
|
<span class="icon">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-circle fg-red" data-fa-transform="grow-8"></i>
|
|
<i class="fa-inverse far fa-hand-paper" data-fa-transform="grow-1 left-0.5"></i>
|
|
</span>
|
|
</span>
|
|
<span class="caption">Abort</span>
|
|
</button>
|
|
<span class="title">E-Stop</span>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</nav>
|
|
|
|
<div id="manualControlPanel">
|
|
<center>
|
|
<div id="jogcontrols" class="mt-1">
|
|
<div class="row flex-justify-center flex-align-start" style="width: 100%; height: 100%;">
|
|
<div class="cell border-right bd-gray ">
|
|
|
|
<table class="drotable mt-1">
|
|
<tr>
|
|
<td>
|
|
|
|
|
|
<div class="pos-relative">
|
|
<button class="button mini light jogbtn" style="width: 60px; height: 24px;" id="wcsBtn">
|
|
<span title="Show/change current Work Coordinate System" class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G54
|
|
</button>
|
|
<ul class="ribbon-dropdown drop-shadow" data-role="dropdown">
|
|
<li class="checked wcsItem wcsItemG54"><a href="#" onclick="sendGcode('G54')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G54</a></li>
|
|
<li class="wcsItem wcsItemG55"><a href="#" onclick="sendGcode('G55')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G55</a></li>
|
|
<li class="wcsItem wcsItemG56"><a href="#" onclick="sendGcode('G56')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G56</a></li>
|
|
<li class="wcsItem wcsItemG57"><a href="#" onclick="sendGcode('G57')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G57</a></li>
|
|
<li class="wcsItem wcsItemG58"><a href="#" onclick="sendGcode('G58')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G58</a></li>
|
|
<li class="wcsItem wcsItemG59"><a href="#" onclick="sendGcode('G59')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G59</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
</td>
|
|
<td colspan="3">
|
|
<nav data-role="ribbonmenu" class="mt-1">
|
|
<ul class="tabs-holder">
|
|
<li onclick="mmMode();"><a id="mmMode" href="#tab-mm">mm-mode</a></li>
|
|
<li onclick="inMode();"><a id="inMode" href="#tab-inch">inch-mode</a></li>
|
|
</ul>
|
|
</nav>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<button class="button light jogbtn" onclick="sendGcode( 'G10 P0 L20 X0')" style="width: 60px;" data-role="ripple" data-ripple-color="#e21b1b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-crosshairs fg-openbuilds" data-fa-transform="shrink-2 down-8 left-12"></i>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="down-9 right-8" style="font-weight:900; font-family: Arial; font-size: 12px;">X</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">setzero</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<div class="dro" id="xPosDro">
|
|
<div class="float-left fg-red" data-fa-transform="right-15">
|
|
<span class="fa-layers fa-fw">
|
|
<span class="fa-layers-text fg-red" data-fa-transform="right-3">X</span>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="left-18 rotate-270" style="font-family: Arial; font-size: 8px;">WORK</span>
|
|
<!-- <span class="fa-layers-text fg-red" data-fa-transform="left-20 rotate--90" style="font-family: Arial; font-size: 11px;">work</span> -->
|
|
</span>
|
|
</div>
|
|
<div class="float-right fg-red" id="xPos" data-editable>0.000</div>
|
|
<input id="xPosInput" class="m-0 p-0 droInput float-right fg-red" data-editable="true" title="Enter to Go, Shift+Enter to Set" />
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 42px;"><i class="fas fa-caret-down fg-openbuilds"></i></button>
|
|
<ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
|
|
<li><a href="#" onclick="sendGcode( 'G0 X0')"><span class="fas fa-chart-line fg-red icon"></span>Goto X0 (Work Coord) (G0 X0)</a></li>
|
|
<li id="gotoXzeroMpos"><a href="#"><span class="fas fa-chart-line fg-red icon"></span>Goto X<span class="PullOffMPos">0</span> (Machine Coord) (G53 G0 X0)</a></li>
|
|
<li class="divider"></li>
|
|
<li class="needsXYZProbe"><a href="#" onclick="openProbeXDialog()"><span class="fas fa-podcast fa-rotate-180 fg-red icon"></span>Probe X-Zero Wizard</a></li>
|
|
<li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-red icon"></span>Probe XYZ-Zero Wizard</a></li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<button class="button light jogbtn" onclick="sendGcode( 'G10 P0 L20 Y0')" style="width: 60px;" data-role="ripple" data-ripple-color="#5de21b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-crosshairs fg-openbuilds" data-fa-transform="shrink-2 down-8 left-12"></i>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="down-9 right-8" style="font-weight:900; font-family: Arial; font-size: 12px;">Y</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">setzero</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<div class="dro" id="yPosDro">
|
|
<div class="float-left fg-green">
|
|
<span class="fa-layers fa-fw">
|
|
<span class="fa-layers-text fg-green" data-fa-transform="right-3">Y</span>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="left-18 rotate-270" style="font-family: Arial; font-size: 8px;">WORK</span>
|
|
</span>
|
|
</div>
|
|
<div class="float-right fg-green" id="yPos" data-editable>0.000</div>
|
|
<input id="yPosInput" class="m-0 p-0 droInput float-right fg-green" data-editable="true" title="Enter to Go, Shift+Enter to Set" />
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 42px;"><i class="fas fa-caret-down fg-openbuilds"></i></button>
|
|
<ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
|
|
<li><a href="#" onclick="sendGcode( 'G0 Y0')"><span class="fas fa-chart-line fg-green icon"></span>Goto Y0 (Work Coord) (G0 Y0)</a></li>
|
|
<li id="gotoYzeroMpos"><a href="#"><span class="fas fa-chart-line fg-green icon"></span>Goto Y<span class="PullOffMPos">0</span> (Machine Coord) (G53 G0 Y0)</a></li>
|
|
<li class="divider"></li>
|
|
<li class="needsXYZProbe"><a href="#" onclick="openProbeYDialog()"><span class="fas fa-podcast fa-rotate-180 fg-green icon"></span>Probe Y-Zero Wizard</a></li>
|
|
<li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-green icon"></span>Probe XYZ-Zero Wizard</a></li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<button class="button light jogbtn" onclick="sendGcode( 'G10 P0 L20 Z0')" style="width: 60px;" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-crosshairs fg-openbuilds" data-fa-transform="shrink-2 down-8 left-12"></i>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="down-9 right-8" style="font-weight:900; font-family: Arial; font-size: 12px;">Z</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">setzero</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<div class="dro" id="zPosDro">
|
|
<div class="float-left fg-blue">
|
|
<span class="fa-layers fa-fw">
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="right-3">Z</span>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="left-18 rotate-270" style="font-family: Arial; font-size: 8px;">WORK</span>
|
|
</span>
|
|
</div>
|
|
<div class="float-right fg-blue" id="zPos" data-editable>0.000</div>
|
|
<input id="zPosInput" class="m-0 p-0 droInput float-right fg-blue" data-editable="true" title="Enter to Go, Shift+Enter to Set" />
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 42px;"><i class="fas fa-caret-down fg-openbuilds"></i></button>
|
|
<ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
|
|
<li><a href="#" onclick="sendGcode( 'G0 Z0')"><span class="fas fa-chart-line fg-blue icon"></span>Goto Z0 (Work Coord) (G0 Z0)</a></li>
|
|
<li id="gotoZzeroMpos"><a href="#"><span class="fas fa-chart-line fg-blue icon"></span>Goto Z<span class="PullOffMPos">0</span> (Machine Coord) (G53 G0 Z0)</a></li>
|
|
<li class="divider"></li>
|
|
<!-- <li><a href="#" onclick="z0probe()()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard</a></li> -->
|
|
<li><a href="#" onclick="openProbeZDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard</a></li>
|
|
<li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe XYZ-Zero Wizard</a></li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr class="4thaxis-active" style="display: none;">
|
|
<td>
|
|
<button class="button light jogbtn" onclick="sendGcode( 'G10 P0 L20 A0')" style="width: 60px;" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-crosshairs fg-openbuilds" data-fa-transform="shrink-2 down-8 left-12"></i>
|
|
<span class="fa-layers-text fg-orange" data-fa-transform="down-9 right-8" style="font-weight:900; font-family: Arial; font-size: 12px;">A</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">setzero</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<div class="dro" id="aPosDro">
|
|
<div class="float-left fg-orange">
|
|
<span class="fa-layers fa-fw">
|
|
<span class="fa-layers-text fg-orange" data-fa-transform="right-3">A</span>
|
|
<span class="fa-layers-text fg-orange" data-fa-transform="left-18 rotate-270" style="font-family: Arial; font-size: 8px;">WORK</span>
|
|
</span>
|
|
</div>
|
|
<div class="float-right fg-orange" id="aPos" data-editable>0.000</div>
|
|
<input id="aPosInput" class="m-0 p-0 droInput float-right fg-orange" data-editable="true" title="Enter to Go, Shift+Enter to Set" />
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 42px;"><i class="fas fa-caret-down fg-openbuilds"></i></button>
|
|
<ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
|
|
<li><a href="#" onclick="sendGcode( 'G0 A0')"><span class="fas fa-chart-line fg-orange icon"></span>Goto A0 (Work Coord) (G0 Z0)</a></li>
|
|
<li id="gotoAzeroMpos"><a href="#"><span class="fas fa-chart-line fg-orange icon"></span>Goto A<span class="PullOffMPos">0</span> (Machine Coord) (G53 G0 A0)</a></li>
|
|
<!-- <li class="divider"></li> -->
|
|
<!-- <li><a href="#" onclick="z0probe()()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard</a></li> -->
|
|
<!-- <li><a href="#" onclick="openProbeZDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard</a></li> -->
|
|
<!-- <li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe XYZ-Zero Wizard</a></li> -->
|
|
</div>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<button class="button light jogbtn" onclick="sendGcode( 'G10 P0 L20 X0 Y0 Z0')" style="width: 60px;" data-role="ripple">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-crosshairs fg-openbuilds" data-fa-transform="shrink-2 down-8 left-18"></i>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="down-9 right-2" style="font-weight:900; font-family: Arial; font-size: 12px;">X</span>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="down-9 right-12" style="font-weight:900; font-family: Arial; font-size: 12px;">Y</span>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="down-9 right-22" style="font-weight:900; font-family: Arial; font-size: 12px;">Z</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">setzero</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 161px;" data-role="ripple">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-chart-line fg-openbuilds" data-fa-transform="shrink-2 down-8 left-12"></i>
|
|
<i class="fas fa-caret-down fg-openbuilds" data-fa-transform="shrink-2 right-70"></i>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="down-9 right-8" style="font-weight:900; font-family: Arial; font-size: 12px;">X</span>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="down-9 right-19" style="font-weight:900; font-family: Arial; font-size: 12px;">Y</span>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="down-9 right-29" style="font-weight:900; font-family: Arial; font-size: 12px;">Z</span>
|
|
<span class="fa-layers-text fg-openbuilds" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">gotozero</span>
|
|
</span>
|
|
</button>
|
|
<ul class="d-menu context drop-shadow" data-role="dropdown">
|
|
<li id="gotozeroWPos">
|
|
<a href="#"><span class="fas fa-chart-line fg-openbuilds icon"></span>GOTOZERO (Work Coord) (G0 Z5, G0 X0 Y0, G0 Z0) (Retract Z to Work Coord Z5)
|
|
</a>
|
|
</li>
|
|
<li id="gotozeroZmPosXYwPos">
|
|
<a href="#"><span class="fas fa-chart-line fg-openbuilds icon"></span>GOTOZERO (Z Machine Coord, XY Work Coord) (G53 G0 Z<span class="PullOffMPos">0</span>, G0 X0 Y0, G0 Z0) (Retract Z to
|
|
Machine Coord)
|
|
</a>
|
|
</li>
|
|
<li id="gotozeroMPos">
|
|
<a href="#"><span class="fas fa-chart-line fg-openbuilds icon"></span>GOTOZERO (Machine Coord) (G53 G0 Z<span class="PullOffMPos">0</span>, G53 G0 X<span class="PullOffMPos">0</span> Y<span class="PullOffMPos">0</span>)
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn" style="width: 42px;"></i>
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-layer-group fg-openbuilds" data-fa-transform="shrink-2 up-3"></i>
|
|
<i class="fas fa-caret-down fg-openbuilds" data-fa-transform="down-8"></i>
|
|
<!-- <span class="fa-layers-text fg-grayBlue" data-fa-transform="up-8 " style="font-weight:900; font-family: Arial; font-size: 12px;">gotozero</span> -->
|
|
</span>
|
|
</button>
|
|
<ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
|
|
<li><a href="#" onclick="sendGcode('G28')"><span class="fas fa-layer-group fg-grayBlue icon"></span>Go to Pre-Defined Position (G28)</a></li>
|
|
<li><a href="#" onclick="sendGcode('G30')"><span class="fas fa-layer-group fg-grayBlue icon"></span>Go to Pre-Defined Position (G30)</a></li>
|
|
<li class="divider fg-gray bg-gray bd-gray"></li>
|
|
<li><a href="#" onclick="sendGcode('G28.1')"><span class="fas fa-tasks fg-grayBlue icon"></span>Set Pre-Defined Position (G28.1)</a></li>
|
|
<li><a href="#" onclick="sendGcode('G30.1')"><span class="fas fa-tasks fg-grayBlue icon"></span>Set Pre-Defined Position (G30.1)</a></li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="cell">
|
|
|
|
<table class="jogtable">
|
|
<tr>
|
|
|
|
<td class="4thaxis-active" style="display: none;">
|
|
<button class="button light square xlarge m-0 jogbtn aP jogcursorbtn" id="aP" data-role="ripple" data-ripple-color="#fa6800">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-redo fg-orange" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-orange" data-fa-transform="shrink-5 up-8" style="font-weight:600">A+</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
<td>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
<button class="button light square xlarge m-0 jogbtn yP jogcursorbtn" id="yP" data-role="ripple" data-ripple-color="#5de21b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-up fg-green" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="shrink-5 up-8" style="font-weight:600">Y+</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
<td>
|
|
</td>
|
|
|
|
|
|
<td>
|
|
<button class="button light square xlarge m-0 ml-2 jogbtn zP jogcursorbtn" id="zP" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-up fg-blue" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="shrink-5 up-8" style="font-weight:600">Z+</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td class="servo-active" style="display: none;">
|
|
<button class="button light square xlarge m-0 jogbtn pP jogcursorbtn" id="pP" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-pen fg-darkBlue" data-fa-transform="shrink-2 down-8.5 left-6"></i>
|
|
<i class="fas fa-arrow-up fg-red" data-fa-transform="shrink-0.5 down-8.5 right-6"></i>
|
|
<span class="fa-layers-text fg-darkBlue" data-fa-transform="shrink-10 up-12" style="font-weight:600">PEN</span>
|
|
<span class="fa-layers-text fg-darkBlue" data-fa-transform="shrink-10 up-6" style="font-weight:600">UP</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td class="4thaxis-active" style="display: none;">
|
|
<button class="button light square xlarge m-0 jogbtn aM jogcursorbtn" id="aM" data-role="ripple" data-ripple-color="#fa6800">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-undo fg-orange" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-orange" data-fa-transform="shrink-5 up-8" style="font-weight:600">A-</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
<td>
|
|
<button class="button light square xlarge m-0 jogbtn xM jogcursorbtn" id="xM" data-role="ripple" data-ripple-color="#e21b1b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-left fg-red" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="shrink-5 up-8" style="font-weight:600">X-</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
<td>
|
|
<button class="button light square xlarge m-0 jogbtn yM jogcursorbtn" id="yM" data-role="ripple" data-ripple-color="#5de21b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-down fg-green" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-green" data-fa-transform="shrink-5 up-8" style="font-weight:600">Y-</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
<td>
|
|
<button class="button light square xlarge m-0 jogbtn xP jogcursorbtn" id="xP" data-role="ripple" data-ripple-color="#e21b1b">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-right fg-red" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-red" data-fa-transform="shrink-5 up-8" style="font-weight:600">X+</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<button class="button light square xlarge m-0 ml-2 jogbtn zM jogcursorbtn" id="zM" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-arrow-down fg-blue" data-fa-transform="shrink-2 down-8.5"></i>
|
|
<span class="fa-layers-text fg-blue" data-fa-transform="shrink-5 up-8" style="font-weight:600">Z-</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td class="servo-active" style="display: none;">
|
|
<button class="button light square xlarge m-0 jogbtn pM jogcursorbtn" id="pM" data-role="ripple" data-ripple-color="#1ba1e2">
|
|
<span class="fa-layers fa-fw">
|
|
<i class="fas fa-pen fg-darkBlue" data-fa-transform="shrink-2 down-8.5 left-6"></i>
|
|
<i class="fas fa-arrow-down fg-green" data-fa-transform="shrink-0.5 down-8.5 right-6"></i>
|
|
<span class="fa-layers-text fg-darkBlue" data-fa-transform="shrink-10 up-12" style="font-weight:600">PEN</span>
|
|
<span class="fa-layers-text fg-darkBlue" data-fa-transform="shrink-10 up-6" style="font-weight:600">DOWN</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td colspan='5'>
|
|
<table style="width: 100%;">
|
|
<tr>
|
|
<td><span class="text-small">Incremental Jog</span>
|
|
</td>
|
|
<td class="pb-1">
|
|
<label class="toggle">
|
|
<input type="checkbox" id="jogTypeContinuous" />
|
|
<div>app-notification</div>
|
|
</label>
|
|
</td>
|
|
<td><span class="text-small">Continuous Jog</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="4thaxis-active" style="display: none;">
|
|
|
|
<div class="pos-relative">
|
|
<button class="button light jogbtn metricbtn distbtn" id="distAAxis" style="width: 100%; height: 25px; line-height: 25px;">
|
|
<span class=" fa-layers fa-fw">
|
|
<span id="distAAxislabel" class="fa-layers-text fg-openbuilds jogdistA" data-fa-transform="" style="font-weight:900; font-family: Arial; font-size: 12px;">A: 10°</span>
|
|
</span>
|
|
</button>
|
|
<ul class="d-menu context drop-shadow drop-bottom" data-role="dropdown">
|
|
<li disabled><a href="#">Set A-Axis Increment</a></li>
|
|
<li><a href="#" onclick="setADist('0.1')">0.1°</a></li>
|
|
<li><a href="#" onclick="setADist('1')">1°</a></li>
|
|
<li><a href="#" onclick="setADist('10')">10°</a></li>
|
|
<li><a href="#" onclick="setADist('100')">100°</a></li>
|
|
<li class="divider fg-gray bg-gray bd-gray"></li>
|
|
<li><a href="#" onclick="setADist('30')">30°</a></li>
|
|
<li><a href="#" onclick="setADist('45')">45°</a></li>
|
|
<li><a href="#" onclick="setADist('60')">60°</a></li>
|
|
<li><a href="#" onclick="setADist('90')">90°</a></li>
|
|
<li><a href="#" onclick="setADist('180')">180°</a></li>
|
|
<li><a href="#" onclick="setADist('270')">270°</a></li>
|
|
<li><a href="#" onclick="setADist('360')">360°</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
</td>
|
|
<td>
|
|
<button class="button light jogbtn metricbtn distbtn" id="dist01" style="width: 100%; height: 25px; line-height: 25px;">
|
|
<span class=" fa-layers fa-fw">
|
|
<span id="dist01label" class="fa-layers-text fg-gray jogdistXYZ" data-fa-transform="" style="font-weight:900; font-family: Arial; font-size: 12px;">0.1mm</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<button class="button light jogbtn metricbtn distbtn" id="dist1" style="width: 100%; height: 25px; line-height: 25px;">
|
|
<span class=" fa-layers fa-fw">
|
|
<span id="dist1label" class="fa-layers-text fg-gray jogdistXYZ" data-fa-transform="" style="font-weight:900; font-family: Arial; font-size: 12px;">1mm</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<button class="button light jogbtn distbtn metricbtn bd-openbuilds" id="dist10" style="width: 100%; height: 25px; line-height: 25px;">
|
|
<span class=" fa-layers fa-fw">
|
|
<span id="dist10label" class="fa-layers-text fg-openbuilds jogdistXYZ" data-fa-transform="" style="font-weight:900; font-family: Arial; font-size: 12px;">10mm</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<button class="button light jogbtn distbtn metricbtn" id="dist100" style="width: 100%; height: 25px; line-height: 25px;">
|
|
<span class=" fa-layers fa-fw">
|
|
<span id="dist100label" class="fa-layers-text fg-gray jogdistXYZ" data-fa-transform="" style="font-weight:900; font-family: Arial; font-size: 12px;">100mm</span>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="cell border-left bd-gray" id="jrocell">
|
|
<button class="button light mini mb-1" onclick="jogOverride(100);">reset</button>
|
|
<input id="jro" data-on-stop="jogOverride(arguments[0])" data-role="slider" data-accuracy="1" data-vertical="true" data-size="180" data-min="1" data-max="100" data-value="100" data-hint="true" data-hint-always="true"
|
|
data-hint-position="bottom" data-hint-mask="Jog: $1%" data-cls-hint="bg-light
|
|
fg-dark shadow-1" data-cls-complete="bg-openbuilds">
|
|
<span class="tally text-small bg-openbuilds fg-white" id="realJog"></span>
|
|
</div>
|
|
|
|
<div class="cell border-left bd-gray" id="frocell">
|
|
<button class="button light mini mb-1" onclick="feedOverride(100);">reset</button>
|
|
<input id="fro" data-on-stop="feedOverride(arguments[0])" data-role="slider" data-accuracy="5" data-vertical="true" data-size="180" data-accuracy="1" data-min="10" data-max="200" data-value="100" data-hint="true"
|
|
data-hint-always="true" data-hint-position="bottom" data-hint-mask="Feed: $1%" data-cls-hint="bg-light
|
|
fg-dark shadow-1" data-cls-complete="bg-openbuilds">
|
|
<span class="tally text-small bg-openbuilds fg-white" id="realFeed"></span>
|
|
</div>
|
|
<div class="cell border-left bd-gray" id="trocell">
|
|
<button class="button light mini mb-1" onclick="spindleOverride(100);">reset</button>
|
|
<input id="tro" data-on-stop="spindleOverride(arguments[0])" data-role="slider" data-accuracy="5" data-vertical="true" data-size="180" data-accuracy="1" data-min="10" data-max="200" data-value="100" data-hint="true"
|
|
data-hint-always="true" data-hint-position="bottom" data-hint-mask="Tool: $1%" data-cls-hint="bg-light
|
|
fg-dark shadow-1" data-cls-complete="bg-openbuilds">
|
|
<span class="tally text-small bg-openbuilds fg-white" id="realSpeed"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="controlLogs" class="mt-0">
|
|
|
|
<nav data-role="ribbonmenu">
|
|
<ul class="tabs-holder">
|
|
<li><a href="#tab-three" id="gcodeviewertab" onclick="fixRenderSize();"><i class="mif-3d-rotation fa-fw fg-darkCobalt" id="3dviewicon"></i><span id="3dviewlabel"> 3D View</span></a></li>
|
|
<li><a href="#tab-one" id="consoletab"><i class="fas fa-fw fa-terminal fg-darkGreen"></i> Log / Serial Console</a></li>
|
|
<li><a href="#tab-four" id="macrostab"><i class="fas fa-th fa-fw fg-darkOrange"></i> Macros</a></li>
|
|
<li><a href="#tab-two" id="gcodeeditortab"><i class="far fa-fw fa-edit fg-darkLime"></i> GCODE Editor</a></li>
|
|
</ul>
|
|
|
|
<div class="content-holder">
|
|
<div class="section" id="tab-one">
|
|
<div id="console"></div>
|
|
<div class="fixed-bottom m-3 mb-9">
|
|
<form class="inline-form" id="commandform" autocomplete="off">
|
|
<input title="Tip: Press F6 anywhere on the CONTROL window to quickly jump to this input" data-prepend=" <i class='fas fa-terminal'></i>" data-role="input" data-clear-button="false" data-role="input" id="command"
|
|
type="text" autocomplete="on" class=" dark needs-connection" style="width: calc(100vw - 170px);" data-editable="true" placeholder="Enter GCODE/Serial commands here to send it to your machine" />
|
|
<button id="sendCommand" class="button dark needs-connection" type="button" title="Execute command">
|
|
<i class="fa fa-play" style="margin-right: 10px;"></i> Send
|
|
</button>
|
|
<button class="button dark emptylog" type="button" onclick="$('#console').empty();" title="Clear the Log screen">
|
|
<i class="fa fa-trash"></i>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="tab-two">
|
|
<div id="editor"></div>
|
|
|
|
<div class="fixed-bottom m-3 mb-9">
|
|
<!-- <form class="inline-form"> -->
|
|
<button title="Update the 3D View with the edited GCODE" class="button success" onclick="parseGcodeInWebWorker(editor.getValue())"><i class="mif-3d-rotation fa-fw"></i> Update 3D View</button>
|
|
<button title="Save GCODE to file" class="button primary" onclick="saveGcode();"><i class="fa fa-save icon"></i></button>
|
|
<button title="Find and Replace" class="button dark" onclick="editor.execCommand('replace')"><i class="fas fa-search"></i> Find/Replace</button>
|
|
<button title="Select All" class="button dark" onclick="editor.execCommand('selectall')"><i class="far fa-check-square"></i> Select All</button>
|
|
<button title="Undo" class="button dark" onclick="editor.execCommand('undo')"><i class="fas fa-undo"></i> Undo</button>
|
|
<button title="Redo" class="button dark" onclick="editor.execCommand('redo')"><i class="fas fa-redo"></i> Redo</button>
|
|
<button title="Go to End" class="button dark" onclick="editor.execCommand('gotoend')"><i class="fas fa-chevron-down"></i></button>
|
|
<button title="Go to Start" class="button dark" onclick="editor.execCommand('gotostart')"><i class="fas fa-chevron-up"></i></button>
|
|
<button title="Clear Editor" class="button dark" onclick="editor.execCommand('selectall'); editor.execCommand('del'); parseGcodeInWebWorker(editor.getValue()); loadedFileName = ''; setWindowTitle()"><i class="fas fa-eraser"></i>
|
|
Clear</button>
|
|
<!-- </form> -->
|
|
</div>
|
|
</div>
|
|
<div class="section" id="tab-three">
|
|
<div id="renderArea"></div>
|
|
<div style="position: absolute; top: 10px; right:10px; z-index: 1; max-width: 100px; max-width: 100px;" id="overlayimg">
|
|
<!-- <img src="img/mch/acro55.png" style="max-width:100%; max-height:100%;">
|
|
<span style="position: absolute; top: 3px; right:3px; z-index: 1;" class="fas fa-cogs"></span> -->
|
|
</div>
|
|
<div class="fixed-bottom m-3 mb-9">
|
|
<button class="button dark" onclick="simSpeed();"><span class="icon"><span class="fas fa-tachometer-alt"></span></span><span class="caption"><span id="simspeedval">1</span>x</span>
|
|
</button>
|
|
<button id="runSimBtn" title="Run simulation" class="button dark drop-shadow" onclick="sim(0)"><i class="fas fa-fighter-jet"></i> Simulate</button>
|
|
<button id="stopSimBtn" style="display: none;" title="Stop Sim" class="button dark drop-shadow" onclick="simstop()"><i class="fas fa-stop"></i> Stop Sim</button>
|
|
<button id="resetViewBtn" title="Resets camera angle and zoom" class="button dark drop-shadow" onclick="resetView(object)"><i class="fas fa-stop"></i> Reset View</button>
|
|
</div>
|
|
<div id="conetext" style="position:absolute;top:0px;left:0px; padding: 0px; display:none; z-index:100;"></div>
|
|
|
|
</div>
|
|
<div class="section" id="tab-four">
|
|
<div id="macros"></div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</div>
|
|
<!-- End controlLogs -->
|
|
</center>
|
|
</div>
|
|
<div id="grblPanel" style="display: none;">
|
|
<div id="grblconfig"></div>
|
|
</div>
|
|
<div id="updatePanel" style="display: none;">
|
|
<div id="updateconsole">Click "Download Updates" above</div>
|
|
</div>
|
|
<div id="troubleshootingPanel" style="display: none;">
|
|
<div class="grid p-0 m-0">
|
|
<div class="row p-0 m-0">
|
|
<div class="cell p-0 m-0">
|
|
<div class="card">
|
|
<div class="card-header p-1 m-0">
|
|
<i class="fas fa-fw fa-bolt"></i>Inputs / Endstops
|
|
</div>
|
|
<div class="card-content">
|
|
<table class="table striped compact">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 40%;">PIN</th>
|
|
<th style="width: 60%;">Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="pt-1 mt-1 mb-1 pb-0 pt-0" colspan="2">Manually activate inputs you want to test</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">X-Limit</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert pinstatus xpin">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Y-Limit</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert pinstatus ypin">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Z-Limit</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert pinstatus zpin">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Probe</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert pinstatus prbpin">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Door Sensor</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert pinstatus doorpin">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Buttons</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">
|
|
<span class="tally alert pinstatus startpin">NOCOMM</span>
|
|
<span class="tally alert pinstatus holdpin">NOCOMM</span>
|
|
<span class="tally alert pinstatus resetpin">NOCOMM</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="powerSettingsCard">
|
|
<div class="card-header p-1 m-0">
|
|
<i class="fas fa-fw fa-power-off"></i>Power Settings
|
|
</div>
|
|
<div class="card-content">
|
|
<table class="table striped compact">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 70%;">Setting</th>
|
|
<th style="width: 30%;">Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="pt-1 mt-1 mb-1 pb-0 pt-0" colspan="2">We recommend USB Selective Suspend be Disabled to avoid USB issues</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">USB Selective Suspend on AC Power</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert powerstatus" id="selectivesuspendAC">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">USB Selective Suspend on Battery Power</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert powerstatus" id="selectivesuspendDC">NOCOMM</span></td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
<div class="cell p-0 m-0">
|
|
|
|
<!-- <div class="card">
|
|
<div class="card-header p-1 m-0">
|
|
<i class="fas fa-fw fa-microchip"></i>Firmware Compiled with Parameters
|
|
</div>
|
|
<div class="card-content" style="height: calc(100vh - 680px); min-height: 120px; overflow-x: auto;">
|
|
<table class="table striped compact">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 80%;">Value</th>
|
|
<th style="width: 20%;">Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Variable Spindle</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enVariableSpindle">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Laser Mode Enabled ($32 Setting)</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enLaser">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Grbl-Servo Installed</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enServo">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Line Numbers Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enLineNumbers">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Mist Cooling Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enMisting">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">CoreXY Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enCoreXY">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Parking Motion Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enParking">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Homing Force Origin Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enHomingOrigin">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Single Axis Homing</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enSingleAxisHome">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Two Limit Switches on Axis Enabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enTwoLimits">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Allow Feed Override in Probe</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enFeedOVProbe">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Restore EEPROM $-settings Disabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enEepromSettingsDisable">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Restore EEPROM parameter Disabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enEepromParamsDisable">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Build Info Write Disabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enBuildInfoDisabled">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Force Sync on EEPROM write Disabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enForceSyncEeprom">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Force Sync on WCO Disabled</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enForceSyncWco">OFF</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Homing Init Lock</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally alert" id="enHomingInitLock">OFF</span></td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div> -->
|
|
|
|
<div class="card">
|
|
<div class="card-header p-1 m-0">
|
|
<i class="fas fa-fw fa-tty"></i>Communications
|
|
</div>
|
|
<div class="card-content" style="height: calc(100vh - 630px); min-height: 90px; overflow-x: auto;">
|
|
<table class="table striped compact">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 40%;">Value</th>
|
|
<th style="width: 60%;">Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Installed Version</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="driverver">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Backend Queue Blocked</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="commblocked">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Connection Status</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="commstatus">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Connected To</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="activeportstatus">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Serial Queue</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="drvqueue">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Websocket Status</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="websocketstatus">NOCOMM</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0">Firmware</td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span class="tally bg-openbuilds fg-white" id="firmwareversionstatus">NOCOMM</span></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header p-1 m-0">
|
|
<i class="fas fa-fw fa-history"></i> Changelog
|
|
</div>
|
|
<div class="card-content" style="height: calc(100vh - 680px); min-height: 120px; overflow-x: auto;">
|
|
<div id="changelog" class="text-small"></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Bottom StatusBar -->
|
|
<div class="fixed-bottom">
|
|
<div class="row">
|
|
<div class="cell-3">
|
|
<div>
|
|
<span class="badge inline bg-openbuilds fg-white" style="width: 100%;">
|
|
<span class="fa-layers" data-toggle="tooltip" data-placement="bottom" title="Flashes red when machine has entered ALARM state, click Clear Alarm button">
|
|
<i id="navbell" class="fas fa-bell fg-red" style="display: none;"></i>
|
|
<i class="far fa-bell"></i>
|
|
</span>
|
|
<span id="timeRemaining"></span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="cell-3">
|
|
<div>
|
|
<span class="badge inline bg-openbuilds fg-white" id="connectStatus" style="width: 100%;">Not Connected</span>
|
|
</div>
|
|
</div>
|
|
<div class="cell-3">
|
|
<div>
|
|
<span class="badge inline bg-openbuilds fg-white" id="runStatus" style="width: 100%;">Not Connected</span>
|
|
</div>
|
|
</div>
|
|
<div class="cell-3">
|
|
<div>
|
|
<span class="badge inline bg-openbuilds fg-white" id="gcodesent" style="width: 100%;">Job Queue: 0</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="cell-12">
|
|
<div data-role="progress" id="progressbar" data-value="0"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Simulator Context Menu -->
|
|
<ul class="d-menu context" id="editorContextMenu" data-role="dropdown" data-toggle-element="#context_toggle">
|
|
<span id="dropdowncontent">
|
|
<li onclick="runSimFrom(editor.getSelectionRange().start.row + 1, false);"><a href="#"><i class="fas fa-fighter-jet icon"></i> Simulate from line <span class="linenumber"></span></a>
|
|
<li onclick="runSimFrom(editor.getSelectionRange().start.row + 1, true);"><a href="#"><i class="fas fa-fighter-jet icon"></i> Simulate only line <span class="linenumber"></span></a>
|
|
</li>
|
|
</span>
|
|
</ul>
|
|
<!-- -->
|
|
|
|
<div id="hiddendivs" style="display:none;">
|
|
|
|
|
|
|
|
<div class="dialog dark" data-role="dialog" id="usbPrepDialog" data-width="60%" data-overlay-click-close="false" data-to-top="true">
|
|
<div class="dialog-title"><i class="fas fa-upload fa-fw"></i> Prepare USB Flashdrive for Interface</div>
|
|
<div class="dialog-content" style="height: calc(100% - 100px);">
|
|
This wizard will help you add the supporting files to a USB flashdrive for use with OpenBuilds Interface
|
|
<hr>
|
|
<div class="row">
|
|
<div class="cell-md-3 mb-1">
|
|
|
|
<img src="img/interface/interfacev1.png" width="150" class="mt-5" />
|
|
</div>
|
|
<div class="cell-md-9 mb-1">
|
|
<ul>
|
|
<li class="text-secondary">Insert the USB flashdrive into this computer</li>
|
|
<li class="text-secondary">Select the correct drive below</li>
|
|
<li class="text-secondary">Click COPY to transfer the files</li>
|
|
<li class="text-secondary">Eject the flashdrive </li>
|
|
<li class="text-secondary">Insert it into the Interface</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="cell-md-3 mb-1">
|
|
Controller
|
|
</div>
|
|
<div class="cell-md-9 mb-1">
|
|
<select data-prepend=" <i class='fas fa-microchip'></i>" data-role="select" data-filter="false" id="profileTargetController" data-editable="true" data-to-top="true">
|
|
<option value="" selected>Select a controller</option>
|
|
<option value="blackbox4x">OpenBuilds BlackBox 4X</option>
|
|
<option value="blackboxx32">OpenBuilds BlackBox X32</option>
|
|
<option value="genericgrbl">Generic Grbl 1.1 Controller</option>
|
|
<option value="genericgrblhal">Generic GrblHAL Controller</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="cell-md-3 mb-1">
|
|
Port
|
|
</div>
|
|
<div class="cell-md-9 mb-1">
|
|
<select data-prepend=" <i class='fab fa-usb'></i>" data-role="select" data-filter="false" id="UsbDriveList" disabled data-editable="true" data-to-top="true">
|
|
<option value="">Waiting for USB Flashdrive</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<button id="copyToUsbBtn" class="button success" onclick="copyFilesToUsb()" disabled>Copy supporting files to Flashdrive</button>
|
|
<button class="button js-dialog-close">Cancel</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="dialog dark" data-role="dialog" id="surfacingDialog" data-width="90%" data-overlay-click-close="false" data-to-top="true">
|
|
<div class="dialog-title"><i class="fas fa-exchange-alt"></i> Surfacing / Flattening Wizard</div>
|
|
<div class="dialog-content" style="max-height: calc(100vh - 100px);overflow-y: auto; overflow-x: hidden;">
|
|
<form>
|
|
<div class="row mb-2">
|
|
<div class="cell-sm-7">
|
|
<div class="row mb-2">
|
|
<label class="cell-sm-6">Router Bit Diameter</label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceDiameter" type="number" data-role="input" data-append="mm" data-clear-button="false" value="22" data-editable="true">
|
|
<small class="dark">Diameter of your bit / endmill</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2">
|
|
<label class="cell-sm-6">Stepover</label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceStepover" type="number" data-role="input" data-append="%" data-clear-button="false" value="40" data-editable="true">
|
|
<small class="dark">Stepover between passes </small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2 border-bottom bd-gray">
|
|
<label class="cell-sm-6">Feedrate</label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceFeedrate" type="number" maxlength="5" data-role="input" data-append="mm/min" data-clear-button="false" value="800" data-editable="true"
|
|
oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);">
|
|
<small class="dark">Cutting speed</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2">
|
|
<label class="cell-sm-6">Width<br> <small class="dark">X-Axis</small></label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceX" type="number" data-role="input" data-append="mm" data-clear-button="false" value="200" data-editable="true">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2 border-bottom bd-gray">
|
|
<label class="cell-sm-6">Length<br> <small class="dark">Y-Axis</small></label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceY" type="number" data-role="input" data-append="mm" data-clear-button="false" value="300" data-editable="true">
|
|
<small class="dark">Width and Length of the area to machine flat</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2 border-bottom bd-gray">
|
|
<label class="cell-sm-6">Skim Depth</label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceDepth" type="number" data-role="input" data-append="mm" data-clear-button="false" value="2" data-editable="true">
|
|
<small class="dark">How much material to remove</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2 border-bottom bd-gray">
|
|
<label class="cell-sm-6">Spindle RPM</label>
|
|
<div class="cell-sm-6">
|
|
<input id="surfaceRPM" type="number" data-role="input" data-append="RPM" data-clear-button="false" value="1000" data-editable="true">
|
|
<small class="dark">Spindle RPM for variable spindles</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-2 border-bottom bd-gray">
|
|
<label class="cell-sm-6">Enable Coolant/Vacuum</label>
|
|
<div class="cell-sm-6">
|
|
<select id="surfaceCoolant" data-role="input" data-clear-button="false">
|
|
<option value="enabled" selected>Enabled</option>
|
|
<option value="disabled">Disabled</option>
|
|
</select>
|
|
<small class="dark">Add M8/M9 commands to GCODE</small>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="cell-sm-5">
|
|
<small class="dark">NB: make sure your spindle is 100% perpendicular (trammed) to your bed, before running a Surfacing operation. Incorrectly trammed spindles will cause uneven machining of the surface, leading to pitting and
|
|
uneven surface finish
|
|
</small>
|
|
<hr>
|
|
|
|
<small class="dark">You can use the Surfacing / Flattening Wizard to
|
|
<ul class="dark">
|
|
<li>Prepare / flatten your spoilboard</li>
|
|
<li>Level off stock</li>
|
|
</ul></small>
|
|
<hr>
|
|
<center>
|
|
<img src="img/surfacing/wizard1.png" alt="diameter" border="0" style="max-width: calc(100% - 10px); ">
|
|
</center>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="dialog-actions">
|
|
<button class="button success js-dialog-close" onclick="createSurfaceGcode()">Proceed</button>
|
|
<button class="button js-dialog-close">Cancel</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="dialog dark" id="downloadUpdate" data-role="dialog" data-overlay-click-close="false" data-to-top="true">
|
|
<div class="dialog-title">Update Ready</div>
|
|
<div class="dialog-content">
|
|
OpenBuilds-CONTROL v<span id="availVersion">1.0.100</span> has finished downloading and is ready to be installed!<br>
|
|
<small>Note that proceeding will:
|
|
<ul>
|
|
<li>Stop any running jobs</li>
|
|
<li>Shut down this instance of OpenBuilds CONTROL</li>
|
|
<li>Launch the installer for the new version</li>
|
|
</ul>
|
|
</small>
|
|
<small>You may want to wait until your machine is idle, and it it's a convenient time for you to do this, before continuing</small>
|
|
<p id="changelogupdate" class="text-small"></p>
|
|
This release has already been downloaded <span id="releaseStats">several</span> times since its release on <span id="releaseDate"></span>
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<button class="button js-dialog-close">Not right now (snooze for 1hr)</button>
|
|
<button class="button success js-dialog-close" onclick="socket.emit('applyUpdate', true)">OK, Proceed with Update</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="dialog dark" data-overlay-click-close="false" data-role="dialog" data-to-top="true" id="jogWidgetDialog">
|
|
<div class="dialog-title"><i class="fas fa-mobile-alt"></i> Jog Widget</div>
|
|
<div class="dialog-content" style="max-height: calc(100vh - 200px);overflow-y: auto; overflow-x: hidden;">
|
|
<div class="row">
|
|
<div class="cell-4">
|
|
<img src="img/widget.png" />
|
|
</div>
|
|
<div class="cell-8">
|
|
<div class="row">
|
|
<div class="cell">
|
|
<center>
|
|
<small>You can use your mobile device as an handheld Jog interface. To get started, open a web-browser on your Mobile device and navigate to <br></small><span id="jogip">http://0.0.0.0:3000/jog.html<span><br><small> or scan the QR
|
|
Code below</small>
|
|
</center>
|
|
<hr class='thin bg-gray'>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="cell-3"></div>
|
|
<div class="cell-4" id="qrcode">
|
|
</div>
|
|
<div class="cell-5"></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<button class="button js-dialog-close">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- XYZ Probe -->
|
|
<div class="dialog dark" id="xyzProbeWindow" data-role="dialog" data-overlay-click-close="false" data-to-top="true" data-width="800">
|
|
<div class="dialog-title">Probing Wizard</div>
|
|
<div class="dialog-content" style="max-height: calc(100vh - 100px);overflow-y: auto; overflow-x: hidden;">
|
|
<nav data-role="ribbonmenu">
|
|
<ul class="tabs-holder">
|
|
<li onclick="probeautotab();" class="probetabxyz" id="probeautotab"><a href="#">Automatic</a></li>
|
|
<li onclick="probexyztab();" class="probetabxyz" id="probexyztab"><a href="#">XYZ Zero</a></li>
|
|
<li onclick="probextab();" class="probetabxyz" id="probextab"><a href="#">X Zero</a></li>
|
|
<li onclick="probeytab();" class="probetabxyz" id="probeytab"><a href="#">Y Zero</a></li>
|
|
<li onclick="probeztab();" class="probetabxyz" id="probeztab"><a href="#">Z Zero</a></li>
|
|
<li onclick="probezplatetab();" class="probetabz" id="probezplatetab" style="display: none;"><a href="#">Z Touch Plate</a></li>
|
|
<!-- <li onclick="probeendmilltab();" class="probetabxyz disabled" id="probeendmilltab"><a href="#">Endmill Diameter</a></li> -->
|
|
</ul>
|
|
</nav>
|
|
|
|
<table>
|
|
<tr>
|
|
|
|
<td>
|
|
<div id="xyzprobeimages">
|
|
<img src="./img/xyzprobe/auto.png" alt="probe-auto" height="450" id="img-probe-auto" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/xyz.png" alt="probe-xyz" height="450" id="img-probe-xyz" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/x.png" alt="probe-x" height="450" id="img-probe-x" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/y.png" alt="probe-y" height="450" id="img-probe-y" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/z.png" alt="probe-z" height="450" id="img-probe-z" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/zplate.png" alt="probe-zplate" height="450" id="img-probe-zplate" class="img-probe" style="display: none;">
|
|
<img src="./img/xyzprobe/endmill.png" alt="probe-endmill" height="450" id="img-probe-endmill" class="img-probe" style="display: none;">
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<td style="padding: 4px; padding-left: 15px; vertical-align: top;">
|
|
|
|
<div id="probe-auto" class="probe-tab-content" style="display: none;">
|
|
<small>Automatic Probe Routine: This routine is used to find the XYZ origins, as well as automatically
|
|
determine endmill diameter. </small>
|
|
<hr>
|
|
<small>Position the endmill above the hole in the probe plate as shown, just above the plate, clip
|
|
the magnet to the collet, then click the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
</div>
|
|
<div id="probe-xyz" class="probe-tab-content">
|
|
<small>XYZ Probe Routine: This routine is used to find the XYZ origins</small>
|
|
<hr>
|
|
<small>Position the endmill above the hole in the probe plate as shown, just above the plate, clip
|
|
the magnet to the collet, then click the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
</div>
|
|
<div id="probe-x" class="probe-tab-content" style="display: none;">
|
|
<small>X Probe Routine: This routine is used to find the X origin</small>
|
|
<hr>
|
|
<small>Position the endmill to the left of the probe plate as shown, clip the magnet to the collet,
|
|
then click the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
</div>
|
|
<div id="probe-y" class="probe-tab-content" style="display: none;">
|
|
<small>Y Probe Routine: This routine is used to find the Y origin</small>
|
|
<hr>
|
|
<small>Position the endmill in front of the probe plate as shown, clip the magnet to the collet, then
|
|
click the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
</div>
|
|
<div id="probe-z" class="probe-tab-content" style="display: none;">
|
|
<small>Z Probe Routine: This routine is used to find the Z origin</small>
|
|
<hr>
|
|
<small>Position the endmill above the probe plate as shown, clip the magnet to the collet or the alligator clip to the bit, then click
|
|
the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
</div>
|
|
<div id="probe-endmill" class="probe-tab-content" style="display: none;">
|
|
<small>Endmill Probe Routine: This routine is used to find the Endmill Diameter</small>
|
|
<hr>
|
|
<small>Position the endmill above the hole in the probe plate as shown, just above the plate, clip
|
|
the magnet to the collet, then click the <span class="fg-grayBlue">Confirm Probe Position</span> button to continue...</small>
|
|
<hr>
|
|
<small>
|
|
This operation will perform an XYZ probe to establish the plate position, then using the hole in the plate,
|
|
it will measure and calculate the Endmill Diameter and display it onscreen. <br>This operation will NOT set
|
|
any work-coordinates!
|
|
</small>
|
|
</div>
|
|
<div id="probeJogWindow">
|
|
<hr>
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
<button class="button success small rounded outline m-1 yP" style="width: 40px;" data-role="ripple" data-ripple-color="#5de21b">Y+</button>
|
|
</td>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
<button class="button primary small rounded outline m-1 zP" style="width: 40px;" data-role="ripple" data-ripple-color="#1ba1e2">Z+</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<button class="button alert small rounded outline m-1 xM" style="width: 40px;" data-role="ripple" data-ripple-color="#e21b1b">X-</button>
|
|
</td>
|
|
<td>
|
|
<button class="button success small rounded outline m-1 yM" style="width: 40px;" data-role="ripple" data-ripple-color="#5de21b">Y-</button>
|
|
</td>
|
|
<td>
|
|
<button class="button alert small rounded outline m-1 xP" style="width: 40px;" data-role="ripple" data-ripple-color="#e21b1b">X+</button>
|
|
</td>
|
|
<td>
|
|
<button class="button primary small rounded outline m-1 zM" style="width: 40px;" data-role="ripple" data-ripple-color="#1ba1e2">Z-</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="4">
|
|
<center>
|
|
<span class="text-small">Or use the Keyboard to Jog</span>
|
|
</center>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<hr>
|
|
<div id="endmilldiameterform">
|
|
<label>Endmill Diameter</label>
|
|
<input id="probediameterxyz" type="number" value="6.35" data-role="input" data-append="mm" data-prepend="<img class='fa-fw' src='https://cam.openbuilds.com/images/endmilldia.svg' width='16px' height='16px'>"
|
|
data-clear-button="false">
|
|
</div>
|
|
<hr>
|
|
<button class="button" id="toggle-probe-advanced"><i class="fas fa-fw fa-cogs"></i> Advanced</button>
|
|
<div class="pos-relative">
|
|
<div data-role="collapse" data-toggle-element="#toggle-probe-advanced" data-collapsed="true" id="toggle-probe-advanced-content">
|
|
|
|
<div id="zplatesettings" class="probe-tab-content">
|
|
<label>Plate Thickness</label>
|
|
<input id="z0platethickness" type="number" value="20" data-role="input" data-append="mm" data-prepend="<i class='fas fa-ruler-vertical'></i>" data-clear-button="false">
|
|
</div>
|
|
|
|
<div id="xyzdatum" class="probe-tab-content">
|
|
|
|
<small>Where is the XY Zero Datum / Origin in your CAM setup, relative to the front-left corner we are
|
|
probing? </small>
|
|
<br>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="180" viewBox="0 0 79.375 47.625">
|
|
<style>
|
|
|
|
</style>
|
|
<defs>
|
|
<marker id="A" orient="auto" class="J">
|
|
<path transform="matrix(.4 0 0 .4 2.96 .4)" d="m-2.5-1c0 2.76-2.24 5-5 5s-5-2.24-5-5 2.24-5 5-5 5 2.24 5 5z" class="D K L" />
|
|
</marker>
|
|
<marker id="B" orient="auto" class="J">
|
|
<path transform="matrix(.4 0 0 .4 2.96 .4)" d="m-2.5-1c0 2.76-2.24 5-5 5s-5-2.24-5-5 2.24-5 5-5 5 2.24 5 5z" class="D K L" />
|
|
</marker>
|
|
<marker id="C" orient="auto" class="J">
|
|
<path transform="matrix(.8 0 0 .8 10 0)" d="M0 0l5-5-17.5 5L5 5z" class="D K L" />
|
|
</marker>
|
|
<marker id="D" orient="auto" class="J">
|
|
<path transform="matrix(.8 0 0 .8 10 0)" d="M0 0l5-5-17.5 5L5 5z" class="D K L" />
|
|
</marker>
|
|
</defs>
|
|
<g fill="#fff" class="D">
|
|
<g stroke-width=".132" class="B">
|
|
<path d="M7.195 7.363l15.94 28.46L70.758 31.1 47.99 5.015z" fill="#999" />
|
|
<path d="M23.133 35.823l-1.257 8.313 47.7-5.284 1.172-7.752z" fill="#ececec" />
|
|
<path d="M7.195 7.363l15.94 28.46-1.257 8.313-15.722-29.89z" fill="#ccc" />
|
|
</g>
|
|
<g stroke-width=".049" class="C N">
|
|
<path d="M7.198 7.363l63.74 25.952" />
|
|
<path d="M23.322 38.1L47.993 5.093" />
|
|
</g>
|
|
<g fill="none" stroke-width=".197" class="N">
|
|
<path d="M3.942 15.993L19.16 45.07" marker-start="url(#C)" marker-end="url(#A)" />
|
|
<path d="M70.118 41.003l-47.624 5.73" marker-start="url(#D)" marker-end="url(#B)" />
|
|
</g>
|
|
<g transform="matrix(.24595 -.020313 .020313 .24595 108.29 -158.287)">
|
|
<rect class="probe-label" id="probe-c" rx="5.925" height="16.422" width="59.717" y="682.21" x="-368.93" stroke-width=".987" class="B" />
|
|
<text id="probe-c-text" xml:space="preserve" letter-spacing="0" font-size="2.229" y="694.532" x="-339.852" class="C E F G H">
|
|
<tspan y="694.532" x="-330.852" class="I">CENTER</tspan>
|
|
</text>
|
|
<rect class="probe-label areaactive" id="probe-fl" rx="6.543" height="30.532" width="43.617" y="742.64" x="-423.17" class="B M" />
|
|
<text id="probe-fl-text" xml:space="preserve" letter-spacing="0" y="755.631" x="-401.459" class="C E F G H I">
|
|
<tspan y="755.631" x="-350">FRONT</tspan>
|
|
<tspan y="768.172" x="-350">LEFT</tspan>
|
|
</text>
|
|
<rect class="probe-label" id="probe-fr" rx="6.543" height="30.532" width="43.617" y="733.68" x="-239.82" class="B M" />
|
|
<text id="probe-fr-text" xml:space="preserve" letter-spacing="0" y="746.284" x="-217.439" class="C E F G H I">
|
|
<tspan y="746.284" x="-166">FRONT</tspan>
|
|
<tspan y="758.824" x="-169">RIGHT</tspan>
|
|
</text>
|
|
<rect class="probe-label" id="probe-rr" rx="6.543" height="30.532" width="43.617" y="621.52" x="-312.72" class="B M" />
|
|
<text id="probe-rr-text" xml:space="preserve" letter-spacing="0" y="633.759" x="-290.442" class="C E F G H I">
|
|
<tspan y="633.759" x="-239.442">REAR</tspan>
|
|
<tspan y="646.3" x="-242.442">RIGHT</tspan>
|
|
</text>
|
|
<rect class="probe-label" id="probe-rl" rx="6.543" height="30.532" width="43.617" y="616.07" x="-476.33" class="B M" />
|
|
<text id="probe-rl-text" xml:space="preserve" letter-spacing="0" y="628.815" x="-455.49" class="C E F G H I">
|
|
<tspan y="628.815" x="-404">REAR</tspan>
|
|
<tspan y="641.356" x="-404">LEFT</tspan>
|
|
</text></g>
|
|
</g>
|
|
</svg>
|
|
|
|
<br>
|
|
<small>If the origin is not Front, Left (Default): Then provide stock dimensions to calculate correct
|
|
offset of X0, Y0:</small>
|
|
<br>
|
|
<label>Width</label>
|
|
<input id="stockwidth" type="number" value="200" data-role="input" data-append="mm" data-prepend="<i class='fas fa-arrows-alt-h'></i>" data-clear-button="false">
|
|
<label>Length</label>
|
|
<input id="stocklength" type="number" value="200" data-role="input" data-append="mm" data-prepend="<i class='fas fa-arrows-alt-v'></i>" data-clear-button="false">
|
|
|
|
</div>
|
|
<!-- end xyzdatum-->
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="dialog-actions">
|
|
|
|
<div class="pos-relative">
|
|
<label>Probe Type: </label>
|
|
|
|
<a class="button" id="context_toggle"><span id="probetypebtn"><span class="icon"><img src="./img/xyzprobe/xyztouch.png" /></span> OpenBuilds XYZ Probe Plus</a>
|
|
<ul class="d-menu context" data-role="dropdown" data-toggle-element="#context_toggle">
|
|
<li onclick="probetype('xyz');"><a href="#"><span class="icon"><img src="./img/xyzprobe/xyztouch.png" /></span> OpenBuilds XYZ Probe Plus</a></li>
|
|
<li onclick="probetype('z');"><a href="#"><span class="icon"><img src="./img/xyzprobe/ztouch.png" /></span>OpenBuilds Z Touch Plate</a></li>
|
|
<li onclick="probetype('custom');"><a href="#"><span class="icon"><img src="./img/xyzprobe/custom.png" /></span> Custom XYZ Probe</a></li>
|
|
|
|
<li class="divider"></li>
|
|
<!-- li onclick="probetype('custom');"><a href="#">Custom</a></li -->
|
|
</ul>
|
|
</div>
|
|
<button title="Configure Custom Probe parameters" class="button" onclick="editCustomProbe();" id="editCustomProbeBtn" style="display: none;"><i class="fas fa-cogs"></i></button>
|
|
<span style="padding-left: 50px;" id="ProbeButtonBarSpacer"></span>
|
|
<button class="button alert js-dialog-close" onclick="resetJogModeAfterProbe(); Metro.dialog.close('#xyzProbeWindow');">Cancel</button>
|
|
<button class="button primary" onclick="confirmProbeInPlace();" id="confirmNewProbeBtn">Confirm Probe Position</button>
|
|
<button class="button success js-dialog-close disabled" onclick="runProbeNew();" id="runNewProbeBtn">Probe</button>
|
|
|
|
</div>
|
|
</div>
|
|
<!-- End XYZ Probe -->
|
|
|
|
<!-- Edit Custom Probe -->
|
|
<div class="dialog dark" data-role="dialog" id="editCustomProbeDialog" data-role="dialog" data-overlay-click-close="false">
|
|
<div class="dialog-title"><i class="fas fa-cogs"></i> Edit Custom Probe</div>
|
|
<div class="dialog-content">
|
|
<input type="text" data-role="input" class="mb-1" data-prepend="X Offset" data-append="mm" id="customProbeXOffset">
|
|
<input type="text" data-role="input" class="mb-1" data-prepend="Y Offset" data-append="mm" id="customProbeYOffset">
|
|
<input type="text" data-role="input" class="mb-1" data-prepend="Z Offset" data-append="mm" id="customProbeZOffset">
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<button class="button js-dialog-close" onclick="resetJogModeAfterProbe()">Cancel</button>
|
|
<button class="button primary js-dialog-close" onclick="saveEditCustomProbe();">Save</button>
|
|
</div>
|
|
</div>
|
|
<!-- End Edit Custom Probe -->
|
|
|
|
<!-- job completion confirmation -->
|
|
<div class="dialog dark" id="completeMsgModal" data-role="dialog" data-overlay-click-close="false">
|
|
<div class="dialog-title"><i class='far fa-check-square'></i> Completed</div>
|
|
<div class="dialog-content" id="completeMsgDiv">
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<div class="float-right">
|
|
<button class="button primary js-dialog-close" id="jobCompleteBtnOk">OK</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end job completion confirmation -->
|
|
|
|
<!-- Saving Grbl Parameters Progress -->
|
|
<div class="dialog dark" data-role="dialog" id="savingGrblSettingsProgress" data-role="dialog" data-overlay-click-close="false" data-close-button="false">
|
|
<div class="dialog-title"><i class="fas fa-microchip"></i> Saving Grbl Settings</div>
|
|
<div class="dialog-content">
|
|
|
|
Writing changed parameters to controller:<p>
|
|
|
|
<table class="table striped compact">
|
|
<thead>
|
|
<tr>
|
|
<th>Parameter</th>
|
|
<th>New Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span id="grblNewParam"></span></td>
|
|
<td class="pt-1 mt-0 pb-0 pt-0"><span id="grblNewParamVal"></span></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div data-role="progress" id="grblSaveProgress" data-value="0"></div>
|
|
|
|
</div>
|
|
<div class="dialog-actions ">
|
|
<button class="button" disabled>please wait...</button>
|
|
|
|
</div>
|
|
</div>
|
|
<!-- End Saving Grbl Parameters Progress -->
|
|
|
|
</div>
|
|
</body>
|
|
|
|
<script type="x-shader/x-vertex" id="vertexShader">
|
|
varying vec3 vWorldPosition; void main() { vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); vWorldPosition = worldPosition.xyz; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }
|
|
</script>
|
|
<script type="x-shader/x-fragment" id="fragmentShader">
|
|
uniform vec3 topColor; uniform vec3 bottomColor; uniform float offset; uniform float exponent; varying vec3 vWorldPosition; void main() { float h = normalize( vWorldPosition + offset ).z; gl_FragColor = vec4( mix( bottomColor, topColor, max( pow( max(
|
|
h , 0.0), exponent ), 0.0 ) ), 1.0 ); }
|
|
|
|
</script>
|
|
|
|
|
|
<script type="text/javascript" src="lib/fontawesome5/js/all.min.js"></script>
|
|
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script>
|
|
<script type="text/javascript" src="lib/jquery/jquery-ui.js"></script>
|
|
<script type="text/javascript" src="lib/jquery/jquery-input-history.min.js"></script>
|
|
|
|
<!-- Theme -->
|
|
<script type="text/javascript" src="js/theme.js"></script>
|
|
|
|
<script type="text/javascript" src="js/diagnostics.js"></script>
|
|
|
|
<script type="text/javascript" src="lib/qrcode/qrcode.min.js"></script>
|
|
|
|
<script type="text/javascript" src="lib/ace/src-noconflict/ace.js"></script>
|
|
<script>
|
|
METRO_HOTKEYS_FILTER_CONTENT_EDITABLE = false;
|
|
METRO_HOTKEYS_FILTER_INPUT_ACCEPTING_ELEMENTS = true;
|
|
METRO_HOTKEYS_FILTER_TEXT_INPUTS = true;
|
|
</script>
|
|
<script type="text/javascript" src="lib/metro4/js/metro.min.js"></script>
|
|
|
|
<script type="text/javascript" src="/lib/lodash.core.js"></script>
|
|
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
|
|
|
|
<script type="text/javascript" src="/js/macros.js"></script>
|
|
|
|
<script type="text/javascript" src="lib/threejs/three.min.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/GridRect.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/OrbitControls.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/DragControls.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/Projector.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/CanvasRenderer.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/TransformControls.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/TweenMax.min.js"></script>
|
|
<script type="text/javascript" src="lib/threejs/STLLoader.js"></script>
|
|
|
|
<script type="text/javascript" src="js/viewer.js"></script>
|
|
<script type="text/javascript" src="js/viewer-ruler.js"></script>
|
|
|
|
<script type="text/javascript" src="js/main.js"></script>
|
|
<script type="text/javascript" src="js/updates.js"></script>
|
|
<script type="text/javascript" src="js/ui.js"></script>
|
|
|
|
<script type="text/javascript" src="js/grbl-settings-defaults.js"></script>
|
|
<script type="text/javascript" src="js/grbl-settings-templates.js"></script>
|
|
<script type="text/javascript" src="js/grbl-settings.js"></script>
|
|
|
|
<script type="text/javascript" src="js/websocket.js"></script>
|
|
|
|
<script type="text/javascript" src="js/metroactions.js"></script>
|
|
<script type="text/javascript" src="js/jog.js"></script>
|
|
<script type="text/javascript" src="js/servo.js"></script>
|
|
|
|
<script type="text/javascript" src="js/widget.js"></script>
|
|
|
|
<script type="text/javascript" src="js/keyboard.js"></script>
|
|
|
|
<script type="text/javascript" src="lib/3dview/3dview.js"></script>
|
|
|
|
|
|
|
|
<!-- Wizards -->
|
|
<script type="text/javascript" src="wizards/calibration/calibrate.js"></script>
|
|
<script type="text/javascript" src="wizards/calibration/calibrate-x.js"></script>
|
|
<script type="text/javascript" src="wizards/calibration/calibrate-y.js"></script>
|
|
<script type="text/javascript" src="wizards/calibration/calibrate-z.js"></script>
|
|
<script type="text/javascript" src="wizards/calibration/calibrate-servo.js"></script>
|
|
|
|
<script type="text/javascript" src="wizards/probe/probev2.js"></script>
|
|
<script type="text/javascript" src="wizards/probe/holefinder.js"></script>
|
|
|
|
<script type="text/javascript" src="wizards/surfacing/surfacing.js"></script>
|
|
|
|
<!-- <script type="text/javascript" src="wizards/flashingtool/grbl-flashing.js"></script> -->
|
|
<script type="text/javascript" src="wizards/flashingtool2/flashingtool.js"></script>
|
|
|
|
<script type="text/javascript" src="wizards/interface/usbprep.js"></script>
|
|
|
|
<script type="text/javascript" src="wizards/jobstats/jobstats.js"></script>
|
|
|
|
<script type="text/javascript" src="js/toolchange.js"></script>
|
|
|
|
<script src="/lib/furcanIconPicker/iconpicker-1.5.0.js"></script>
|
|
|
|
</html>
|
|
<!-- --> |