Работа с B-Rep/Преобразование координат

Автор Тема: Работа с B-Rep/Преобразование координат  (Прочитано 2778 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Здравствуйте. Разрабатываю конвертер графики из Inventor в формат своей программы. Результат отличается от ожидаемого. Он представлен во вложенном файле.
Графическое представление деталей внутри отдельных подсборок конвертируется нормально. То есть взаимное расположение деталей сохранено, а вот подсборок-нет.
Насколько я понял, детали внутри подсборки прдставлены в своей внутренней системе координат.
Как преобразовать эти внутренние координаты в глобальные (координаты сборки самого верхнего уровня)? Домножение на матрицу Transform не помогает.
Заранее благодарю за ответ.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Так конечно сходу не поймешь без "причесанного" примера.
При вставки подсборки в сборку создаются дополнительные прокси-объекты, видимо там лежат нужные данные.
Поэтому, могу предположить что нужно порыться в объекте:
AssemblyComponentDefinition.Occurrences
внутренности подсборки должны быть в объекте:
SubOccurrences
и там уже смотреть
ComponentOccurrenceProxy.Transformation

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
А матрицу Transformation нужно брать для подсборки или отдельно для каждой детали внутри подсборки?
И можно ли брать ComponentOccurence.Definition.Occurrences вместо SubOccurences, если ComponentOccurence представляет подсборку?
Спасибо.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
А матрицу Transformation нужно брать для подсборки или отдельно для каждой детали внутри подсборки?
А это от ваших задач зависит.
В первом приблежении: SubOccurences это экземпляр подсборки в конкретной сборке.
если деталь внутри подсборки была установлена в начало координат то объект Occurrences.Transformation всегда будет выдавать нулевую матрицу. А вот в разных сборках эта подсборка может быть установлена в разные места относительно начала координат и вот объект SubOccurences.Transformation уже дает именно матрицу смещений относительно начала координат верхней сборки.
Это все не трудно пронаблюдать на простой сборке с подсборкой.

Оффлайн Elfilagas

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Добрый день,
У меня похожий вопрос, но в обратную сторону. )
Пытаюсь перенести геометрию из сборки в деталь, как понимаю нужно при переносе использовать TransformBy, но какую матрицу использовать при таком переносе?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Завтра на свежую голову

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Нужно конкретный пример в отдельном топике