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

Конвертор из .ptr в .x с помощью UG\Open API


Schmeichel

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

Всем доброго времени суток! Возникла необходимость конвертирования моделей из.prt в .x формат. Смотрел как вариант степ-214 в качестве промежуточного, однако недолго, так как данная затея показалась мне более трудоемкой, нежели использование Open api. Делаю внешнее приложение на Builder'e (правда удалось только через динамическое связывание DLL), кроме .h-ников никакой документации больше нет) Так вот вопрос в том, как мужно умудриться разбить модель на сетку 3D объема (желательно из треугольников))) Да и вообще кто-нибудь сталкивался с подобными проблемами (использование open api для конвертирования)?

P.S. использую NX7, но в нём не особо шарю, мягко говоря)))

Изменено пользователем Schmeichel
Ссылка на сообщение
Поделиться на других сайтах


Всем доброго времени суток! Возникла необходимость конвертирования моделей из.ptr в .x формат. Смотрел как вариант степ-214 в качестве промежуточного, однако недолго, так как данная затея показалась мне более трудоемкой, нежели использование Open api. Делаю внешнее приложение на Builder'e (правда удалось только через динамическое связывание DLL), кроме .h-ников никакой документации больше нет) Так вот вопрос в том, как мужно умудриться разбить модель на сетку 3D объема (желательно из треугольников))) Да и вообще кто-нибудь сталкивался с подобными проблемами (использование open api для конвертирования)?

P.S. использую NX7, но в нём не особо шарю, мягко говоря)))

То о чем Ты говоришь

Если я правильно поняд Твой пост

Давно написано

Я когда немного экспериментировал с DirectX без особого труда

нашел конвертер и перегнал prt в x формат

Давно это было - Прямо сейчас не могу вспомнить как называлось это приложение

Перегонял естестьвенно через какой-то из промежуточных форматов видимо

step или iges

Еще помню что этот конвертер мог генерить исходники на C с использованием

OpenGL по которым пожно было собрать оконное виндовое приложение

с деталью Имелся zoom и rotate

В принципе такую штуку можно и самому написать

в UGOpen все для этого есть

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

Я впринципe тожe снaчaлa избороздил нeмaлую чaсть инeтa в поискaх 'этого' конвeрторa, вот только всё бeзрeзультaтно. В 3ds аналогично. Добрый чeловeк, ты бы вспомнил кaк это чудо нaзывaлось. В ug\open api я начинающий, почему и спрашивал совета про перевод модели в сетку

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

Может для создания сетки использовать возможности CAE модуля?

К сожалению не знаю что тоакое .x формат. Для какого он приложения?

P.S. Если объем разбивать нужно, то это наверное всетаки пирамиды или тетраэдеры? Или нужно поверхность на треугольники?

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

Может для создания сетки использовать возможности CAE модуля?

К сожалению не знаю что тоакое .x формат. Для какого он приложения?

P.S. Если объем разбивать нужно, то это наверное всетаки пирамиды или тетраэдеры? Или нужно поверхность на треугольники?

О CAE модуле я пока представления не имею, буду копать.

Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft.

Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам, которые используются. Хранится иерархия объектов, хранится анимация, и хранятся привязки вершин к «костям» с описанием весов. В X файле может отсутствовать какая-либо информация об объекте (например в X файле могут содержаться только координаты вершин).(это из Wikipedia:)), говоря проще это обычный directX формат файлов, который можно просматривать без лишних вьюверов.

Суть в том, что технология работы с x-файлами через базу данных уже отлажена, а сами модельки будут поступать к нам в prt.

Поверхность нужно разбить на треугольники, т.е.2D Surface Meshing получается...

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

О CAE модуле я пока представления не имею, буду копать.

Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft.

Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам, которые используются. Хранится иерархия объектов, хранится анимация, и хранятся привязки вершин к «костям» с описанием весов. В X файле может отсутствовать какая-либо информация об объекте (например в X файле могут содержаться только координаты вершин).(это из Wikipedia:)), говоря проще это обычный directX формат файлов, который можно просматривать без лишних вьюверов.

Суть в том, что технология работы с x-файлами через базу данных уже отлажена, а сами модельки будут поступать к нам в prt.

Поверхность нужно разбить на треугольники, т.е.2D Surface Meshing получается...

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

Спасибо за содействие! получилось достать 3d_exploration 1.7 и потестить её. Бывает, что некоторые файлы конвертятся с ошибками, иные вообще не распознаются, наверное т.к. с момента её создания много воды утекло. Однако дело не в этом, все-таки нужен СВОЙ конвертор, в который, возможно, со временем будут вноситься изменения.

В принципе такую штуку можно и самому написать

в UGOpen все для этого есть

С чего посоветуешь начать? - я посмотрел сегодня доступные в инете примеры кода, наткнулся на <noindex>"перебор компонентов и частей сборки"</noindex> пока не анализировал, но по этому принципу надеюсь сформировать иерархию модели, а потом отдельно переводить в mesh каждую компоненту. Либо нужно сразу разбить сборку на точки, реализовать что-то типа "Вставить->База\точка->набор точек" но тогда как быть с иерархией...

Вобщем пните меня куда-нибудь :helpsmilie:

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

Спасибо за содействие! получилось достать 3d_exploration 1.7 и потестить её. Бывает, что некоторые файлы конвертятся с ошибками, иные вообще не распознаются, наверное т.к. с момента её создания много воды утекло. Однако дело не в этом, все-таки нужен СВОЙ конвертор, в который, возможно, со временем будут вноситься изменения.

С чего посоветуешь начать? - я посмотрел сегодня доступные в инете примеры кода, наткнулся на <noindex>"перебор компонентов и частей сборки"</noindex> пока не анализировал, но по этому принципу надеюсь сформировать иерархию модели, а потом отдельно переводить в mesh каждую компоненту. Либо нужно сразу разбить сборку на точки, реализовать что-то типа "Вставить->База\точка->набор точек" но тогда как быть с иерархией...

Вобщем пните меня куда-нибудь :helpsmilie:

Начни лучше с конвертации солид

А вообще фактически Тебе надо научиться конвертировать фасе

Все остальное просто

Выбор solid -- UF_UI_select_single

Для работы с солид изучи

UF_MODL_ask_body_faces

UF_MODL_ask_face_loops

//UF_MODL_ask_face_edges

А дальше Тебе нужно написать тесселятор для face

Поищи в UF_MODL функции для ребра и грани которые тебе по координате

точки дают параметры и по параметрам дают координаты точки

Еще такие вещи есть в UF_EVAL - они побыстрее

Если грань односвязная я бы просто нарезал ее на ленты зафиксировав один из параметров

И разбил бы каждую на треугольники

Многосвязные как то надо будет преобразовывать в односвязные

Вообще поищи что пишут по алгоритмам Тесселяции

Этого должно быть много в И-нет

Еще UF_UI_create_filebox

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

Спасибо за содействие! получилось достать 3d_exploration 1.7 и потестить её. Бывает, что некоторые файлы конвертятся с ошибками, иные вообще не распознаются, наверное т.к. с момента её создания много воды утекло. Однако дело не в этом, все-таки нужен СВОЙ конвертор, в который, возможно, со временем будут вноситься изменения.

С чего посоветуешь начать? - я посмотрел сегодня доступные в инете примеры кода, наткнулся на <noindex>"перебор компонентов и частей сборки"</noindex> пока не анализировал, но по этому принципу надеюсь сформировать иерархию модели, а потом отдельно переводить в mesh каждую компоненту. Либо нужно сразу разбить сборку на точки, реализовать что-то типа "Вставить->База\точка->набор точек" но тогда как быть с иерархией...

Вобщем пните меня куда-нибудь :helpsmilie:

Как вариант UF_DISP_j3d_geometry. Может поможет...
Ссылка на сообщение
Поделиться на других сайтах

Что-то как в том анекдоте - "Предложите самый дорогой способ определения постоянной Планка..." 

Нужно объекты в сборке "побить" на треугольнички? И записать в файл в определенном формате? 

Я бы сделал так (более того - уже делал): Экспорт ВСЕГО содержимого prt-файла в текстовый STL. А дальше - простейший консольный конвертер, который читает строки исходного файла с координатами и нормалями треугольничков и выбрасывает в другой файл по нужным правилам. Ясный пень, текстур и прочего там не будет. 

Или я чего-то не понимаю?? Если покажешь пример этого .x фвйла, попробую быстренько на коленке что-то дописать. Как уже говорил - заготовка для чтения STL-файлов у меня есть. 

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

Вот на пример на вскидку:

/////////////////////////////////////////////////////////////////////////////////

xof 0302txt 0064

Header { //начало файла//

1;

0;

1;

}

Frame x3ds_Pyramid {

FrameTransformMatrix { //матрица преобразования матрикса

0.490196, 0.000000, 0.000000, 0.000000, (координат и масштаба

0.000000, 0.490196, 0.000000, 0.000000, объекта в пространстве)//

0.000000, 0.000000, 0.490196, 0.000000,

-0.000000, 0.819444, 0.000000, 1.000000;;

}

//начало описания объекта(сетки объекта).

Mesh Pyramid {

18; //количество строк до ;;//

-0.000000; 8.333334; -0.000000;, //координаты точек пространства

-10.000000; -1.666667; -10.000000;, (x,y,z соответственно)

10.000000; -1.666667; -10.000000;, строки имеют номера: первая - 0,

10.000000; -1.666667; 10.000000;, вторая - 1,.......последняя - 17

-10.000000; -1.666667; 10.000000;, здесь 18 точек //

-0.000000; -1.666667; -0.000000;,

10.000000; -1.666667; -10.000000;,

10.000000; -1.666667; 10.000000;,

-10.000000; -1.666667; 10.000000;,

-10.000000; -1.666667; -10.000000;,

-10.000000; -1.666667; -10.000000;,

10.000000; -1.666667; -10.000000;,

10.000000; -1.666667; -10.000000;,

10.000000; -1.666667; 10.000000;,

10.000000; -1.666667; 10.000000;,

-10.000000; -1.666667; 10.000000;,

-10.000000; -1.666667; 10.000000;,

-10.000000; -1.666667; -10.000000;;

8; //количество строк до следующих ;;

3;0,2,1;, первое число - кол-во точек многоугольника

3;0,3,6;,

3;0,4,7;, следующие за первым числом через запятую -

3;0,9,8;, номера точек пространства, описаных выше

3;10,11,5;, //!!!видимая сторона многоугольника опреде-

3;12,13,5;, ляется направлением обхода его точек

3;14,15,5;, если обход по часовой стрелке, то это

3;16,17,5;; видимая сторона//

MeshMaterialList {

1;

1;

0;

Material { //указание на материал

1.000000;0.800000;0.000000;0.900000;; и текстуру//

25.000000;

0.300000;0.000000;0.000000;;

0.4; 0.4; 0.1;;

TextureFilename

{"lava.bmp";}

}

}

MeshTextureCoords { //описание текстурирования объекта//

18;

0.500000;0.000000;, //каждая строка до знака ;; соответствует строке с

0.000000;1.000000;, координатами точек, которые описаны выше

1.000000;1.000000;, рисунок текстуры рассматривается как единичный

1.000000;1.000000;, квадрат в системе координат с началом координат

1.000000;1.000000;, в левом верхнем углу

0.500000;0.500000;, вертикальная ось Oy направлена вниз

0.000000;1.000000;, горизонтальная ось Ox направлена вправо

0.000000;1.000000;, первое число в каждой строке х-координата

0.000000;1.000000;, текстуры, второе - y-координата //

1.000000;1.000000;,

1.000000;1.000000;,

0.000000;1.000000;,

0.000000;1.000000;,

0.000000;0.000000;,

0.000000;0.000000;,

1.000000;0.000000;,

1.000000;0.000000;,

1.000000;1.000000;;

}

}

}

/////////////////////////////////////////////////////////////////////////////////

Матрица преобразования у меня будет единичная, текстуры не интересуют, в мешах соответственно неограниченная вложенность.

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

Что-то как в том анекдоте - "Предложите самый дорогой способ определения постоянной Планка..." 

Нужно объекты в сборке "побить" на треугольнички? И записать в файл в определенном формате? 

Я бы сделал так (более того - уже делал): Экспорт ВСЕГО содержимого prt-файла в текстовый STL. А дальше - простейший консольный конвертер, который читает строки исходного файла с координатами и нормалями треугольничков и выбрасывает в другой файл по нужным правилам. Ясный пень, текстур и прочего там не будет. 

Или я чего-то не понимаю?? Если покажешь пример этого .x фвйла, попробую быстренько на коленке что-то дописать. Как уже говорил - заготовка для чтения STL-файлов у меня есть. 

Конечно был предложен самый дорогой способ

так как самый дешевый 3d_explorer был отвергнут

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

Начни лучше с конвертации солид

А вообще фактически Тебе надо научиться конвертировать фасе

Все остальное просто

Выбор solid -- UF_UI_select_single

Для работы с солид изучи

UF_MODL_ask_body_faces

UF_MODL_ask_face_loops

//UF_MODL_ask_face_edges

А дальше Тебе нужно написать тесселятор для face

Поищи в UF_MODL функции для ребра и грани которые тебе по координате

точки дают параметры и по параметрам дают координаты точки

Еще такие вещи есть в UF_EVAL - они побыстрее

Если грань односвязная я бы просто нарезал ее на ленты зафиксировав один из параметров

И разбил бы каждую на треугольники

Многосвязные как то надо будет преобразовывать в односвязные

Вообще поищи что пишут по алгоритмам Тесселяции

Этого должно быть много в И-нет

Еще UF_UI_create_filebox

UF_UI_select_single - как я понял внутренняя функция, а я делаю внешнее приложение

Как вариант UF_DISP_j3d_geometry. Может поможет...

сейчас как раз разбираюсь с ней

получается вытащить все точки и нормали, однако как организовать в этом случае иерархическую структуру, вот в чем вопрос

Изменено пользователем Schmeichel
Ссылка на сообщение
Поделиться на других сайтах

UF_UI_select_single - как я понял внутренняя функция, а я делаю внешнее приложение

сейчас как раз разбираюсь с ней

получается вытащить все точки и нормали, однако как организовать в этом случае иерархическую структуру, вот в чем вопрос

Кстати нашел у себя тесселятор в старых кодах переложенный для UG

Работает он только с плоскими гранями

Поддерживает невыпуклость и многосвязность

Пиши адрес - скину

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

Кстати нашел у себя тесселятор в старых кодах переложенный для UG

Работает он только с плоскими гранями

Поддерживает невыпуклость и многосвязность

Пиши адрес - скину

schmeichel@rambler.ru зaрaнee признaтeлeн
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      а в этой какой смысл - наверно не то что пора завязывать пить после 11...   если в станину и направляйки понапихать датчиков температуры и связать это с кинематической моделью то какая уж тут чистая механика.  
    • taarok
      спасибо огромное, везде обыскался. Завтра буду пробывать. Возможно я ошибаюсь, но при запуске цилка 9023 он обращается в конце к макросу 9775  там прописана строка g65PO9775
    • Guhl
      Где эта фраза?   Если вы про эту "Станину и механизмы надо выставлять механически" то здесь иной смысл "надо выставлять" не равно "только механически может быть выставлена" Так у него голова несложно выставляется по оправке смещением нуля Это как резцедержку с сервоприводом настраивать При чем тут геометрия станины?
    • gudstartup
      в некоторых случаях проще сделать геометрическую компенсацию чем выравнивать например поворотный стол прикрепленный к станине весом в полтонны в плоскости zy или xz .  замена на компенсацию бывает еще и по временным и финансовым обстоятельствам и это никак нельзя не учитывать.
    • lem_on
      Я бы с удовольствием посмотрел как без параметрирования башка на интегрексе выставляется. Но думаю ответ был бы, станок неправильно спроектирован и из все надо на металлолом и  переплавить в сковородки. Да и вообще где только параметрами геометрию не выходишь.    "Извиняюсь заранее что подлизнул"  Тема ведь про смешное и клоун даже есть )))
    • USSR_Nic
      Дык посмотреть то я посмотрел. Я не понимаю как тулбокс перестроить. Как разделить наименование в тулбоксе  на Наименование ВП и Обозначение ДНП... В этом и состоит проблема.... Хоть в макросе их дербань....
    • gudstartup
      @Killerchik думаю хватит цитат про то что только механически может быть выравнена геометрия станка. советую выровнять направляющуб где на 5см 1мм отклонения от прямолинейности или она как сам@Guhl пишет винтом. 
    • Jesse
      да, так и делайте. Мне тоже кажется это самый оптимальный вариант)
    • Amiandar
      Народ, а подскажите, почему не получается редактировать (1 раз только получилось спустя 100500 попыток, поэтому я не уловил причину) вот эти значения в момент нанесения линии в эскизе?   
    • Alex1986
      Коллеги, подскажите, пожалуйста, как в имеющемся Компас 3D v20 в как-то сопряженных деталях сделать в одной детали отверстие, а во второй детали отверстие завязать на центр отверстия первой детали, чтоб при перемещении первого и перестроении, автоматически перестраивалось отверстие во второй?
×
×
  • Создать...