序章
皆さん、私は現在、安価な dlp プリンター (SparkMaker) 用の便利な印刷ファイルを生成できる JavaScript ベースの 3D スライシング ツール (SLAcer.js - すばらしい仕事です) に取り組んでいます。印刷ファイルは、いくつかの G コードと単純なバイナリ レイヤー/画像で構成されます (こちらを参照)。
G コードと、バイナリ レイヤーの関連情報を含む Uint8Array を生成できます。現在、すべての G コードおよびバイナリ レイヤーは文字列として連結され (最初の問題がある可能性があります)、最終的には zip ファイルの一部として印刷ファイル (.wow) としてダウンロードできます。(プロジェクトのデフォルト JSZip フレームワーク) (こちらを参照)
私が苦労しているポイントは次のとおりです。
元のバイナリ レイヤーと一致するバイナリ レイヤーの正しい 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)
これは簡単に聞こえるかもしれませんが、正しいエンコーディングに関してはそうではありません。
- SLAcer でスライスしたファイル (バイナリ層が異なる)
- 単層ファイル (元の第 1 層パターンとほぼ一致します)
- 元のソフトウェアによってスライスされたファイル 誰かが私を助けてくれることを願っています:)