刺繍データ拡張子「DST」を分析・作成してみる

開発
この記事は開発者向けの技術的な記事です

.dst拡張子はTAJIMAの刺繍機などで使用される古くからあるTAJIMA独自のフォーマットです。低水準刺繍データで、刺繍機へのスティッチコマンド・メタデータのみが含まれています。パンチカード時代から存在していたフォーマットのため今となっては最適なデータ構造のフォーマットとは言えませんが、昔からあるフォーマットのため標準的なフォーマットの1つとして有名です。

データ構造

ヘッダー

DSTのヘッダーは512バイトの固定長です。実際には125バイトのデータのみを使用します。残りのバイトは0x20でパディングされています。

接頭辞意味長さ含まれる内容
LALabel16+1パスや拡張子の情報を持たないデザイン名。全部で16文字で、名前は8文字以内で、16バイトとなるよう残りは0x20でパディングしてください。
STStitches7+1先頭ゼロパディングの7桁の数字でスティッチ数が保存されています。これは、カラーチェンジ、ジャンプ等を含む総ステッチ数です。
COColors3+1先頭ゼロパディングの3桁の数字。ファイル内のカラーチェンジの記録数です。
+X+X Extends5+1+X(センチメートル単位の正のX範囲)は、先頭のゼロでパッドされた5桁の非10進数である。
-X-X Extends5+1-X(センチメートル単位の正のX範囲)は、先頭のゼロでパッドされた5桁の非10進数である。
+Y+Y Extends5+1+Y(センチメートル単位の正のY範囲)は、先頭のゼロでパッドされた5桁の非10進数である。
-Y-Y Extends5+1-Y(センチメートル単位の正のY範囲)は、先頭のゼロでパッドされた5桁の非10進数である。
AXDifference6+1= “AX:”(針の終点X)”+”または”-“10分の1ミリメートルの10進数
AYDifference6+1= “AY:”(針の終点Y)”+”または”-“10分の1ミリメートルの10進数
MXMulti-Design Start6+1= “MX:”(前のファイルの針の終点X)”+”または”-“10分の1ミリメートルの10進数
MYMulti-Design Start6+1= “MY:”(前のファイルの針の終点Y)”+”または”-“10分の1ミリメートルの10進数
PDPrevious Desing?9+1= “PD:”(前のファイル) “******”(単一ファイルの場合)
40x1a 0x20 0x20 0x20 または 0x1a 0x00 0x00 0x00
ヘッダーデータの終わり
3840x20

ボディ

ボディにはスティッチ情報が記載されています。1スティッチを3バイトの情報として納められています。初めの2バイトはX座標、Y座標、3バイト目は加えてジャンプスティッチや色変え情報など・コマンド情報を含んでいます。

ビット単位に細かく意味があるので詳細を見てみましょう。

76543210
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3
Byte 3jumpcolor
change
y+81y-81x-81x+81setset

スティッチ命令

3バイト目の0,1ビットがONの場合、針を落とします。この命令の場合、座標を変更せずに針を落とすことになります。

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000000000x00
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000000000x00
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb000000110x03
スティッチ命令

ジャンプ命令

3バイト目の7ビットがONの場合、針を落とさずに移動する場合ジャンプ命令となります。この例ではx座標を右に10移動します。

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000001010x05
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000000000x00
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb100000000x80
ジャンプ命令

糸色替え命令

3バイト目の6,7ビットがONの場合、糸色替え命令になります。DSTファイル上には色情報は保持しておらず、あらかじめマシンで色情報を設定していると思います。

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000001010x00
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000000000x00
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb100000000xC0
糸色変え命令

その他

ファイルは最後にトリプレット(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)

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000000000x00
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000000000x00
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb100000110x03
原点のスティッチ

次に10ミリ右に移動して針を落とします。(0x09 0x04 0x07)

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000010010x09
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000001000x04
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb000001110x07
右に移動してスティッチ

次に10ミリ上に移動して針を落とします。(0x90 0x20 0x23)ここからわかるように移動は相対座標です。

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b100100000x90
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b001000000x20
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb001000110x23
上に移動してスティッチ

次に10ミリ左に移動して針を落とします。(0x06 0x08 0x0B)

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000001100x06
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000010000x08
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb000010110x0B
左に移動してスティッチ

最後に10ミリ下に移動して針を落とします。(0x60 0x10 0x13)

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b011000000x60
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000100000x10
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb000100110x13
下に移動してスティッチ

再度に終了コマンドをセットします。(0x00 0x00 0xF3)

765432102進数16進数
Byte 1y+1y-1y+9y-9x-9x+9x-1x+1b000000000x00
Byte 2y+3y-3y+27y-27x-27x+27x-3x+3b000000000x00
Byte 3jumpcolor
change
y+81y-81x-81x+81setsetb001000110xF3
終了コマンド

刺繍してみる

実際にバイナリを書いて刺繍データを作成してみます。

データをTAJIMAの彩で読み込んでみます。四角が表示されていますね。

刺繍もできました。きちんと1cmサイズの四角が作れています。

というわけで、DSTファイルの理解と作成ができました。DSTファイルにはほかにもTRIMやSEQUINコマンドなどもあります。参考サイトも下に記載しますのでご参照下さい。

参考

Embroidery format DST - EduTech Wiki
Technical Info
タイトルとURLをコピーしました