Список форумов Конференция САПР Bentley MicroStation Конференция САПР Bentley MicroStation
www.ustation.ru
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

парсер DGN V8
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Профессиональное
Предыдущая тема :: Следующая тема  
Автор Сообщение
sergey



Зарегистрирован: 13.12.2006
Сообщения: 13

СообщениеДобавлено: Ср Dec 13, 2006 1:24 pm    Заголовок сообщения: парсер DGN V8 Ответить с цитатой

Народ, помогите,плиз, кто знает...
стоит задача - написать парсер для DGN V8 (с\с++).
есть какое то описание формата от бентли ( 130 страниц), англ читаю не "в легкую", пока прочел около 30 страничек, но не особо понял...
идет описание про основные потоки, источники данных и т.д.
а как это все в файле записано, в какой последовательности, пока не нашел, может будет описано позже....
может кто нить подсказать, как лучше сделать или хотя б дать хорошее описание( я готов руками его разобрать)....
заранее спасибо....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leonid
давно здесь сидим


Зарегистрирован: 28.01.2006
Сообщения: 598
Откуда: С.-Петербург

СообщениеДобавлено: Ср Dec 13, 2006 10:12 pm    Заголовок сообщения: Ответить с цитатой

вот так... парсер... ни больше ни меньше...
круто, млин... Very Happy
может здесь что найдется
DGNLib: a Microstation DGN (ISFF) Reader
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
sergey



Зарегистрирован: 13.12.2006
Сообщения: 13

СообщениеДобавлено: Ср Dec 13, 2006 11:15 pm    Заголовок сообщения: Ответить с цитатой

да был там ужеSad
запомнилась фраза...

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, толи платить надо, толи зарегится как то по хитрому..нов общем не получаетсяSad уже 5 день вожусьSad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



Зарегистрирован: 07.11.2006
Сообщения: 28
Откуда: WashDC

СообщениеДобавлено: Чт Dec 14, 2006 7:47 pm    Заголовок сообщения: Ответить с цитатой

sergey писал(а):

но на OpenDWG Alliance чо то не получается качнуть эту DGNdirect library, толи платить надо, толи зарегится как то по хитрому..нов общем не получаетсяSad уже 5 день вожусьSad


На OpenDWG надо регистрироваться, без регистрации не получится. Регистрация бесплатная, если для внутреннего пользования без права продажи (на сколько я помню).

Если тебе не критично наличие MS на машине - то зачем заморачиваться с отдельными пакетом? Пользуся бенлёвскими библиотеками...
В прочем, я openDgn не трогал сам, может быть оно и ничего себе. Бентля сами говорят, что они документацию альянсу предоставляют, но на этом - все. За работоспособность этих библиотек они ответсвенности не несут. Опять же XM имеет немного измененный формат файла, я не знаю - поддерживает openDGN эти изменения или нет.

У меня есть мой собственный (элементно-неполный) парсер и файл-вьювер для 8ки - так что если есть конкретные вопросы то давай, может чего полезного подскажу.
Файл-вьювер хотел даже в открытый доступ положить, но доводить его до нормального состояния лень - я его для собственных нужд написал, ибо иногда нужно узнать что там в конретном элементе лежит. Опять же всякие там технологические мелочи есть любопытные.

Такие дела.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



Зарегистрирован: 13.12.2006
Сообщения: 13

СообщениеДобавлено: Сб Dec 16, 2006 12:17 am    Заголовок сообщения: Ответить с цитатой

хм...а можно узнать что за бентлевские библиотеки?...
сорри, если вопрос ламерскийSad...
вопросов пока конкретных нет, так как я пока не особо разобрался с форматом файла..как,где записано....
да и с сжатием пока тоже не особо ясно..
если есть какие хорошие документашки( ну или вкраце,если такое возможно) - буду очень признателен.....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



Зарегистрирован: 13.12.2006
Сообщения: 13

СообщениеДобавлено: Пн Dec 18, 2006 2:51 pm    Заголовок сообщения: Ответить с цитатой

up)
очень надо.....плиз Confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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 Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



Зарегистрирован: 07.11.2006
Сообщения: 28
Откуда: WashDC

СообщениеДобавлено: Ср Dec 20, 2006 4:58 pm    Заголовок сообщения: Ответить с цитатой

sergey писал(а):
а если юзать MS библиотеки, то они будут работать тока при установке на машине самой MS получается? 6,7 мне не надо, мне надо именно 8 Sad


Именно с 8кой я так и работаю. С 7кой, к стати, не пробовал. XM скорее всего должна работать тоже, в ближайшее время проверю, мне всё равно разбираться с её внутренним устройством. Уже наступил на разницу в оконной подсистеме - у XM она, похоже, другая.

Да, MS должна быть установлена и должна быть в путях - из нее берутся Dll'ли. Если тебе нужно только чтение, то и Benley Viewer тоже подойдет - я пробовал. У него только функции записи в файл отрублены (причем есть подозрение что софтверно), а всё остальное работает (ну почти всё Smile))).

Отдельно 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? или я вообще не так понял?Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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 не всегда будет стоять на машине....
придется самому разбираться..


О! шушпанчик! Smile
Разбирайся, дело хорошее. У меня подозрения какие-то (без обид - просто интересно) - ты, случаем, не студент?

sergey писал(а):
у меня есть какое то описание от bentley.. пробую в нем разобраться
начинается оно с описания нескольких потоков ( они сами так назвали - stream )- file header, session information, file manifest,..
т.е. получается в файле спеврва идут эти данные а потом непосредственно element list? или я вообще не так понял?Sad


MS файл представляет из себя compound file, соответсвующий Microsoft Structured Storage Reference Implementation (оно же ActiveX structured storage model ).
Коворя грубым простым языком (плаката) - это виртуальная дискетка со своим FAT и своими файлами. Соответственно всё распределение памяти на этой фиртуальной дискетке идет "секторами" (как и на физической). Цепочка связанных указателей в FAT секторе образует stream. Ну и так далее и тому подобное.
FAT-то знаешь, наверное?

Для доступа к такого типа файлам обычные люди пользуют IStorage and IStream интерфейсы. Они описаны в Platform SDK от микрософта. Примеров использования этих интерфейсов много в сети.

sergey писал(а):
непосредственно element list? или я вообще не так понял?Sad


Непосредственно списка элементов там нет. Элементы лежат в модели (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, опыт написания парсеров,как и вообще программирования, конечно, есть, но не сильно большой...Sad
даа, оказывается файл немного сложнее, чем мне казалось....
буду потихоньку возится...если будут вопросики - буду задавать Smile надеясь на какую нибудь подсказкуSmile
Т.е. как я понял, файл аналогичен структуре Fat.
с IStorage and IStream не работал, и к большому сожалению, даже не слышал. не приходилось....Sad
а можно еще вопросик, я пока не все прочел то, что есть, возможно дальше где то и будет указано...так сказать для общего понимания концепции... с ваших слов, я понял,что файл - подобен ФС, а с какого места эта виртуальная ФС записана непосредственно в файл, ну например с 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 раза...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Профессиональное Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group