【问题标题】:Binary handling for 3d printing js-slicer (SLAcer.js)3d 打印 js-slicer (SLAcer.js) 的二进制处理
【发布时间】:2018-08-10 22:36:14
【问题描述】:

简介

大家好, 我目前正在开发一个基于 JavaScript 的 3d 切片工具(SLAcer.js - 顺便说一句很棒的工作),它可以为我便宜的 dlp 打印机(SparkMaker)生成方便的打印文件。 打印文件由一些 G 代码和简单的二进制层/图像组成(请参阅here)。

我已经能够生成 G-Code 和一个包含二进制层相关信息的 Uint8Array。 当前,所有 G 代码和二进制层都连接为字符串(可能是第一个问题),最后可以作为 zip 文件的一部分作为打印文件 (.wow) 下载。 (项目默认 JSZip 框架)(见here

我苦苦挣扎的地方是:

我无法为二进制层获得正确的 TextEncoding 以匹配原始二进制层。

var array = new Uint8Array(width*height/8);
var binary_layer;

已经尝试了几件事,包括:

binary_layer=(new TextDecoder("utf-8")).decode(array) /*with different text encodes*/

也试过了:

binary_layer=bin2string(array)
function bin2string(array){
var result = "";
for(var i = 0; i < array.length; ++i){
result+= (String.fromCharCode(array[i]));
}
console.log(result);
return result;
}

令我惊讶的是,当将每个 Uint8Array 导出为单独的二进制 txt 文件时,它们几乎完全匹配所需/原始模式

串联:

file_contents = "[some gecode]";
file_contents += binary_layer;

总结

var staring = "hello";
var array = new Uint8Array(2);
array[0]=255;
array[1]=0;

想要的文件内容(文本和原始二进制文件 - utf8):

hello(xFF)(NUL)

这听起来很容易,但就正确的编码而言,它不是:

【问题讨论】:

    标签: javascript file binary slicers 3d-printing


    【解决方案1】:

    问题可以解决(还需要进一步测试)

    可以通过使用{binary: true} 选项保存所有数据并使用简单的十六进制到字符串解码器方法来解决问题:

    function bin2string(array){
    var result = "";
    for(var i = 0; i < array.length; ++i){
    result+= (String.fromCharCode(array[i]));
    }
    return result;
    }
    

    烦人(就我而言):

    var array = new Uint8Array(2);
    array[1]=255;
    (new TextDecoder("utf-8")).decode(array)
    

    输出:(NUL)(xFD)

    但应该有输出:(NUL)(xFF)

    这需要进一步讨论! (另见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多