Jump to content
VitAl2013

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

Recommended Posts

VitAl2013

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

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

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

Share this post


Link to post
Share on other sites


brigval

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

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

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

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

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

Share this post


Link to post
Share on other sites
VitAl2013

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

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

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

413200E0010D0A706167655F6E756D6265720001E0020D0A

686569676874002D861890CEDE6244E0020D0A

7769647468002F8F40E0020D0A64

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

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

Share this post


Link to post
Share on other sites
brigval

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

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

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

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

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

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

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

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

Share this post


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

VitAl2013,brigval:

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

Share this post


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

Share this post


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

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

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites
VitAl2013

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

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
brigval

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

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
VitAl2013

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

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

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites
VitAl2013

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

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

page_check.drw.zip

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

post-1462-1270183287_thumb.png

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

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

Share this post


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

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

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

page_check.drw.zip

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

post-1462-1270183287_thumb.png

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

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

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

Share this post


Link to post
Share on other sites
VitAl2013

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

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

saved_unit

Писмотрюсь.

пока ничего.

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

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

Share this post


Link to post
Share on other sites
VitAl2013

Вот задачка:

post-1462-1270364962_thumb.png

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

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

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

page_check.drw.zip

Share this post


Link to post
Share on other sites
VitAl2013

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

post-1462-1270437542_thumb.png

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

drawinfo_function.zip

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

Share this post


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

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

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

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

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

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

Share this post


Link to post
Share on other sites
VitAl2013

есть аудит

не знал.

Ещё момент есть, если форматка вставлялась как миллиметровая, но оказалась в дюймах, то надо парсить(выкусывать) не 3 символа, а 5. Чтоб получалось как 420/25.4=16,5354330... Вот если выкусить 5 символов, то получится 16.5354330539703, а если 3, то 16,53515625. И это не привязано к предидущему значению мм или дюймы. Тут какойто другой механизм.

Share this post


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

...Тут какойто другой механизм.

Мне кажется, что вы его скоро нащупаете.

Share this post


Link to post
Share on other sites
VitAl2013

Мне кажется, индекс листа ничего не даст, хотя он находится в параметре page_number (сразу после имени форматки).

Этот параметр есть только у первого листа. И цифры после него надо как-то раскусывать по другому... Мне кажется надо рыть в сторону Истории создания документа. А значения мм или дюймы дают нам кол-во выкусываемых цифр. Нао привязать их к чемуто другому. Например к кол-ву знаков до каких-то повторяющихся постоянных символов.

Мне кажется, что вы его скоро нащупаете.

Реальный механизм найти, то сделать реинженеринг, мне наврятли удастся вообще.

Оффтопик ветки, но пригодится при анализе если кто захочет помочь: Для более удобнго разбора кода есть hex редактор wxHexEditor - основная фишка можно раскрашивать код и его бэкграунд.

post-1462-1270530238_thumb.png

Share this post


Link to post
Share on other sites
VitAl2013

Намучившись я пошёл другим путём. ММ или Дюймы я беру из Drw, а размеры листа из <noindex>PDF</noindex>.

Share this post


Link to post
Share on other sites
brigval

Намучившись я пошёл другим путём. ММ или Дюймы я беру из Drw, а размеры листа из <noindex>PDF</noindex>.

При получении размеров листов из DRW как из текстового файла, можно получить ошибку, когда у пользователя в сесии загружен этот файл и формат уже в нем изменен, но файл чертежа пока еще не сохранен.

При считывании из PDF можно получить ошибку. Потому что многие не высталяют формат при печати на принтер Adobe PDF. Например, если при печати на принтер PDF выставлен формат A4, а "печатаем в PDF" чертеж формата A1, то ошибки при печати из A4-PDF на бумагу A1 не будет, так как отношение сторон постоянно у разных некратных форматов. Но программа найдет в PDF формат A4 (!), а не A1.

Для получения точного результата из PDF, видимо, надо обращать внимание на формат при конвертации в PDF или использовать конверторы, которые формируют правильный формат автоматом.

Однм из надежных путей получения размеров листов без ошибок является считывание размеров листов из открытого в ProE файла DRW с помощью API. Но если чертеж не в сессии, то открытие его может занимать довольно много времени для больших по размерам чертежей. Что не всегда удобно.

Share this post


Link to post
Share on other sites
Ruslan

открыие его может занимать довольно много времени для больших по размерам чертежей.

Можно открывать представление, без загрузки видов.

Share this post


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

Намучившись я пошёл другим путём. ММ или Дюймы я беру из Drw, а размеры листа из <noindex>PDF</noindex>.

Ну что ж, пожалуй на досуге тож помучаюсь ) Отпишусь потом.

Share this post


Link to post
Share on other sites
brigval

Можно открывать представление, без загрузки видов.

Ruslan, я имел ввиду программное открытие. Для VB6 загрузка чертежа в сессию без загрузки видов мной, к сожалению, не найдена.

Share this post


Link to post
Share on other sites
VitAl2013

из DRW как из текстового файла, можно получить ошибку

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

PDF можно получить ошибку... при печати на принтер Adobe PDF

Я использую Save As - PDF и пересохраняю файл drw в pdf именно через так. Adobe PDF принтером не пользуюсь. Максимум PDFCreator и то по великим праздникам.

Share this post


Link to post
Share on other sites
VitAl2013

Конечно. Есть идеи?

Share this post


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.



  • Сообщения

    • KotZiLa
      Спасибо, не надо. Лучше уж тогда такой Байкал https://protechnolog.ru/oborudovanie/listoobrabatyvayuwee/listogibochnye-pressy/weinbrenner-aphs/aphs-31160-moses/ Его в случае чего хотя бы как телевизор можно будет приспособить :)   Электромеханику надо тоже поизучать. Как и б/у лидеров.   Но тот же Байкал https://protechnolog.ru/oborudovanie/listoobrabatyvayuwee/listogibochnye-pressy/weinbrenner-aphs/weinbrenner-aphs-125040/ по сравнению с Абаметом проигрывает 20 тонн усилия, да и легче он на 700 кг... Хотя и немного меньше в размерах тоже. А вот по комплектации наоборот выигрывает. У него в базе ось R, которая идет как опция почти за 6 тысяч евросоюзных рублей у Абамета.   Кстати, а Байкалы какую ЧПУ ставят? Delem? А что можете сказать о стойке Metamation, которую Абамет предлагает как опцию? По стоимости равна ЧПУ Delem T-3500T.   Почитав такое уже задумываешься что не надо ни итальянского качества, ни турецких прибамбасов. Лучше хороший сервис китайского станка.   Вообще напрягает что нет отзывов про конкретно Абаметовские листогибы. Может конечно недовольных нет. Найти в оригинале этих китайцев тоже не получается. Все ссылки с этого китайского сайта Advanced Machinery ведут в Абамет. А почему на сайте указаны контакты Швеции????? Что-то я ничего не понимаю)
    • EvilBear
      Первая тестовая сборка. Всё разом, всё в кучу. Для чего это? При переводе проекта, из плоского измерения в объём, строятся 3D модели декоративных элементов, которые сопрягаются между собой. Сразу становятся заметны все огрехи и недочёты: конфликты профилей; конфликты толщин элементов, недостаточная или избыточная фактура фасада; решается вопрос о последовательности монтажа и мн. др. Именно для этого производится сумбурная первая сборка. В последствии элементы будут упорядочены, разнесены по малым сборкам и подсборкам, которые затем соберутся в одну структурированную сборку, но это будет потом. Сегодня всё в кучу 
    • Nikolay81
      Простые вещи, быстрее изначально начертить в Кореле. Ну не суть. Есть ли дельная замена Корелу для раскладки деталей из Солида и передачи их в Sheetcam? Может есть что-то поудобнее?
    • Ветерок
      Зачем их редактировать, если геометрия получена из Солида?
    • Nikolay81
      Дело привычки, во многом. В Кореле тоже есть плагин для авторазмещения. Потом, 2d детали я режу из Sheetcam. Это экономит время. А Sheetcam хорошо работает в связке с Корелом. Также, в Кореле огромные возможности по редактированию кривых. Общее удобство и продуманность программы, также радует. А Вы какую программу порекомендуете, вместо Корела?
    • Ветерок
      Зачем это делать в Кореле? Есть программы для автоматической раскладки. Зачем вообще Корел для работы с геометрией? Он не нужен в принципе, как класс. Всё делается в CAD.
    • baronnet
      Здравствуйте, могу прислать пример.  Деталь захватывается 2 шпинделем, немного вытаскивается, отрезка(при зажатых двух патронах),и продолжение обработки во втором патроне. Интересует? А коротко это функция : CPONS2(0) и отмена CPOFS2
    • Nikolay81
      Большое спасибо, уважаемый! Всё заработало, через чертёж. Может, есть способ, чтобы сразу из детали, поверхности экспортировались в DXF/DWG? Это же должно где-то настраиваться, какие элементы он экспортирует?
    • sokqq
      Добрый день. Имеется в наличии фрезерный ОЦ с поворотным столом. Проблема в том, что после обработки ось А за 2 часа "наматывает" больше 200000 градусов, число не всегда целое и кратное 360 для того, чтобы запустить следующую программу нужно "размотать" все эти градусы. Как сбросить счетчик? Ждать 2 часа УП и 1 час на размотку - долго. Рядом стоящий токарно фрезерный станок так же мотает, но при выполнении команды G28 H0.; G0 C0. быстренько выходит в свой 0. Фрезерный же при G28 A0. все равно разматывает...    Обнулять ось нельзя, так как в ней стоит раптор со своими нулями, их трогать нельзя, нужно как-то вывести А0.   Вроде подробно описал) 
    • Елена
      Саратов ближе к рубежам, а Нижний - к центру. В Нижнем - самый низкий уровень безработицы в Поволжье. Саратов ближе к Самаре.
×
×
  • Create New...