C3D Kernel  104065

Геометрический решатель. Подробнее...

Граф наследования:MtGeomSolver:
Inheritance graph
[см. легенду]
Граф связей класса MtGeomSolver:
Collaboration graph
[см. легенду]

Полный список членов класса

Открытые члены

Функции задания системы сопряжений
MtPatternId AddPattern (MtMateType, MtArgument, MtArgument, MtParVariant par=MtParVariant::undef)
 Добавить паттерн.
MtConstraintId AddGeomToPattern (MtPatternId ptrn, MtArgument ptrnObj, MtParVariant par1=MtParVariant::undef, MtParVariant par2=MtParVariant::undef, GCM_scale scale=GCM_RIGID)
 Добавить геометрический объект в паттерн.
MtResultCode3D AddConstraintItem (ItConstraintItem &)
 Добавить ограничение.
ItConstraintItemAddConstraint (MtMateType t, MtArgument g1, MtArgument g2, MtParVariant p1=MtParVariant::undef, MtParVariant p2=MtParVariant::undef, MtParVariant p3=MtParVariant::undef)
 Добавить сопряжение для пары геометрических объектов(ограничение).
ItConstraintItemAddConstraint (MtMateType, MtArgument, MtArgument, MtArgument, MtParVariant p1=MtParVariant::undef)
 Добавить ограничение для тройки геометрических объектов.
ItConstraintItemAddConstraint (MtArgument, MtArgument, const GCM_c_params &, MtResultCode3D &)
 Добавить ограничение.
ItGeomAddGeom (MtGeomVariant)
 Добавить черный ящик в систему ограничений.
MtResultCode3D AddBlackbox (ItGCBlackbox &)
ItGeomSetDependentGeom (ItConstraintItem *, ItGeom *)
 Задать для данного ограничения зависимый объект. Set a dependent object of constraint.
MtResultCode3D ChangeDefinition (ItConstraintItem &)
 Сообщить об изменении данных, определяющих сопряжение.
MtResultCode3D ChangeDimension (ItConstraintItem &)
 Сообщить об изменении вещественного параметра размерного сопряжения.
MtResultCode3D ChangeGeomPositions ()
 Сообщить о изменении положения сопрягаемых тел.
ItGeomCreateCluster (std::vector< ItGeom * > &)
 Создать пользовательский кластер. Объекты объединяемого множества не должны иметь ограничений на момент вызова. Создавайте кластер перед добавлением ограничений.
MtResultCode3D FixGeom (ItGeom &)
 Зафиксировать геометрический объект в ГСК.
bool IsFixed (const ItGeom *)
 Узнать зафиксирован ли геометрический объект?
void Flush ()
 Очистить систему ограничений.
MtResultCode3D RemoveAllBlackboxes ()
 Удалить из системы ограничений все черные ящики.
MtResultCode3D RemoveConstraint (ItConstraintItem *)
 Удалить ограничение из системы.
MtResultCode3D RemoveBlackbox (ItGCBlackbox &)
 Удалить чёрный ящик из системы ограничений.
bool RemoveGeom (ItGeom *)
 Удалить геометрический объект из системы ограничений.
MtResultCode3D UnfixGeom (ItGeom &)
 Освободить геометрический объект от фиксации в ГСК.
Функции решения и диагностики
bool IsSatisfied (const ItConstraintItem &)
 Узнать удовлетворено ли ограничение?
MtStateOfFreedom IsWellConstrained (const ItGeom &)
 Узнать является ли тело полно-заданным или фиксированным ?
void DiagnoseConstraints ()
 Разослать диагностические коды ограничениям.
MtResultCode3D Evaluate ()
 Решить систему сопряжений.
MbMatrix3D TransMatrix (ItGeom *) const
 Текущее или вычисленное положение геометрического объекта
const ItGeomCluster (const ItGeom *subGeom) const
 Получить кластер, в котором содержится данный геометрический объект.
Функции для интерактивной манипуляции системой сопряжений
void FinishReposition ()
 Завершить режим "перетаскивания".
ItGeomGetMovingGeom () const
 Выдать объект манипуляции, с которым работает решатель, находясь в режиме вращения/перемещения объектом (драггинг).
MtResultCode3D PrepareReposition (ItGeom &movGeom, const MbPlacement3D &projPlane, const MbCartPoint3D &curPnt)
 Инициализировать режим перетаскивания объектов в плоскости экрана. Компонент, деталь, которой манипулируют.
MtResultCode3D PrepareReposition (ItGeom &rotGeom, const MbCartPoint3D &org, const MbVector3D &axis)
 Инициализировать режим вращения компонента вокруг фиксированной оси.
MtResultCode3D SolveReposition (ItGeom &gItem, const MbPlacement3D &newPos, MtRepositionMode movType)
 Решить систему для произвольного изменения положения одного тела.
MtResultCode3D SolveReposition (const MbCartPoint3D &curXYZ)
 Решить систему сопряжений для новой позиции курсора в режиме драггинга. curXYZ текущее положение курсора в ГСК.
MtResultCode3D SolveReposition (double alpha)
 Решить систему с изменением положения компонента через одну координату.
Вспомогательные функции и запросы.
bool IsMyGeom (const ItGeom &) const
 Узнать принадлежит ли системе ограничений геометрический объект.
bool IsMyConstraint (const ItConstraintItem &) const
 Узнать принадлежит ли системе ограничений геометрическое ограничение.
ItGeomGround () const
 Выдать кластер неподвижных объектов, заданных в глобальной системой координат.
GCM_system System () const
 Выдать систему геометрических ограничений, которую обслуживает решатель.
void WriteSystem (TCHAR *fileName)
SPtr< ItConstraintsEnum > GetConstraintsEnum ()
 Выдать ограничения.
Устаревшие функции, которые будут удалены в будущей версии.
MtResultCode3D ChangeAlignCondition (ItConstraintItem &)
 Функция будет удалена из API. Использовать ChangeDefinition().
MtResultCode3D Solve (bool diagQuery)
 Функция будет удалена из API. Использовать Evalute().

Подробное описание

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


Методы

Аргументы:
[in]t- Тип геометрического ограничения.
[in]g1,g2- Пара геометрических объектов - аргументы ограничения.
[in]p1- Условие выравнивания для таких типов ограничений, как GCM_COINCIDENT, GCM_PARALLEL, GCM_PERPENDICULAR, GCM_CONCENTRIC, GCM_IN_PLACE, GCM_TANGENT. Значения данного параметра берутся из GCM_alignment.
[in]p1- Числовой параметр (double) размерных ограничений с типами GCM_ANGLE, GCM_DISTANCE.
[in]p2- Вариант касания GCM_tan_choice для ограничения типа GCM_TANGENCY или значение GCM_alignment для размерных ограничений.
[in]p3- Не имеет значения.
Возвращает:
Геометрическое ограничение.
ItGeom* MtGeomSolver::AddGeom ( MtGeomVariant  )
Аргументы:
[in]bBox- Интерфейс чёрного ящика.
Возвращает:
Код результата. Добавить геометрический объект.
MtResultCode3D MtGeomSolver::ChangeGeomPositions ( )
Возвращает:
Код результата.

Через эту функцию осуществляется синхронизация положения объектов системы ограничений по состоянию объектов стороне клиентского приложения. Надо сказать, что обновление положений происходит только для тех наследников ItGeom, которые реализованы на стороне приложения. Состояние объектов, добавленных методом MtGeomSolver::AddGeom остается неизменным.

void MtGeomSolver::DiagnoseConstraints ( )

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

MtResultCode3D MtGeomSolver::Evaluate ( )

Меняет положение геометрических объектов в соответствии с геометрическими ограничениями.

MtResultCode3D MtGeomSolver::PrepareReposition ( ItGeom movGeom,
const MbPlacement3D projPlane,
const MbCartPoint3D curPnt 
)
Аргументы:
projPlane- Плоскость экрана, заданная в ГСК сборки.
curPnt- Точка, принадлежащая компоненту, которая проецируется на плоскость экрана в положение курсора, и за которую осуществляется 'перетаскивание'. curPnt задана в ЛСК геом.объекта movGeom.
Возвращает:
Код результата.

Функция запускается однократно перед входом в режим перетаскивания компонент, который управляется (по движению мыши) через команду MtResultCode3D SolveReposition( const MbCartPoint3D & ). Режим прекращается вызовом любой иной команды, кроме этих двух; Также есть специальная функция для выхода из режима "перетаскивания" - void FinishReposition(), для явного сбрасывания режима перемещения.

MtResultCode3D MtGeomSolver::SolveReposition ( ItGeom gItem,
const MbPlacement3D newPos,
MtRepositionMode  movType 
)
Аргументы:
gItemтело, положение которого меняется;
newPosновое пололожение тела g_item;
movTypeкод желаемого поведения
Возвращает:
Код результата.
Заметки:
Эта функция не позволяет вывести систему сопряжений из состояния решаемости, кроме случаев, когда до вызова функции система уже находилась в нерешенном состоянии. Если новое положение 'newPos' не позволяет удовлетворять системе сопряжений, то новое положение тела окажется наиболее близким к newPos (при сохранении решаемости).
MtResultCode3D MtGeomSolver::SolveReposition ( const MbCartPoint3D curXYZ)
Возвращает:
Код результата.

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

MtResultCode3D MtGeomSolver::SolveReposition ( double  alpha)
Аргументы:
alpha- Управляющий параметр (зачастую задается в радианах).
Возвращает:
Код результата.

Это рабочая функция, управляющая режимом перепозиционирования, в котором положение тела управляется изменением одной координаты, например, угол вращения вокруг оси. Режим прекращается вызовом MtGeomSolver::FinishReposition или любой иной командой, меняющей состояние решетеля, например, MtGeomSolver::AddConstraint. Функция для больших систем работает значительно быстрее, чем Solve(bool) или SolveReposition( ItGeom &, const MbPlacement3D &).


Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы