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

Считывание геометрии


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

Здравствуйте!

Имеется построенная трехмерная модель детали в solidworks, сохранная в одном из форматов. 

Необходимо написать собственную программу которая может  "считать, понять" геометрию детали, принимая на вход деталь, сохранную в одном из форматов solidworks. Нужно это для написания собственного сеткопостроителя. нужно считать геометрию так чтобы геометрия определялась с произвольной точностью.

 

Прошу Вашего совета, литературы как это сделать, в какой файл сохранять, описание формата. 

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


Здравствуйте! Что Вы понимаете под определением геометрии с "произвольной точностью"? Если у Вас на входе граничное представление (например, STEP), то геометрические элементы определены аналитически (сферы, конусы, цилиндры, торы, сплайны и т.д.). Какую затем сетку Вы собираетесь строить? Для каких нужд?

Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Andreiwse сказал:

понять" геометрию детали

А Вы сами-то можете "понять" эту геометрию?

 

19 минут назад, Andreiwse сказал:

для написания собственного сеткопостроителя

Если хотели всех запутать, Вам это удалось.

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

Прошу прощения, выражался не точно. Наверно ))) мне нужно чтобы геометрия, геометрические элементы выражались аналитически.  

Сетку собираюсь строить тетраэдральную для моделирования обтекания воздухом. 

 

Но сейчас мне важно просто научиться работать с геометрий

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

Как хотите работать? Будете писать некую программу разбора граничного представления? Скажем, на входе STEP, потом разбор по геометрическим типам, потом построение сетки... Если так, то на каком языке пишете?

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, Andreiwse сказал:

мне нужно чтобы геометрия, геометрические элементы выражались аналитически

 

Что Вы поднимаете под этим термином?

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

 

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

Возможно, Вам будет интересна утилита для анализа граничного представления: https://bitbucket.org/Quaoar/analysissitus/wiki/Home

Грузите STEP, тыкаете грань, смотрите ее тип. Реализация на C++ с использованием OpenCascade и VTK. Код открыт.

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

я так понимаю, нечто программерское тут имеется ввиду. А вот понятие "аналитическое" надо бы расшифровать.

 

Ведь если требуется по анализу поверхности составить формулу ее построения, то задача иногда и невыполнима будет. Поскольку далеко не все поверхности построены по формулам известных кривых. Просто переходы. А если по формулам, то анализ подходящей формулы с соответствующим просчетом всех точек на контуре может занять несколько часов на мощных машинах. При этом, ест-но, вы ещё должны будете учесть всю существующую математику/геометрию в своей проге

 

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

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

Программирую на Фортране. 

 

Еще раз попробую уточнить.
Я себе это так представляю. Допустим у меня есть тело - цилиндр, один торец цилиндра имеет затупленние, но не по сфере, а через тело полученное как вращение некого произвольного сплайна. Мне нужно самому написать программу, в которую можно загрузить файл с геометрией тела. Программа извлечет из файла аналитическое представление тела и будет иметь следующие виды поверхностей : уравнение боковой поверхности цилиндра, с знанием конкретного радиуса и высоты; уравнение не затупленного основания цилиндра - окружность, координаты центра окружность, радиус окружности; уравнение затупленного основания цилиндра - уравнение сплайна, то есть коэффициенты уравнения сплайна. Это мне позволит для любой произвольной точки в пространстве "спорить" у программы является ли эта точка точкой внутри тела или снаружи или она принадлежит поверхности тела. Или для любой точки в пространстве не лежащей на поверхности, но расположенной близкой к поверхности "спросить" у программы расстояние от этой точки до поверхности тела.  И тому подобное. 

 

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

Похоже на удаление гланд ректальным путём.

Попробуйте быть проще.

Во-первых, полную "аналитику" реальной сложной детали ни один компьютер Вам не выдаст. Да она и не нужна в принципе.

Во-вторых, даже имея "аналитику" поверхности как определить с какой стороны находится материал? Для примера возьмите геометрию обычного буксирного гака.

В-третьих, у Вас в исходном файле уже есть полное описание геометрии тела без всякой "аналитики". Настолько полное, что по нему строится именно то самое тело. Строится однозначно в любом софте. Может, стоит сначала разобраться в том, что уже есть? И не изобретать неработающий велосипед без колес.

 

Предполагаю, что с "построением сетки" такая же ситуации - гланды через анус. Уже давно существуют разные алгоритмы построения разных сеток. Наверняка они на порядок проще, чем то, что творится в Вашей голове. Попробуйте сначала разобраться как они работают.

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

Делаете так. Берете модель в нейтральном формате (например, STEP или IGES). Загружаете ее при помощи библиотеки OpenCascade, чтобы получить граничное представление в явном виде (на этом этапе Вы уже имеете всю аналитику, см. ссылку, которая приведена выше). После этого можете влегкую классифицировать точку относительно тела (это базовая операция в геометрическом моделировании) и делать что угодно (так как у Вас полное описание модели изделия).

 

Уровень такой работы чисто порограммистский, это мат. основы САПР, и, конечно инженеры, тут Вам особенно не подскажут. Если нужно введение в область, гугелируйте "геометрические ядра" (много отличных статей есть на isicad.ru).

 

Резюмируя, все это делается. Это типовая задача низкоуровневого геометрического моделирования и мат. основ САПР.

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

Только у меня ощущение, что эти два новых персонажа - на самом деле один, который просто таким изощренным способом пытается что-то пропиарить, сам себе задавая ответы, и сам себе отвечая?

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

@Ветерок нет, тут не пиар. Изобретение велосипеда, да. Обменные форматы - это и есть та самая требуемая автору "аналитика". И наши все САПР - это тоже аналитика математиков (ну, по крайней мере, ядра САПРов) Но @Quaoar прав, тут форум не программерский, а инженерный. И вряд ли кто реально что-то подскажет. Разве что Ug_user, который в этой теме (программерской) кое-что понимает. Но я сомневаюсь, что у него будет отличное мнение от моего насчет "изобретения велосипеда".

 

ЗЫ Впрочем, отговаривать не буду. Вдруг автор сделает чисто российский обменный формат для 3D тел. :smile: Но про желание сделать что-то быстро можно забыть сразу. Геом. ядра создавались годами целыми коллективами программистов.

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

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

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

Возможно, кто-то из военных хочет в

BRL-CAD

засунуть геометрию из обычных САПР. Мне пытались ставить похожую задачу, я отослал народ к информации о поддержке этим open-source САПРом NURBS, и переносить через Rhino. Чем решилось - не знаю, вопросов больше не было. В этой САПР все задается бесконечно точными примитивами и их комбинациями или облаками точек. http://brlcad.org/ -

Solid Modeling!

Hybrid CSG and B-REP kernel with innovative methods for unambiguous 3D geometry.

 

Почему такая задача? Военные хотят иметь САПР "без жучек внутри", лучше - open-source, и при этом максимально точные для расчетов по сложной геометрии или моделировать что-то типа ядерных взрывов. В-общем, ахтунг...

 

Ссылка на сообщение
Поделиться на других сайтах
В 23.12.2016 в 14:43, Quaoar сказал:

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

Согласен с вами. 

 

Кажется,поставленная задача сложнее чем я подумал изначально.

 

Благодарю всех участников беседы за первичную консультацию. 

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

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

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

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

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

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

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

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

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

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

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




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