Разбираясь как-то со сложными типами линий автокада пришлось разобраться как считать данные из файла .SHX
И вот к чему привели эксперименты
Исходные файлы:
style.shp
*5,15,QWET1
3,50,002,9,(0,0),001,9,(27,42),(0,0),4,50,0
*130,15,QWET2
3,50,002,9,(0,0),001,9,(27,42),(0,0),4,50,0
*210,15,QWET3
3,50,002,9,(0,0),001,9,(27,42),(0,0),4,50,0
style.shx(в бинарном виде)
41 75 74 6f 43 41 44 2d 38 36 20 73 68 61 70 65
73 20 31 2e 30 0d 0a 1a 05 00 d2 00 03 00 05 00
15 00 82 00 15 00 d2 00 15 00 51 57 45 54 31 00
03 32 02 09 00 00 01 09 1b 2a 00 00 04 32 00 51
57 45 54 32 00 03 32 02 09 00 00 01 09 1b 2a 00
00 04 32 00 51 57 45 54 33 00 03 32 02 09 00 00
01 09 1b 2a 00 00 04 32 00 45 4f 46
Разбор
Описание как формируется SHP файл есть в справке автокада
Руководство по адаптации/Формы и шрифты
или
Перейдем сразу к разбору .SHX
Первый 24-байт заголовок
41 75 74 6f 43 41 44 2d 38 36 20 73 68 61 70 65 73 20 31 2e 30 0d 0a 1a
25-26 — номер первой формы
05 00 При переводе в десятичные получим 5
27-28 — номер последней формы
d2 00 При переводе в десятичные получим 210
29-30 — количество форм
03 00 Количество форм = 3
Далее в зависимости от количества перечисление номера формы и длины байт данных формы
05 00 15 00 82 00 15 00 d2 00 15 00 Данная строка описывает: 5=21 байт, 130=21байт, 210=21байт
Далее сами формы в той же очередности что были перечислены длины.
51 57 45 54 31 00 03 32 02 09 00 00 01 09 1b 2a 00 00 04 32 00
51 57 45 54 32 00 03 32 02 09 00 00 01 09 1b 2a 00 00 04 32 00
51 57 45 54 33 00 03 32 02 09 00 0001 09 1b 2a 00 00 04 32 00
Где первые байты до 00 это название, а далее представление формы т.е.
Q W E T 1 003 050 002 009 000 000 001 009 027 042 000 000 004 050 000
Q W E T 2 003 050 002 009 000 000 001 009 027 042 000 000 004 050 000
Q W E T 3 003 050 002 009 000 000 001 009 027 042 000 000 004 050 000
В конце 45 4f 46 (EOF)
Используя эти данные можно написать собственный конвертер.
Надеемся данная информация поможет кому-нибудь еще.