Перейти к публикации

Внутренности drw файла


VitAl2013

Рекомендованные сообщения

Как определить (достать, вынуть) формат листов из этого файла? В миллиметрах, загружаемый frm или ещё как-то. Хоть что-то.

Кол-во листов я уже научился определеять, может что-то ещё можно оттуда брать напрямую? Слои например.

Надо для программы моей.

Ссылка на сообщение
Поделиться на других сайтах


Как определить (достать, вынуть) формат листов из этого файла? В миллиметрах, загружаемый frm или ещё как-то. Хоть что-то.

Кол-во листов я уже научился определеять, может что-то ещё можно оттуда брать напрямую? Слои например.

Надо для программы моей.

Если открыть DRW тектовым редактором, то можно увидеть, что там перечисляются имена всех форматов. По именам форматов можно определить и форматы листов, если знать соответствие "имя формата - формат листа".

Наверное и количество листов можно определить по количеству имен форматов.

Ссылка на сообщение
Поделиться на других сайтах

Ну я в принцыпе так и вычисляю сколько страниц в чертеже.

Считаем сколько PicturePrimdata, потом полученное делим на 2. Получаем кол-во листов.

Относительно формата - да нашёл вот это:

413200E0010D0A706167655F6E756D6265720001E0020D0A

686569676874002D861890CEDE6244E0020D0A

7769647468002F8F40E0020D0A64

Жирным это слова "A2, height, width" - имя формат как оно было обозвано создателем (может быть хоть драхмапутра), высота, ширина. Но извлечь хоть сколько нибудь полезную информацию из остального увы не удаётся.

Если кто знает, догадался или знает как получить - прошу не стеснятся, отписаться.

Ссылка на сообщение
Поделиться на других сайтах

Ну я в принцыпе так и вычисляю сколько страниц в чертеже.

Считаем сколько PicturePrimdata, потом полученное делим на 2. Получаем кол-во листов.

Относительно формата - да нашёл вот это:

Жирным это слова "A2, height, width" - имя формат как оно было обозвано создателем (может быть хоть драхмапутра), высота, ширина. Но извлечь хоть сколько нибудь полезную информацию из остального увы не удаётся.

Если кто знает, догадался или знает как получить - прошу не стеснятся, отписаться.

Для каждого листа можно получить? А как эти места, вделенные жирным, найти программно?

А вообще, у Вас интересный вопрос.

Например, из сборочного чертежа, открытом в текстовом редакторе, оказывается, можно получить всю номенклатуру составных частей сборки (возможно, и количество, но пока не ясно как). Имя модели, имена форматов (об этом я уже говорил). Версию ProE... По крайней мере, для чертежей WF4 это так.

Ссылка на сообщение
Поделиться на других сайтах

VitAl2013,brigval:

Дайте любой многостраничный чертеж drw (без моделей) от WF 4-5 - посмотрю что можно сделать.

Ссылка на сообщение
Поделиться на других сайтах

Вот. test01.zip

Исходная информация такая:

1. 5 листов (А4, А3, А2, А1, А0) Размеры выставлены в мм но могло чтото соскочить и они окажуться в дюймах. (мм делить на 25.4)

2. Модели в нём нет, это только пустой чертёж. Даже без форматок.

А как эти места, вделенные жирным, найти программно?

Если перевести этот шеснадцатиричный код в ASCII то там будут эти слова. Каждые 2 цифры-буквы это символ. Жирных цифр в 2 раза больше чем букв в слове.

У меня такая мысль, даже если пока нельзя будет вычленить цифры, то пока использовать шаблоны (надо вычленнить шаблоны и понять как их логически вычислить). То есть производить сравнение с этим кодом, а не с конкретными цифрами. Также помнится когда я был ещё в классе 3 мы олмали сэйвы к играм через нортон и волков, и была программа которая какимто образом меняла цифры прямого шестнадцатиричного кода местами. Точнее так, мы знали например кол-во оставшихся денег в игре, заводили калькулятор, писали десятичное значение, переводили его в шестнадцатиричное, потом скармливали его маленькой подпрограмме которая меняла всё местами, а потом уже полученное искали в сэйв файле. Поечему она меняла и как я до сих пор не знаю.

test01_6.drw.zipТут я добаил 6й лист формата A0, получается 2 последних листа должны быть одинаковы.

Вот тут я скрыл всё одинаковое:post-1462-1269833188_thumb.png

Ещё немного поанализировав код получил такую картину:test02_6.drw.zip

Так и не понял откуда выцарапать высоты с широтами, но обнаружил что поиск кол-ва повторов ".frm" даёт прямое кол-во листов. И так искать наверно правильнее чем первый вариант.

Ссылка на сообщение
Поделиться на других сайтах

Так и не понял откуда выцарапать высоты с широтами, но обнаружил что поиск кол-ва повторов ".frm" даёт прямое кол-во листов. И так искать наверно правильнее чем первый вариант.

Так дела не делаются )). Мне кажется, что ".frm" показатель количества листов только если у Вас чертеж без форматок.

Просмотрев файлы, думаю что вероятнее всего будет довольно сложно напрямую достать размер чертежа. Поэтому рекомендую все-таки сделать соответствие имени формата и формата листа (как Вам советовал brigval во 2 посте).

Ссылка на сообщение
Поделиться на других сайтах

3 файла собственно маловато, чтобы разобраться со структурой размеров форматов. Вот набросал на основании их программку, проверьте внимательнее...

Ссылка на сообщение
Поделиться на других сайтах

Дело в том что предполагается работать с неизвестными и кратно удлинёнными форматами файлов. Так что надо выцарапать напрямую размер. Есть вариант, но он предполагает сохранение каждого листа в stp формат, зато там прям английским по белому расписано сколько на сколько он там есть. Опять же конвертера (желательно консольного) напрямую я не знаю (вероятней всего его совсем нет). Придётся задействовать ProE как таковой, может в сайлент режиме...

А программка-то работает кажись, поделитесь алгоритмом. :music_serenade: Мне его на AutoIT надо реализовать. Либо сделайте консольное исполнение с выводом в txt файл. Или dllкой с выводом в массив.

Ссылка на сообщение
Поделиться на других сайтах

.. на AutoIT надо реализовать. Либо сделайте консольное исполнение с выводом в txt файл. Или dllкой с выводом в массив.

Алгоритм мне не жалко, но лучше Вам его не видеть )) - на AutoIT его точно не переведешь. Напишите в личке свою почту - скину dll-ку.

Ссылка на сообщение
Поделиться на других сайтах

3 файла собственно маловато, чтобы разобраться со структурой размеров форматов. Вот набросал на основании их программку, проверьте внимательнее...

Хорошая программка. Попробовал на несколькольких файлах. Работает правильно.
Ссылка на сообщение
Поделиться на других сайтах

Хорошая программка. Попробовал на несколькольких файлах. Работает правильно.

Благодарю за тесты.

Ссылка на сообщение
Поделиться на других сайтах

А мы можем обсудить то как работает эта программа тут? Или это секретная информация? Я вижу парсинг файла, но до конца не могу понять логику, особенно функцию GetDoubleValue.

Заsendалил пока в личку.

Ссылка на сообщение
Поделиться на других сайтах

А мы можем обсудить то как работает эта программа тут? Или это секретная информация? Я вижу парсинг файла, но до конца не могу понять логику, особенно функцию GetDoubleValue.

Заsendалил пока в личку.

Раз я дал исходники, то значит уже не секретная )) Просто мне кажется форум не совсем удобного формата для такого обсуждения. Лучше постучитесь ко мне в icq 1284941.

Ссылка на сообщение
Поделиться на других сайтах

Я поанализировал код и получается, что программа берёт значение мм или дюймов для размеров чертежа (высота теста, настройка линий, настройка вспомогательных линий для размеров, просто координаты положения обьектов на чертеже и пр.) как размерность первого листа.

И ещё не всегда корректно работает, например вот:

page_check.drw.zip

У меня отпределяет размер второго листа так :

post-1462-1270183287_thumb.png

К теме отношения непосредственного не имеет, но программа не юникод - шрифт ушёл в вопросы (автору на заметку). Это у меня винда настроенна на английский для программ не поддерживающих юникод.

А по поиску ".frm" - действительно, не всегда Прошка пишет расширение форматки.

Ссылка на сообщение
Поделиться на других сайтах

Я поанализировал код и получается, что программа берёт значение мм или дюймов для размеров чертежа (высота теста, настройка линий, настройка вспомогательных линий для размеров, просто координаты положения обьектов на чертеже и пр.) как размерность первого листа.

И ещё не всегда корректно работает, например вот:

page_check.drw.zip

У меня отпределяет размер второго листа так :

post-1462-1270183287_thumb.png

К теме отношения непосредственного не имеет, но программа не юникод - шрифт ушёл в вопросы (автору на заметку). Это у меня винда настроенна на английский для программ не поддерживающих юникод.

А по поиску ".frm" - действительно, не всегда Прошка пишет расширение форматки.

Повторяю в очередной раз - я честное слово совсем не собирался эту абстрактную программку продавать, а только показал в ней в какую сторону копать. И дал код поэтому. И шрифт ушел в вопросы также поэтому )) Доработать особых проблем не вижу. Навскидку - посмотрите внимательнее в файле в блоке описания форматок чему равен параметр saved_unit - возможно из него будет правильнее брать единицы размерности листов.

Ссылка на сообщение
Поделиться на других сайтах

программку продавать

Об этом я ни слова не сказал. Я просто для других проектов (о шрифте) - просто чтоб обратить внимание.

saved_unit

Писмотрюсь.

пока ничего.

Вот 2 файла, различные только параметром drawing_units(если смотреть через drawing options - через Прошку)mm_inch.zip

Я продолжил дискуссию тут, так как считаю что другим полезно будет знать и участвовать в беседе. Наверняка ктото тоже думает разработать чтото для своих нужд под прошку. Также нередко были сообщения с вопросом как распотрашить тот или иной файл от Прошки. Я не думаю что мы уходим от темы Pro/Engineer - мы же его файлы читаем и интерпретируем.

Ссылка на сообщение
Поделиться на других сайтах

Вот задачка:

post-1462-1270364962_thumb.png

Как видно из скрина, моя программка опредлила всё точно также как и програмка Olivaw за исключением что она ещё бинарники в цифры не переводит. Тут главное то где стоит мм лист. Обе определяют его не правильно.

Чертёж создавался так что последние определённые программами 2 листа формата A3 создавались в конце и вставлялись между 1ым и 2м листом. Прошка дописывает их содержимое просто в конец. Значит гдето должен быть индекс листа ещё. Надо его найти.

Остальным же на заметку, в чертеже как в word документе все ходы записаны, по принцыпу "кто на какой машине и за какое время" (там прям минуты записаны). То есть если кто-то хочет вывести кого-то на чистую воду и обоснованно пообвинять в плагиате, а то и просто как-то воспользоваться этими данными (ну там конкурс, например, на кто быстрее сделает чертёж) то открывайте чертёж в блокноте.

page_check.drw.zip

Ссылка на сообщение
Поделиться на других сайтах

Вот моё повторение на AutoIt:

post-1462-1270437542_thumb.png

Это сама прога и исходники с закоментированными функциями слежения и подсказками:

drawinfo_function.zip

Работает не идеально, но иногда корректнее. Проблема порядка листов не поборота.

Ссылка на сообщение
Поделиться на других сайтах

Как видно из скрина, моя программка опредлила всё точно также как и програмка Olivaw за исключением что она ещё бинарники в цифры не переводит. Тут главное то где стоит мм лист. Обе определяют его не правильно.

Чертёж создавался так что последние определённые программами 2 листа формата A3 создавались в конце и вставлялись между 1ым и 2м листом. Прошка дописывает их содержимое просто в конец. Значит гдето должен быть индекс листа ещё. Надо его найти.

Так. Мне кажется, индекс листа ничего не даст, хотя он находится в параметре page_number (сразу после имени форматки). Просто в моей программке расчет высоты и ширины привязаны к размерности, а это не совсем правильно. Нужно делать по-другому.

Остальным же на заметку, в чертеже как в word документе все ходы записаны, по принцыпу "кто на какой машине и за какое время" (там прям минуты записаны). То есть если кто-то хочет вывести кого-то на чистую воду и обоснованно пообвинять в плагиате, а то и просто как-то воспользоваться этими данными (ну там конкурс, например, на кто быстрее сделает чертёж) то открывайте чертёж в блокноте.

Зачем же по этому поводу в блокноте рыться? ))) Если я не ошибаюсь, в самом прое есть аудит..

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...