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

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



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

СообщениеДобавлено: Вт Dec 26, 2006 9:46 am    Заголовок сообщения: Ответить с цитатой

а у вас случайно нет каких нить данных, сжатых по алгоритму "deflation" Smile я щас начинаю писать алгоритм декодирования, и хотелось на чем нибудь проверятьSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



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

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

и можно еще такой вопросик по deflate алгоритму.Smile в помощь молодому програмисту....
я прочел rfc 1951. общую идею вроде понял(то, что основывается на кодировании хафмана и алгоритме lz1977), но некоторые моменты остались неясны...точнее вопросы реализации....
как я понял сперва идут 3 бита(заголовок)
BFINAL и BTYPE
потом в rfc описан общий алгоримт
do
read block header from input stream.
if stored with no compression
skip any remaining bits in current partially
processed byte
read LEN and NLEN (see next section)
copy LEN bytes of data to output
otherwise
if compressed with dynamic Huffman codes
read representation of code trees (see
subsection below)
loop (until end of block code recognized)
decode literal/length value from input stream
if value < 256
copy value (literal byte) to output stream
otherwise
if value = end of block (256)
break from loop
otherwise (value = 257..285)
decode distance from input stream

move backwards distance bytes in the output
stream, and copy length bytes from this
position to the output stream.
end loop
while not last block
сразу возникает вопрос,а если будет случай "compressed with fixed Huffman codes", алгоритм его не учитывает что ли...
еще не совсем пока понятна след табличка
Extra Extra Extra
Code Bits Length(s) Code Bits Lengths Code Bits Length(s)
---- ---- ------ ---- ---- ------- ---- ---- -------
257 0 3 267 1 15,16 277 4 67-82
258 0 4 268 1 17,18 278 4 83-98
259 0 5 269 2 19-22 279 4 99-114
260 0 6 270 2 23-26 280 4 115-130
261 0 7 271 2 27-30 281 5 131-162
262 0 8 272 2 31-34 282 5 163-194
263 0 9 273 3 35-42 283 5 195-226
264 0 10 274 3 43-50 284 5 227-257
265 1 11,12 275 3 51-58 285 0 258
266 1 13,14 276 3 59-66
т.е. когда мы объединили символы и длины...что в данном случае означает столбец биты?Smile
Сорри, если вопросы глупыеSad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



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

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

и еще такой вопросик Smile
степень сжатия, что пишется в dgn заголовке, имеются ввиду константы
00 - no compression
01 - compressed with fixed Huffman codes
10 - compressed with dynamic Huffman codes
11 - reserved (error) ?
или немного не то?Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



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

СообщениеДобавлено: Сб Янв 06, 2007 12:38 am    Заголовок сообщения: Ответить с цитатой

deflation используется такими известными программами как zip и gzip. Так что покрути их и получишь образцы.

Так же имеется бесплатная библиотека zlib, она даже вроде как с исходниками - тоже поддерживает deflation согласно стандарту.

Что означает compressionLevel я не разбирался - тут ты уж сам смотри. Какие-то смутные воспоминания говорят мне, что это может быть просто уровень сжатия от 0 до 9. 0 - без компрессии, 9 - максимальная компрессия.
Но я могу ошибаться, давно сжатием не интересовался, лет эдак так 11-12 уже.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



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

СообщениеДобавлено: Пт Янв 12, 2007 10:33 am    Заголовок сообщения: Ответить с цитатой

а еще такой вопросик... не знаю, насколько правильно понял, но прочел что compound fil'ы можно просматривать ( их структуру) через DocFile Viewer, которая входит в пакет MSVS. Это верно?
я скачал dgn файл, но он не просматривается Sad

есть такая функция StgIsStorageFile проверки файла является ли он хранилищем ( Istorage), я проверил пробный dgn файл-она выдала ошибку. т.е. dgn не совсем хранилище(Storage), а только его отдельные части представляют собой ФС, или я снова не так понял...
и в общем то такой код выдает ошибку
IStorage* pIStorage = NULL;
HRESULT hr;
hr = StgOpenStorage( L"C:\\test.dgn", NULL, STGM_READ|STGM_SHARE_EXCLUSIVE, NULL,0,
&pIStorage);
if(FAILED(hr))
{
AfxMessageBox(L"Error");
return ;
}
Т.е. либо у меня кривой dgn файл, либо к ним обращаться так нельзя...Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



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

СообщениеДобавлено: Сб Янв 13, 2007 5:26 pm    Заголовок сообщения: Ответить с цитатой

sergey писал(а):
а еще такой вопросик... не знаю, насколько правильно понял, но прочел что compound fil'ы можно просматривать ( их структуру) через DocFile Viewer, которая входит в пакет MSVS. Это верно?


Да, docviewer позволяет смотреть dgn v8. На уровне stream'ов.

sergey писал(а):
я скачал dgn файл, но он не просматривается Sad


На текущий момент в ходу 3 версии dgn-файлов. dgn v7, dgn v8 и dgn v8.1 (xm). Compound files только dgn v8 и v8.1, dgn v7 - это обычный плоский файл.
Вероятно ты такой и скачал.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergey



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

СообщениеДобавлено: Пн Янв 15, 2007 3:01 pm    Заголовок сообщения: Ответить с цитатой

все нормально... я не тот файл оказывается скачал...скорей всего версии 7....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anton



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

СообщениеДобавлено: Пт Июн 22, 2007 8:57 am    Заголовок сообщения: Ответить с цитатой

Уважаемые господа!
Можете ли вы поделиться спецификацией на DGN v8? Или хотя бы подсказать, где ее можно взять без всяких заказов на спецификацию и отправления его на адрес Бентли.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



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

СообщениеДобавлено: Сб Июл 07, 2007 12:47 am    Заголовок сообщения: Ответить с цитатой

Anton писал(а):
Уважаемые господа!
Можете ли вы поделиться спецификацией на DGN v8? Или хотя бы подсказать, где ее можно взять без всяких заказов на спецификацию и отправления его на адрес Бентли.


К сожалению не могу поделиться. Подписался что не буду распространять.
На конкретные вопросы постараюсь ответить (если смогу конечно).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anton



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

СообщениеДобавлено: Вт Июл 17, 2007 6:42 pm    Заголовок сообщения: Ответить с цитатой

Конкретных вопросов много.

Во-первых, интересует структура заголовка элемента: какой слой, тип, цвет, атрибуты и т.д.
Во-вторых, константы определяющие атрибуты.
В-третьих, структура данных TCB, списка слоев и самых простых элементов - Line, LineString, Shape, Ellipse, Cell Header
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
laggi



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

СообщениеДобавлено: Ср Июл 18, 2007 9:22 pm    Заголовок сообщения: Ответить с цитатой

Anton писал(а):
Конкретных вопросов много.

Во-первых, интересует структура заголовка элемента: какой слой, тип, цвет, атрибуты и т.д.
Во-вторых, константы определяющие атрибуты.
В-третьих, структура данных TCB, списка слоев и самых простых элементов - Line, LineString, Shape, Ellipse, Cell Header


Так все эти структуры определы в заголовках. И константы тоже.
TCB в соответсвенно tcb.h, простые элементы и заголовок элемента - в mselems.h
Зачем для этого структура файла?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Профессиональное Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

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


Powered by phpBB © 2001, 2005 phpBB Group