Как получить и назначить позиционирование парта в сборке

Программирование для CATIA.

Как получить и назначить позиционирование парта в сборке

Сообщение ExtraRight » 10 июл 2009 11:17

День добрый.

Требуется получить 6 координат позиционирования парта в пространства сборки и потом задавать его (в смысле по значениям позиционировать парт в сборке).
Аватара пользователя
ExtraRight
Forum Manager
 
Сообщения: 1575
Зарегистрирован: 11 сен 2007 18:50
Откуда: Нижний Новгород
Blog: View Blog (8)

Re: Как получить и назначить позиционирование парта в сборке

Сообщение booSter » 10 июл 2009 12:02

Для этих целей используются С++ интерфейсы CATIMovable (методы SetPosition, SetAbsPosition, ApplyTransformation) и CATIBlockMovable
или Automation объекты Product.Move (метод Apply) и FixTogether

Все операции по позиционированию применяются к "инстансам" (instance) продуктов.
В обеих случаях в операциях используется 12-ти элементная матрица трансформации [3x3]+[3] для перевода которой в ваше представление (и обратно) нужно будет применять соответствующие преобразования.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Как получить и назначить позиционирование парта в сборке

Сообщение keeper » 10 июл 2009 13:03

а чем компас не помогает? Выставил компас на сборку, задал все значения по нулям. затем выделил парт и при зеленом компасе выставил нужные значения. анналагично же получаем и бывшые значения парта.
Аватара пользователя
keeper
Постоянный участник
Постоянный участник
 
Сообщения: 618
Зарегистрирован: 15 дек 2008 13:28
Откуда: Дд

Re: Как получить и назначить позиционирование парта в сборке

Сообщение booSter » 10 июл 2009 14:03

2 keeper:
Данная ветка посвящена ПРОГРАММИРОВАНИЮ под CATIA V5. И если человек постит сюда вопрос - предполагается, что он хочет узнать как добиться желаемого программным путём (C++ или скрипт).
Более того - то, что работает в "интерактиве" программно может решаться иначе.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Как получить и назначить позиционирование парта в сборке

Сообщение keeper » 10 июл 2009 14:15

booSter
не обратил внимание на название ветки :roll: сорри
Аватара пользователя
keeper
Постоянный участник
Постоянный участник
 
Сообщения: 618
Зарегистрирован: 15 дек 2008 13:28
Откуда: Дд

Re: Как получить и назначить позиционирование парта в сборке

Сообщение ExtraRight » 15 июл 2009 00:03

booSter писал(а):В обеих случаях в операциях используется 12-ти элементная матрица трансформации [3x3]+[3] для перевода которой в ваше представление (и обратно) нужно будет применять соответствующие преобразования.


Большое спасибо за подсказку. Но вот насчёт 12-ти элементной матрицы не могли бы Вы уточнить - я думал, что там всего лишь 6 координат (3 смещения и 3 угла поворота).
Аватара пользователя
ExtraRight
Forum Manager
 
Сообщения: 1575
Зарегистрирован: 11 сен 2007 18:50
Откуда: Нижний Новгород
Blog: View Blog (8)

Re: Как получить и назначить позиционирование парта в сборке

Сообщение booSter » 15 июл 2009 13:06

В С++ API матрица трансформации представляется классом CATMathTransformation.
Сама трансформация состоит из:
  • матрицы [3x3] задающей поворот/масштаб/зеркалировкние вдоль каждой из осей;
  • вкетора [3] задающего смешение;
Код: Выделить всё
      a11  a12  a13            u1 
M = [ a21  a22  a23 ]    V = [ u2 ] 
      a31  a32  a33            u3 

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


В макросах используется та же трансформация записанная как массив из 12 элементов типа Double по схеме:
Код: Выделить всё
[ a11, a12, a13, a21, a22, a23, a31, a32, a33, u1, u2, u3 ]

ну и вся математика "вручную" :(
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5