.dst拡張子はTAJIMAの刺繍機などで使用される古くからあるTAJIMA独自のフォーマットです。低水準刺繍データで、刺繍機へのスティッチコマンド・メタデータのみが含まれています。パンチカード時代から存在していたフォーマットのため今となっては最適なデータ構造のフォーマットとは言えませんが、昔からあるフォーマットのため標準的なフォーマットの1つとして有名です。
データ構造
ヘッダー
DSTのヘッダーは512バイトの固定長です。実際には125バイトのデータのみを使用します。残りのバイトは0x20でパディングされています。
接頭辞 | 意味 | 長さ | 含まれる内容 |
LA | Label | 16+1 | パスや拡張子の情報を持たないデザイン名。全部で16文字で、名前は8文字以内で、16バイトとなるよう残りは0x20でパディングしてください。 |
ST | Stitches | 7+1 | 先頭ゼロパディングの7桁の数字でスティッチ数が保存されています。これは、カラーチェンジ、ジャンプ等を含む総ステッチ数です。 |
CO | Colors | 3+1 | 先頭ゼロパディングの3桁の数字。ファイル内のカラーチェンジの記録数です。 |
+X | +X Extends | 5+1 | +X(センチメートル単位の正のX範囲)は、先頭のゼロでパッドされた5桁の非10進数である。 |
-X | -X Extends | 5+1 | -X(センチメートル単位の正のX範囲)は、先頭のゼロでパッドされた5桁の非10進数である。 |
+Y | +Y Extends | 5+1 | +Y(センチメートル単位の正のY範囲)は、先頭のゼロでパッドされた5桁の非10進数である。 |
-Y | -Y Extends | 5+1 | -Y(センチメートル単位の正のY範囲)は、先頭のゼロでパッドされた5桁の非10進数である。 |
AX | Difference | 6+1 | = “AX:”(針の終点X)”+”または”-“10分の1ミリメートルの10進数 |
AY | Difference | 6+1 | = “AY:”(針の終点Y)”+”または”-“10分の1ミリメートルの10進数 |
MX | Multi-Design Start | 6+1 | = “MX:”(前のファイルの針の終点X)”+”または”-“10分の1ミリメートルの10進数 |
MY | Multi-Design Start | 6+1 | = “MY:”(前のファイルの針の終点Y)”+”または”-“10分の1ミリメートルの10進数 |
PD | Previous Desing? | 9+1 | = “PD:”(前のファイル) “******”(単一ファイルの場合) |
4 | 0x1a 0x20 0x20 0x20 または 0x1a 0x00 0x00 0x00 ヘッダーデータの終わり | ||
384 | 0x20 |
ボディ
ボディにはスティッチ情報が記載されています。1スティッチを3バイトの情報として納められています。初めの2バイトはX座標、Y座標、3バイト目は加えてジャンプスティッチや色変え情報など・コマンド情報を含んでいます。
ビット単位に細かく意味があるので詳細を見てみましょう。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set |
スティッチ命令
3バイト目の0,1ビットがONの場合、針を落とします。この命令の場合、座標を変更せずに針を落とすことになります。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000000 | 0x00 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000000 | 0x00 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00000011 | 0x03 |
ジャンプ命令
3バイト目の7ビットがONの場合、針を落とさずに移動する場合ジャンプ命令となります。この例ではx座標を右に10移動します。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000101 | 0x05 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000000 | 0x00 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b10000000 | 0x80 |
糸色替え命令
3バイト目の6,7ビットがONの場合、糸色替え命令になります。DSTファイル上には色情報は保持しておらず、あらかじめマシンで色情報を設定していると思います。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000101 | 0x00 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000000 | 0x00 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b10000000 | 0xC0 |
その他
ファイルは最後にトリプレット(0x00 0x00 0xF3)で終了する必要があります。
実際にデータを作成してみる
上述のフォーマットを理解した上で、単純な四角形をマニュアルスティッチするような刺繍データを手作業で作成してみます。赤丸からスタートして角毎に針を落としていきます。
ヘッダ
LA:Square
ST: 7
CO: 0
+X: 100
-X: 00
+Y: 00
-Y: 00
AX:+ 100
AY:+ 0
MX:+ 0
MY:+ 0
PD:******
ボディ
まずは原点に針を落とします(0x00 0x00 0x03)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000000 | 0x00 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000000 | 0x00 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b10000011 | 0x03 |
次に10ミリ右に移動して針を落とします。(0x09 0x04 0x07)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00001001 | 0x09 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000100 | 0x04 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00000111 | 0x07 |
次に10ミリ上に移動して針を落とします。(0x90 0x20 0x23)ここからわかるように移動は相対座標です。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b10010000 | 0x90 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00100000 | 0x20 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00100011 | 0x23 |
次に10ミリ左に移動して針を落とします。(0x06 0x08 0x0B)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000110 | 0x06 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00001000 | 0x08 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00001011 | 0x0B |
最後に10ミリ下に移動して針を落とします。(0x60 0x10 0x13)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b01100000 | 0x60 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00010000 | 0x10 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00010011 | 0x13 |
再度に終了コマンドをセットします。(0x00 0x00 0xF3)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 2進数 | 16進数 | |
Byte 1 | y+1 | y-1 | y+9 | y-9 | x-9 | x+9 | x-1 | x+1 | b00000000 | 0x00 |
Byte 2 | y+3 | y-3 | y+27 | y-27 | x-27 | x+27 | x-3 | x+3 | b00000000 | 0x00 |
Byte 3 | jump | color change | y+81 | y-81 | x-81 | x+81 | set | set | b00100011 | 0xF3 |
刺繍してみる
実際にバイナリを書いて刺繍データを作成してみます。
データをTAJIMAの彩で読み込んでみます。四角が表示されていますね。
刺繍もできました。きちんと1cmサイズの四角が作れています。
というわけで、DSTファイルの理解と作成ができました。DSTファイルにはほかにもTRIMやSEQUINコマンドなどもあります。参考サイトも下に記載しますのでご参照下さい。