Skip to content

Commit 0e252f3

Browse files
committed
Extraction of print settings from CURA produced gcode
New lib: zlib decompression
1 parent d57cfa8 commit 0e252f3

File tree

3 files changed

+2494
-1
lines changed

3 files changed

+2494
-1
lines changed

index.html

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<script type="text/javascript" src="lib/bootstrap.js"></script>
2727
<script type="text/javascript" src="lib/modernizr.custom.09684.js"></script>
2828
<script type="text/javascript" src="lib/TrackballControls.js"></script>
29+
<script type="text/javascript" src="lib/zlib.min.js"></script>
2930
<script type="text/javascript" src="js/ui.js"></script>
3031
<script type="text/javascript" src="js/gCodeReader.js"></script>
3132
<script type="text/javascript" src="js/renderer.js"></script>

js/gCodeReader.js

+24-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,30 @@ GCODE.gCodeReader = (function(){
128128
}
129129

130130
var getParamsFromCura = function(gcode){
131+
// console.log("cura");
132+
var profileString = gcode.match(/CURA_PROFILE_STRING:((?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4}))/m);
133+
if(profileString){
134+
var raw = window.atob(profileString[1]);
135+
var array = new Uint8Array(new ArrayBuffer(raw.length));
131136

137+
for(i = 0; i < raw.length; i++) {
138+
array[i] = raw.charCodeAt(i);
139+
}
140+
var data = new Zlib.inflate(array.subarray(2, array.byteLength-4));
141+
var msg;
142+
for(i=0; i < data.length; i+=1) {
143+
msg+=String.fromCharCode(data[i]);
144+
}
145+
var nozzle = msg.match(/nozzle_size\s*=\s*(\d*\.\d+)/m);
146+
if(nozzle){
147+
gCodeOptions['nozzleDia'] = nozzle[1];
148+
}
149+
var filament = msg.match(/filament_diameter\s*=\s*(\d*\.\d+)/m);
150+
if(filament){
151+
gCodeOptions['filamentDia'] = filament[1];
152+
}
153+
154+
}
132155
}
133156

134157
var detectSlicer = function(gcode){
@@ -142,7 +165,7 @@ GCODE.gCodeReader = (function(){
142165
}else if(gcode.match(/skeinforge/)){
143166
slicer = 'skeinforge';
144167
getParamsFromSkeinforge(gcode);
145-
}else if(gcode.match(/Cura/)){
168+
}else if(gcode.match(/CURA_PROFILE_STRING/)){
146169
slicer = 'cura';
147170
getParamsFromCura(gcode);
148171
}else if(gcode.match(/Miracle/)){

0 commit comments

Comments
 (0)