Страница 1 из 1

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

СообщениеДобавлено: 10 июл 2009 11:17
ExtraRight
День добрый.

Требуется получить 6 координат позиционирования парта в пространства сборки и потом задавать его (в смысле по значениям позиционировать парт в сборке).

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

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

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

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

СообщениеДобавлено: 10 июл 2009 13:03
keeper
а чем компас не помогает? Выставил компас на сборку, задал все значения по нулям. затем выделил парт и при зеленом компасе выставил нужные значения. анналагично же получаем и бывшые значения парта.

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

СообщениеДобавлено: 10 июл 2009 14:03
booSter
2 keeper:
Данная ветка посвящена ПРОГРАММИРОВАНИЮ под CATIA V5. И если человек постит сюда вопрос - предполагается, что он хочет узнать как добиться желаемого программным путём (C++ или скрипт).
Более того - то, что работает в "интерактиве" программно может решаться иначе.

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

СообщениеДобавлено: 10 июл 2009 14:15
keeper
booSter
не обратил внимание на название ветки :roll: сорри

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

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


Большое спасибо за подсказку. Но вот насчёт 12-ти элементной матрицы не могли бы Вы уточнить - я думал, что там всего лишь 6 координат (3 смещения и 3 угла поворота).

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

СообщениеДобавлено: 15 июл 2009 13:06
booSter
В С++ 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 ]

ну и вся математика "вручную" :(