C3D Kernel  104065
Открытые члены

Полигональный объект модели - фасетный объект. Подробнее...

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

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

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

 MbMesh (bool _exact=false)
 Конструктор без параметров.
virtual ~MbMesh ()
 Деструктор
 VISITING_CLASS (MbMesh)
virtual MbeSpaceType IsA () const
 Получить тип объекта.
virtual MbSpaceItemDuplicate (MbRegDuplicate *=NULL) const
 Создать копию объекта.
virtual void Transform (const MbMatrix3D &, MbRegTransform *=NULL)
 Преобразовать объект согласно матрице.
virtual void Move (const MbVector3D &, MbRegTransform *=NULL)
 Сдвинуть объект вдоль вектора.
virtual void Rotate (const MbAxis3D &, double angle, MbRegTransform *=NULL)
 Повернуть объект вокруг оси на заданный угол.
virtual bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const
 Определить, являются ли объекты равными.
virtual bool SetEqual (const MbSpaceItem &init)
 Сделать объекты равным, если они подобны.
virtual double DistanceToPoint (const MbCartPoint3D &) const
 Определить расстояние до точки.
virtual void AddYourGabaritTo (MbCube &r) const
 Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
virtual void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const
 Рассчитать габарит в локальной системы координат.
virtual void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const
 Создать полигональную копию.
virtual MbPropertyCreateProperty (MbePrompt n) const
 Создать собственное свойство с заданием его имени.
virtual void GetProperties (MbProperties &properties)
 Выдать свойства атрибутов.
virtual void SetProperties (const MbProperties &properties)
 Установить свойства атрибутов.
virtual void GetBasisPoints (MbControlData3D &) const
 Выдать контрольные точки объекта.
virtual void SetBasisPoints (const MbControlData3D &)
 Изменить объект по контрольным точкам.
virtual MbItemCreateMesh (const MbStepData &stepData, const MbFormNote &note, MbRegDuplicate *iReg) const
 Создать полигональный объект.
virtual bool AddYourMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const
 Добавить полигональный объект.
virtual MbItemCutMesh (const MbPlacement3D &cutPlace, double distance) const
 Разрезать полигональный объект одной или двумя параллельными плоскостями.
virtual bool NearestMesh (MbeSpaceType sType, MbeTopologyType tType, MbePlaneType pType, const MbAxis3D &axis, double maxDistance, bool gridPriority, double &t, double &dMin, MbItem *&find, SimpleName &findName, MbRefItem *&element, SimpleName &elementName, MbPath &path, MbMatrix3D &from) const
 Найти ближайший объект или имя ближайшего объекта.
bool LineIntersection (const MbFloatAxis3D &line, MbFloatPoint3D &crossPnt, float &tRes)
 Найти пересечение прямой линии и полигонального объекта.
Функции полигонального объекта.
bool IsAPointMesh () const
 Является ли полигональный объект аппроксимацией точки?
bool IsACurveMesh () const
 Является ли полигональный объект аппроксимацией кривой?
bool IsASurfaceMesh () const
 Является ли полигональный объект аппроксимацией поверхности?
bool IsASolidMesh () const
 Является ли полигональный объект аппроксимацией твёрдого тела?
bool IsComplete () const
 Содержат ли контейнеры сетки данные?
void GridsReserve (size_t cnt, bool fill=false)
 Зарезервировать место для пластин.
void PolygonsReserve (size_t cnt)
 Зарезервировать место для полигонов.
void ApexReserve (size_t cnt)
 Зарезервировать место для апексов.
void Flush ()
 Обнулить данные объекта.
void Adjust ()
 Освободить лишнюю память.
size_t GridsCount () const
 Выдать количество триангуляций.
void AddGrid (MbGrid &gr)
 Добавить триангуляцию.
MbGridAddGrid ()
 Добавить новую пустую триангуляцию и выдать её для заполнения.
MbGridDetachGrid (size_t i)
 Отсоединить триангуляцию с заданным номером.
template<class GridsVector >
void DetachAllGrids (GridsVector &gridsVector)
 Отсоединить все триангуляции.
const MbGridGetGrid (size_t i) const
 Вернуть указатель на триангуляцию по её номеру.
MbGridSetGrid (size_t i)
 Вернуть указатель на триангуляцию по её номеру для модификации.
template<class GridsVector >
void GetGrids (GridsVector &gridsVector) const
 Получить указатели на триангуляции.
size_t PolygonsCount () const
 Выдать количество полигонов.
void AddPolygon (MbPolygon3D &)
 Добавить полигон.
MbPolygon3DAddPolygon ()
 Добавить новый пустой полигон и выдать его для заполнения.
MbPolygon3DDetachPolygon (size_t i)
 Отсоединить полигон с заданным номером.
template<class PolygonsVector >
void DetachAllPolygons (PolygonsVector &polyVector)
 Отсоединить все полигоны.
const MbPolygon3DGetPolygon (size_t i) const
 Вернуть указатель на полигон по его номеру.
MbPolygon3DSetPolygon (size_t i)
 Вернуть указатель на полигон по его номеру.
template<class PolygonsVector >
void GetPolygons (PolygonsVector &polyVector) const
 Получить указатели на полигоны.
size_t ApexCount () const
 Выдать количество апексов.
void AddApex (MbApex3D &ap)
 Добавить новый апекс.
MbApex3DAddApex ()
 Добавить новый пустой апекс и выдать его для заполнения.
MbApex3DDetachApex (size_t i)
 Отсоединить апекс с заданным номером.
template<class ApexVector >
void DetachAllApex (ApexVector &apexVector)
 Отсоединить все апексы.
const MbApex3DGetApex (size_t i) const
 Вернуть указатель на апекс по его номеру.
MbApex3DSetApex (size_t i)
 Вернуть указатель на апекс по его номеру для модификации.
MbMeshCreateMeshByExistingItem (const MbRefItem &item) const
void InitMesh (const MbMesh &init)
 Инициализировать объект.
void AddMesh (const MbMesh &other)
 Добавить объекты сетки из присланной сетки.
const MbSpaceItemSpaceItem () const
 Получить пространственный объект, для которого построен полигональный объект.
const MbPlaneItemPlaneItem () const
 Получить двумерный объект, для которого построен полигональный объект.
const MbItemItem () const
 Получить объект геометрической модели, для которого построен полигональный объект.
const MbRefItemGetRefItem () const
 Получить объект, для которого построен полигональный объект.
void SetRefItem (const MbRefItem *g)
 Запомнить объект, для которого построен полигональный объект.
void ResetRefItems ()
 Сбросить все запомненные объекты.
void SetMeshType (MbeSpaceType t)
 Установить тип полигонального объекта.
MbeSpaceType GetMeshType () const
 Дать тип полигонального объекта.
void SetGridName (SimpleName n)
 Установить имя всем триангуляциям.
void SetPolygonName (SimpleName n)
 Установить имя всем полигонам.
void SetApexName (SimpleName n)
 Установить имя всем апексам.
bool IsClosed () const
 Замкнутость объекта.
void SetClosed (bool c)
 Установить (не)замкнутость объекта.
bool IsExact () const
 Объекты на числах double.
MbeItemLocation GetLocation (const MbPlacement3D &pl, double eps, bool onlyInItem=false) const
 Определить положение объекта относительно плоскости.
bool InsideLocation (const MbPlacement3D &place, MbRect &rect, double eps) const
 Определить положение объекта относительно трубы.
void ConvertAllToTriangles ()
 Перевести все объекты в треугольники и уравнять число точек и нормалей.
size_t AllTrianglesCount () const
 Общее количество всех треугольников.
size_t AllQuadranglesCount () const
 Общее количество всех четырёхугольников.
size_t AllPointsCount () const
 Общее количество всех точек триангуляций.
size_t AllNormalsCount () const
 Общее количество всех нормалей триангуляций.
size_t AllParamsCount () const
 Общее количество всех параметров триангуляций.
size_t AllPolyPointsCount () const
 Общее количество всех точек полигонов.

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

Фасетный объект - это объект геометрической модели, наследник MbItem, являющийся множеством примитивов MbPrimitive, аппроксимирующих некоторый геометрический объект для ускорения визуализации, вычисления инерционных характеристик, определения столкновений и других расчетов.

Например, сетку можно построить на основе множества точек, полученных замерами реального физического тела. Полигональный объект содержит множество точек, являющимися узлами (вершинами) в таких структурах данных: множество указателей на триангуляции MbGrid (наборы стыкующихса треугольных и четырёхугольных пластин), множество указателей на полигоны MbPolygon3D (наборы точек, описывающих ломаные линии), множество указателей на апексы MbApex3D (точки, описывающие положение вершин или объектов-точек).

Применение
Полигональный объект используется для представления геометрических объектов в упрощенном виде,
для визуализации геометрических объектов,
для расчетов столкновений геометрических объектов,
для вычисления масс-инерционных характеристик.
Если фасетный объект аппроксимирует тело MbSolid, то фасетный объект, как тело, может быть замкнутым или незамкнутым.
Граничные точки разных триангуляций для замкнутого объекта совпадают, но имеют в них разные нормали.

Методы

virtual MbSpaceItem& MbMesh::Duplicate ( MbRegDuplicate iReg = NULL) const [virtual]

Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.

Аргументы:
[in]iReg- Регистратор.
Возвращает:
Копия объекта.

Замещает MbItem.

virtual void MbMesh::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = NULL 
) [virtual]

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

Аргументы:
[in]matr- Матрица преобразования.
[in]iReg- Регистратор.

Замещает MbItem.

virtual void MbMesh::Move ( const MbVector3D to,
MbRegTransform iReg = NULL 
) [virtual]

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

Аргументы:
[in]to- Вектор сдвига.
[in]iReg- Регистратор.

Замещает MbItem.

virtual void MbMesh::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = NULL 
) [virtual]

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

Аргументы:
[in]axis- Ось поворота.
[in]angle- Угол поворота.
[in]iReg- Регистратор.

Замещает MbItem.

virtual bool MbMesh::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const [virtual]

Равными считаются однотипные объекты, все данные которых одинаковы (равны).

Аргументы:
[in]item- Объект для сравнения.
[in]accuracy- Точность сравнения.
Возвращает:
Равны ли объекты.

Замещает MbItem.

virtual bool MbMesh::SetEqual ( const MbSpaceItem item) [virtual]

Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.

Аргументы:
[in]item- Объект для инициализации.
Возвращает:
Сделан ли объект равным присланному.

Замещает MbItem.

virtual double MbMesh::DistanceToPoint ( const MbCartPoint3D point) const [virtual]

Определить расстояние до точки.

Аргументы:
[in]point- Точка.
Возвращает:
Расстояние от объекта до точки.

Замещает MbItem.

virtual void MbMesh::AddYourGabaritTo ( MbCube cube) const [virtual]

Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.

Аргументы:
[in,out]cube- Принимающий габаритный куб с информацией по габаритам.

Замещает MbItem.

virtual void MbMesh::CalculateLocalGabarit ( const MbMatrix3D into,
MbCube cube 
) const [virtual]

Для получения габарита объекта относительно локальной системы координат, присланный куб делается пустым. Затем вычисляются габариты объекта в локальной системе координат и сохраняются в кубе cube.

Аргументы:
[in]into- Матрица перехода от текущей для объекта системы координат к локальной системе координат.
[in,out]cube- Куб с информацией по габаритам.

Замещает MbItem.

virtual void MbMesh::CalculateWire ( const MbStepData stepData,
MbMesh mesh 
) const [virtual]

Создать полигональную копию данного объекта, представленную полигонами. Полигональный объект будет содержать только полигоны MbPolygon3D.

Аргументы:
[in]sag- Максимальное отклонение полигонального объекта от оригинала по прогибу.
[in,out]mesh- Принимающий полигональный объект.

Замещает MbItem.

virtual MbItem* MbMesh::CreateMesh ( const MbStepData stepData,
const MbFormNote note,
MbRegDuplicate iReg 
) const [virtual]

Создать полигональный объект - упрощенную копию данного объекта.

Аргументы:
[in]stepData- Данные для вычисления шага при триангуляции.
[in]note- Способ построения полигонального объекта.
Возвращает:
Построенный полигональный объект.

Замещает MbItem.

virtual bool MbMesh::AddYourMesh ( const MbStepData stepData,
const MbFormNote note,
MbMesh mesh 
) const [virtual]

Добавить свою полигональную копию в присланный полигональный объект.

Аргументы:
[in]stepData- Данные для вычисления шага при триангуляции.
[in]note- Способ построения полигонального объекта.
[out]mesh- Присланный полигональный объект.
Возвращает:
Добавлен ли объект.

Переопределяет метод предка MbItem.

virtual MbItem* MbMesh::CutMesh ( const MbPlacement3D cutPlace,
double  distance 
) const [virtual]

Построить полигональный объект из части исходного полигонального объекта, лежащей под плоскостью XY локальной системы координат на заданном расстоянии.
Функция "режет" только полигональный объект MbMesh. Функция "режет" объект двумя плоскостями: плоскостью XY локальной системы координат place и плоскостью, параллельной ей и расположенной на расстоянии distance ниже неё. Если distance<=0, то функция "режет" объект только одной плоскостью XY локальной системы.
Содержимое объекта, необходимое для построения разрезанного объекта и не затронутое режущими плоскостями, добавляется в возвращаемый разрезанный объект без копирования.

Аргументы:
[in]place- Локальная система координат, плоскость XY которой задаёт режущую плоскость.
[in]distance- Расстояние до параллельной режущей плоскости откладывается в отрицательную сторону оси Z локальной системы.
Возвращает:
Возвращает новый полигональный объект, лежащий под плоскость XY локальной системы координат на заданном расстоянии.

Переопределяет метод предка MbItem.

virtual bool MbMesh::NearestMesh ( MbeSpaceType  sType,
MbeTopologyType  tType,
MbePlaneType  pType,
const MbAxis3D axis,
double  maxDistance,
bool  gridPriority,
double &  t,
double &  dMin,
MbItem *&  find,
SimpleName findName,
MbRefItem *&  element,
SimpleName elementName,
MbPath path,
MbMatrix3D from 
) const [virtual]

Найти ближайший трехмерный объект или его имя по типу объекта и составляющий элемент искомого объекта или его имя по топологическому или двумерному типу элемента (по требованию) на расстоянии от прямой, не превышающем заданной величины. Функция предназначена для идентификации геометрического объекта, породившего полигональный объект. Реальный поиск выполняется для элементов MbPrimitive полигонального объекта MbMesh, у которых берётся информация о породившем примитив геометрическом объекте.

Аргументы:
[in]sType- Тип искомого объекта.
[in]tType- Топологический тип составляющего элемента искомого объекта.
[in]pType- Двумерный тип составляющего элемента искомого объекта.
[in]axis- Прямая поиска.
[in]maxDistance- Расстояние от прямой, на котором ищется объект.
[in]gridPriority- Повышенный приоритет триангуляционной сетки при поиске.
[out]t- Параметр прямой для найденной точки.
[out]dMin- Найденное расстояние объекта от прямой.
[out]find- Найденный объект.
[out]findName- Имя найденного объекта.
[out]element- Найденный составляющий элемент объекта.
[out]elementName- Имя найденного составляющего элемента объекта.
[out]path- Путь положения объекта в модели.
[out]from- Матрица преобразования найденного объекта в глобальную систему координат.
Возвращает:
Найден ли объект или его имя.

Переопределяет метод предка MbItem.

MbeItemLocation MbMesh::GetLocation ( const MbPlacement3D pl,
double  eps,
bool  onlyInItem = false 
) const

Определить положение объекта относительно плоскости XY локальной системы координат.

Аргументы:
[in]pl- Локальная система координат, задающая плоскость.
[in]eps- Метрическая точность.
[in]onlyInItem- Интересует только положение объекта над плоскостью XY локальной системы координат.
Возвращает:
iloc_OnItem - объект пересекает плоскость XY локальной системы координат,
iloc_InItem - объект расположен над плоскостью XY локальной системы координат,
iloc_OutOfItem - объект расположен под плоскостью XY локальной системы координат.
bool MbMesh::InsideLocation ( const MbPlacement3D place,
MbRect rect,
double  eps 
) const

Определить, расположен ли объект внутри трубы прямоугольного сечения, заданного прямоугольником в плоскости XY локальной системы координат.

Аргументы:
[in]place- Локальная система координат, в в плоскости XY которой лежит сечение трубы.
[in]rect- Прямоугольник, задающая сечение трубы.
[in]eps- Метрическая точность.
[in]onlyInItem- Интересует только положение объекта внутри трубы.
Возвращает:
true, если объект расположен внутри трубы.
bool MbMesh::LineIntersection ( const MbFloatAxis3D line,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Для всех треугольников определяется пересечение с прямой линии и вычисляется минимальное значение параметра точки пересечения на секущей прямой линии.

Аргументы:
[in]line- Прямая линия, для которой вычисляется пересечение с и полигонального объекта.
[out]crossPnt- Точка пересечения.
[out]tRes- Параметр точки пересечения на линии.
Возвращает:
Найдено ли пересечение (true - В случае успеха).

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