Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Ср Dec 13, 2006 1:24 pm Заголовок сообщения: парсер DGN V8 |
|
|
Народ, помогите,плиз, кто знает...
стоит задача - написать парсер для DGN V8 (с\с++).
есть какое то описание формата от бентли ( 130 страниц), англ читаю не "в легкую", пока прочел около 30 страничек, но не особо понял...
идет описание про основные потоки, источники данных и т.д.
а как это все в файле записано, в какой последовательности, пока не нашел, может будет описано позже....
может кто нить подсказать, как лучше сделать или хотя б дать хорошее описание( я готов руками его разобрать)....
заранее спасибо.... |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Ср Dec 13, 2006 11:15 pm Заголовок сообщения: |
|
|
да был там уже
запомнилась фраза...
Does DGNLib support Microstation V8 DGN Files?
No, they are a substantially different format, and are not recognised at all. The DGNdirect library from the OpenDWG Alliance does support DGN v8.
но на OpenDWG Alliance чо то не получается качнуть эту DGNdirect library, толи платить надо, толи зарегится как то по хитрому..нов общем не получается уже 5 день вожусь |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Чт Dec 14, 2006 7:47 pm Заголовок сообщения: |
|
|
sergey писал(а): |
но на OpenDWG Alliance чо то не получается качнуть эту DGNdirect library, толи платить надо, толи зарегится как то по хитрому..нов общем не получается уже 5 день вожусь |
На OpenDWG надо регистрироваться, без регистрации не получится. Регистрация бесплатная, если для внутреннего пользования без права продажи (на сколько я помню).
Если тебе не критично наличие MS на машине - то зачем заморачиваться с отдельными пакетом? Пользуся бенлёвскими библиотеками...
В прочем, я openDgn не трогал сам, может быть оно и ничего себе. Бентля сами говорят, что они документацию альянсу предоставляют, но на этом - все. За работоспособность этих библиотек они ответсвенности не несут. Опять же XM имеет немного измененный формат файла, я не знаю - поддерживает openDGN эти изменения или нет.
У меня есть мой собственный (элементно-неполный) парсер и файл-вьювер для 8ки - так что если есть конкретные вопросы то давай, может чего полезного подскажу.
Файл-вьювер хотел даже в открытый доступ положить, но доводить его до нормального состояния лень - я его для собственных нужд написал, ибо иногда нужно узнать что там в конретном элементе лежит. Опять же всякие там технологические мелочи есть любопытные.
Такие дела. |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Сб Dec 16, 2006 12:17 am Заголовок сообщения: |
|
|
хм...а можно узнать что за бентлевские библиотеки?...
сорри, если вопрос ламерский...
вопросов пока конкретных нет, так как я пока не особо разобрался с форматом файла..как,где записано....
да и с сжатием пока тоже не особо ясно..
если есть какие хорошие документашки( ну или вкраце,если такое возможно) - буду очень признателен..... |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Пн Dec 18, 2006 2:51 pm Заголовок сообщения: |
|
|
up)
очень надо.....плиз |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Пн Dec 18, 2006 11:43 pm Заголовок сообщения: |
|
|
sergey писал(а): | хм...а можно узнать что за бентлевские библиотеки?... |
При установке MS отметь, что хочешь средства разработки поставить - я не помню как там опция называется. Тебе поставится директория mdl и jmdl со всеми библиотеками.
У меня на машине это:
c:\Program Files\Bentley\Program\MicroStation\mdl\library\
Там лежит куча lib'ов, тебе надо минимум mdlbltin.lib и dgnfileio.lib. Описание функций берешь из fdf-ов... Линкуешь к проэкту и вперед. Работает как с 6-кой, так и с 7-ой.
sergey писал(а): | вопросов пока конкретных нет, так как я пока не особо разобрался с форматом файла..как,где записано....
да и с сжатием пока тоже не особо ясно..
если есть какие хорошие документашки( ну или вкраце,если такое возможно) - буду очень признателен..... |
У меня есть полное описание формата файла, но целиком дать не могу оно confidencial. Бенля просили не распространять. По конретным элементам спрашивай - посмотрю. Но, вероятно, оно где-то ходит в сети - пошукай (они его в питер кому-то там давали - не верю что не разошлось). Опять же у меня 2х-летний бета-draft, может что поменялось.
Но оно и нафиг не надо, пользуй стандартные mdl-like функции, они все описаны. Они все работают с MSElementDescr и MSElement структурами. В общем никакой разницы с MDL-программированием нет, разве что все "рисовальные" функции не работают, зато спокойно мользуешься виндовыми окнами...
Для начала либо вызываешь mdlSystem_newDesignFile либо через mdlWorkDgn_openFile\mdlWorkDgn_closeFile - и флаг в руки и барабан на шею... |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Ср Dec 20, 2006 2:34 pm Заголовок сообщения: |
|
|
а если юзать MS библиотеки, то они будут работать тока при установке на машине самой MS получается? 6,7 мне не надо, мне надо именно 8 |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Ср Dec 20, 2006 4:58 pm Заголовок сообщения: |
|
|
sergey писал(а): | а если юзать MS библиотеки, то они будут работать тока при установке на машине самой MS получается? 6,7 мне не надо, мне надо именно 8 |
Именно с 8кой я так и работаю. С 7кой, к стати, не пробовал. XM скорее всего должна работать тоже, в ближайшее время проверю, мне всё равно разбираться с её внутренним устройством. Уже наступил на разницу в оконной подсистеме - у XM она, похоже, другая.
Да, MS должна быть установлена и должна быть в путях - из нее берутся Dll'ли. Если тебе нужно только чтение, то и Benley Viewer тоже подойдет - я пробовал. У него только функции записи в файл отрублены (причем есть подозрение что софтверно), а всё остальное работает (ну почти всё ))).
Отдельно Dll'ки не работают - у бентлей проверка встроена в mdlbltin.dll. Так же Рей Б. утверждал, что для такой работы не нужна лицензия, ибо как ему кажется они проверяют лицензию только при страте графической подсистемы - но это я не проверял, и думаю он ошибается. |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Чт Dec 21, 2006 3:28 pm Заголовок сообщения: |
|
|
к сожалению, ms не всегда будет стоять на машине....
придется самому разбираться..
у меня есть какое то описание от bentley.. пробую в нем разобраться
начинается оно с описания нескольких потоков ( они сами так назвали - stream )- file header, session information, file manifest,..
т.е. получается в файле спеврва идут эти данные а потом непосредственно element list? или я вообще не так понял? |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Чт Dec 21, 2006 3:49 pm Заголовок сообщения: |
|
|
и еще вопросик по поводу сжатия...там применяется сжатие хаффмана? а оно сразу ко всему файлу или к отдельным блокам(например заголовку,фигуре и т.д.) |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Чт Dec 21, 2006 7:08 pm Заголовок сообщения: |
|
|
sergey писал(а): | к сожалению, ms не всегда будет стоять на машине....
придется самому разбираться.. |
О! шушпанчик!
Разбирайся, дело хорошее. У меня подозрения какие-то (без обид - просто интересно) - ты, случаем, не студент?
sergey писал(а): | у меня есть какое то описание от bentley.. пробую в нем разобраться
начинается оно с описания нескольких потоков ( они сами так назвали - stream )- file header, session information, file manifest,..
т.е. получается в файле спеврва идут эти данные а потом непосредственно element list? или я вообще не так понял? |
MS файл представляет из себя compound file, соответсвующий Microsoft Structured Storage Reference Implementation (оно же ActiveX structured storage model ).
Коворя грубым простым языком (плаката) - это виртуальная дискетка со своим FAT и своими файлами. Соответственно всё распределение памяти на этой фиртуальной дискетке идет "секторами" (как и на физической). Цепочка связанных указателей в FAT секторе образует stream. Ну и так далее и тому подобное.
FAT-то знаешь, наверное?
Для доступа к такого типа файлам обычные люди пользуют IStorage and IStream интерфейсы. Они описаны в Platform SDK от микрософта. Примеров использования этих интерфейсов много в сети.
sergey писал(а): | непосредственно element list? или я вообще не так понял? |
Непосредственно списка элементов там нет. Элементы лежат в модели (2 substorage'а для граф. элементов и для контрол-элементов + model header as a stream), все модели лежат в storage Dgn-md, который видно уже в root-каталоге.
На сколько я помню, конечно. Лень лезть смотреть - но у тебя же в документации это всё написано поди. |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Чт Dec 21, 2006 7:24 pm Заголовок сообщения: |
|
|
sergey писал(а): | и еще вопросик по поводу сжатия...там применяется сжатие хаффмана? а оно сразу ко всему файлу или к отдельным блокам(например заголовку,фигуре и т.д.) |
MicroStation использует "deflation" алгоритм.
Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
Available in ftp://ds.internic.net/rfc/rfc1951.txt
Компрессуются как отдельные элементы, так и некоторые системные данные. Сжат или не сжат конкретный stream (или его часть) обьявляется в соответсвующем заголовке.
Скажем (для примера) в DesignFileHeader первые 4 байта это флаги. Если бит 0 set to 1 то со смещением в 4 байта (следующий unsigned int16) лежит UInt16 compressionLevel, который определяет степень сжатия. |
|
Вернуться к началу |
|
|
sergey
Зарегистрирован: 13.12.2006 Сообщения: 13
|
Добавлено: Пт Dec 22, 2006 3:37 am Заголовок сообщения: |
|
|
ну в общем то, вы правы...студент 5 курса, по работе надо разобраться с dgn, опыт написания парсеров,как и вообще программирования, конечно, есть, но не сильно большой...
даа, оказывается файл немного сложнее, чем мне казалось....
буду потихоньку возится...если будут вопросики - буду задавать надеясь на какую нибудь подсказку
Т.е. как я понял, файл аналогичен структуре Fat.
с IStorage and IStream не работал, и к большому сожалению, даже не слышал. не приходилось....
а можно еще вопросик, я пока не все прочел то, что есть, возможно дальше где то и будет указано...так сказать для общего понимания концепции... с ваших слов, я понял,что файл - подобен ФС, а с какого места эта виртуальная ФС записана непосредственно в файл, ну например с DesignFileHeader и т.д. Или там в корне другая концепция и лучше покопать в сторону IStorage and IStream? |
|
Вернуться к началу |
|
|
laggi
Зарегистрирован: 07.11.2006 Сообщения: 28 Откуда: WashDC
|
Добавлено: Пт Dec 22, 2006 5:53 pm Заголовок сообщения: |
|
|
sergey писал(а): | файл - подобен ФС, а с какого места эта виртуальная ФС записана непосредственно в файл, ну например с DesignFileHeader и т.д. Или там в корне другая концепция и лучше покопать в сторону IStorage and IStream? |
Да, ты правильно понял. Если очень хочется можешь попробовать что-то самописное. Для развлечения это неплохо, только эта задача тоже не то чтобы совсем простая.
Простенькую читалку compaund-файла можно в сети нарыть - какой нибудь codeguru или codeproject спасут отца русской демократии. Структуру каталогов и файлов они покажут. А уж далее по описанию формата...
Вообще это дело на годик, наверное. Может больше. Засисит от мозолистости мягкого места.
А если еще учесть что я всегда имел тенденцию ошибаться в сроках в 2 раза... |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|