Jump to content

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


VitAl2013

Recommended Posts

VitAl2013

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

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

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

Link to post
Share on other sites


brigval

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

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

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

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

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

Link to post
Share on other sites
VitAl2013

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

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

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

413200E0010D0A706167655F6E756D6265720001E0020D0A

686569676874002D861890CEDE6244E0020D0A

7769647468002F8F40E0020D0A64

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

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

Link to post
Share on other sites
brigval

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

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

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

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

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

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

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

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

Link to post
Share on other sites
Сайлар

VitAl2013,brigval:

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

Link to post
Share on other sites
VitAl2013

Вот. 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" даёт прямое кол-во листов. И так искать наверно правильнее чем первый вариант.

Link to post
Share on other sites
Сайлар

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

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

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

Link to post
Share on other sites
Сайлар

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

Link to post
Share on other sites
VitAl2013

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

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

Link to post
Share on other sites
Сайлар

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

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

Link to post
Share on other sites
brigval

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

Хорошая программка. Попробовал на несколькольких файлах. Работает правильно.
Link to post
Share on other sites
Сайлар

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

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

Link to post
Share on other sites
VitAl2013

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

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

Link to post
Share on other sites
Сайлар

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

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

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

Link to post
Share on other sites
VitAl2013

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

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

page_check.drw.zip

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

post-1462-1270183287_thumb.png

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

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

Link to post
Share on other sites
Сайлар

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

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

page_check.drw.zip

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

post-1462-1270183287_thumb.png

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

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

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

Link to post
Share on other sites
VitAl2013

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

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

saved_unit

Писмотрюсь.

пока ничего.

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

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

Link to post
Share on other sites
VitAl2013

Вот задачка:

post-1462-1270364962_thumb.png

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

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

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

page_check.drw.zip

Link to post
Share on other sites
VitAl2013

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

post-1462-1270437542_thumb.png

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

drawinfo_function.zip

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

Link to post
Share on other sites
Сайлар

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

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

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

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Anat2015
      Все - не надо. Искровой промежуток - это между проволокой и столом. Для начала хотя бы тестером стрелочным, если появится какая то зацепка, тогда уже осциллограф. Измерять в том режиме, в котором появляется ошибка, сравнивать показания (с ошибкой и без) между собой. Измерять, как переменку, так и постоянную составляющую. Если он - ваш, то за что ему деньги платят? Пускай лампочки идет менять на склад DNS.
    • статист
      Кстати, один из немногих выходов к "морю" в Питере =)
    • Fedor
      Лещей и подлещиков ловят у сливной трубы  очистных в Неву  на Канонерке :) 
    • BSV1
      Интересный доклад М.В. Ковальчука про это "все" Директор «Курчатовского института»: Некая элита пытается поработить планету и вывести новую "породу" людей (полный текст) (aftershock.news)
    • maxx2000
      @kirya.tex осталось сменить программу 
    • maxx2000
      Напоминаю, тема позитивная. Создайте Негативную тему и там ищите негатив 
    • kirya.tex
      Доброго времени суток. Ни как не получается настроить чистовую операцию. Если использую продвинутую поворотную, не дорезает дно канавки.  Морфи нормально обрабатывает начало шнека. Пробовал разбивать геометрию. Просил менять форматы сохранения (STEP, X.T, iges). Менял настройки в траекториях. Бурда в общем получается. Мастеркам 2022. Шнек
    • статист
      Вот эта, кстати, любимица поговорить за ковид тоже имеет американские корни: https://ru.wikipedia.org/wiki/Баранова,_Анча_Вячеславовна На удивление, все они генетики, и все в сша работают. Но рассказывают нам про ковид. На радио, тв, в интернетах, в конференциях наших выступают, наверное им еще большие деньги за это платят.   Я боялся, что если я начну ее еще жарить, то она вообще куда нибудь убежит.
    • nein
      @Anat2015 Спасибо. Будем искать...  К сожалению, наш электроник не слишком высокой квалификации или чересчур ленивый - пытается отказаться просматривать все цепи в искровом промежутке с осциллографом...
    • co11ins
      Переобуваются Правильно.  сначала нужно прожарить))
×
×
  • Create New...