C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

Двумерный регион. Подробнее...

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

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

 MbRegion ()
 Пустой регион.
 
 MbRegion (const MbContour &, bool same)
 Регион с одним внешним контуром.
 
 MbRegion (const SPtr< MbContour > &, bool same)
 Регион с одним внешним контуром.
 
 MbRegion (const RPArray< MbContour > &, bool same)
 Регион с несколькими контурами.
 
 MbRegion (const std::vector< SPtr< MbContour > > &, bool same)
 Регион с несколькими контурами.
 
 MbRegion (const MbRegion &, bool same, MbRegDuplicate *iReg=NULL)
 Конструктор копии.
 
Общие функции геометрического объекта.
virtual MbePlaneType IsA () const
 Получить тип объекта.
 
virtual MbePlaneType Type () const
 Получить групповой тип объекта.
 
virtual MbePlaneType Family () const
 Получить семейство объекта.
 
virtual MbPlaneItemDuplicate (MbRegDuplicate *=NULL) const
 Создать копию. Подробнее...
 
virtual void Transform (const MbMatrix &matr, MbRegTransform *iReg=NULL, const MbSurface *newSurface=NULL)
 Преобразовать согласно матрице. Подробнее...
 
virtual void Move (const MbVector &to, MbRegTransform *iReg=NULL, const MbSurface *newSurface=NULL)
 Сдвинуть вдоль вектора. Подробнее...
 
virtual void Rotate (const MbCartPoint &pnt, const MbDirection &angle, MbRegTransform *iReg=NULL, const MbSurface *newSurface=NULL)
 Повернуть вокруг точки. Подробнее...
 
virtual bool IsSame (const MbPlaneItem &other, double accuracy=LENGTH_EPSILON) const
 Определить, являются ли объекты равными. Подробнее...
 
virtual bool SetEqual (const MbPlaneItem &item)
 Сделать объекты равным. Подробнее...
 
virtual void AddYourGabaritTo (MbRect &r) const
 Расширить присланный габаритный прямоугольник так, чтобы он включал в себя данный объект.
 
virtual bool IsVisibleInRect (const MbRect &r, bool exact=false) const
 Определить видимость объекта в прямоугольнике. Подробнее...
 
virtual double DistanceToPoint (const MbCartPoint &to) const
 Вычислить расстояние до точки.
 
virtual bool DistanceToPointIfLess (const MbCartPoint &to, double &distance) const
 Вычислить расстояние до точки. Подробнее...
 
virtual void Refresh ()
 Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние.
 
virtual MbPropertyCreateProperty (MbePrompt name) const
 Создать собственное свойство с заданием его имени.
 
virtual void GetProperties (MbProperties &)
 Выдать свойства объекта. Подробнее...
 
virtual void SetProperties (const MbProperties &)
 Изменить свойства объекта. Подробнее...
 
virtual void GetBasisPoints (MbControlData &) const
 Выдать контрольные точки объекта.
 
virtual void SetBasisPoints (const MbControlData &)
 Изменить объект по контрольным точкам.
 
Функции инициализации.
void Init (const MbContour &, bool same)
 Инициализация.
 
void Init (const RPArray< MbContour > &, bool same)
 Инициализация.
 
void Init (const std::vector< SPtr< MbContour > > &, bool same)
 Инициализация.
 
Функции доступа к данным.
size_t GetContoursCount () const
 Выдать количество контуров региона.
 
const MbContourGetContour (size_t k) const
 Выдать контур с индексом index.
 
const MbContourGetOutContour () const
 Выдать внешний контур.
 
Функции изменения данных.
MbContourSetContour (size_t k)
 Выдать контур с индексом index.
 
void DeleteContours ()
 Отсоединить используемые контуры и удалить остальные.
 
void DetachContours (RPArray< MbContour > &)
 Отцепить все контуры региона без удаления.
 
bool SetCorrect ()
 Сделать регион корректным (если это нужно и возможно).
 
ThreeStates GetCorrectState () const
 Состояние проверки корректности региона.
 
MbeItemLocation PointClassification (const MbCartPoint &, double metricAcc) const
 Определить положение точки относительно региона.
 
bool IsAnyCurvilinear () const
 Есть ли в контуре криволинейный сегмент.
 
bool IsSpaceSame (const MbRegion &) const
 Одинаковы ли регионы геометрически.
 
void CalculatePolygons (double sag, RPArray< MbPolygon > &polygons) const
 Рассчитать и добавить массивы отрисовочных точек с заданной стрелкой прогиба.
 
void DeleteInnerContours ()
 Удалить внутренние контуры.
 
bool DeleteInnerContour (size_t index)
 Удалить внутренний контур. Подробнее...
 
- Открытые члены унаследованные от MbPlaneItem
virtual ~MbPlaneItem ()
 Деструктор.
 
void PrepareWrite ()
 Регистрация объекта. Подробнее...
 
virtual MbeRefType RefType () const
 Получить регистрационный тип (для копирования, дублирования).
 
void Rotate (const MbCartPoint &pnt, double angle, MbRegTransform *iReg=NULL, const MbSurface *newSurface=NULL)
 Повернуть вокруг точки. Подробнее...
 
virtual bool IsSimilar (const MbPlaneItem &item) const
 Определить, являются ли объекты подобными. Подробнее...
 
- Открытые члены унаследованные от TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Конструктор.
 
 TapeBase (const TapeBase &other)
 Конструктор копирования
 
virtual ~TapeBase ()
 Деструктор.
 
RegistrableRec GetRegistrable () const
 Является ли потоковый класс регистрируемым.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Установить состояние регистрации потокового класса.
 
virtual ClassDescriptor GetClassDescriptor (const VersionContainer &) const =0
 Получить дескриптор класса
 
virtual const char * GetPureName (const VersionContainer &) const
 Получить имя класса.
 
virtual bool IsFamilyRegistrable () const
 Принадлежит ли объект к регистрируемому семейству.
 
- Открытые члены унаследованные от MbRefItem
 MbRefItem ()
 Конструктор без параметров.
 
refcount_t GetUseCount () const
 Выдать количество ссылок (выдать количество владельцев объекта).
 
refcount_t AddRef () const
 Увеличить количество ссылок на единицу.
 
refcount_t DecRef () const
 Уменьшить количество ссылок на единицу.
 
refcount_t Release () const
 Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя.
 

Дополнительные унаследованные члены

- Защищенные члены унаследованные от MbPlaneItem
 MbPlaneItem ()
 Конструктор.
 

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

Двумерный регион.

Регион состоит из набора замкнутых составных кривых (контуров) MbContour.
Регион представляет собой связное множество точек двумерного пространства, границы которого описывают контуры. Контуры региона замкнуты и не имеют самопересечений (но могут иметь самокасания). В произвольном регионе обязан быть один (и только один) внешний контур (положительный обход внешнего контура осуществляется против часовой стрелки) и несколько внутренних контуров (положительный обход внутреннего контура осуществляется по часовой стрелке), которые полностью лежат внутри внешнего контура (или могут его касаться). В массиве contours первым всегда лежит внешний контур. Над регионами можно выполнять булевы операции.

Методы

◆ Duplicate()

virtual MbPlaneItem& MbRegion::Duplicate ( MbRegDuplicate iReg = NULL) const
virtual

Создать копию.

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

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

Замещает MbPlaneItem.

◆ Transform()

virtual void MbRegion::Transform ( const MbMatrix matr,
MbRegTransform iReg = NULL,
const MbSurface newSurface = NULL 
)
virtual

Преобразовать согласно матрице.

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

Аргументы
[in]matr- Матрица преобразования.
[in]iReg- Регистратор.
[in]surface- Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская.

Замещает MbPlaneItem.

◆ Move()

virtual void MbRegion::Move ( const MbVector to,
MbRegTransform iReg = NULL,
const MbSurface newSurface = NULL 
)
virtual

Сдвинуть вдоль вектора.

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

Аргументы
[in]to- Вектор сдвига.
[in]iReg- Регистратор.
[in]surface- Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская.

Замещает MbPlaneItem.

◆ Rotate()

virtual void MbRegion::Rotate ( const MbCartPoint pnt,
const MbDirection angle,
MbRegTransform iReg = NULL,
const MbSurface newSurface = NULL 
)
virtual

Повернуть вокруг точки.

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

Аргументы
[in]pnt- Неподвижная точка.
[in]angle- Угол поворота.
[in]iReg- Регистратор.
[in]surface- Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская.

Замещает MbPlaneItem.

◆ IsSame()

virtual bool MbRegion::IsSame ( const MbPlaneItem item,
double  accuracy = LENGTH_EPSILON 
) const
virtual

Определить, являются ли объекты равными.

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

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

Замещает MbPlaneItem.

◆ SetEqual()

virtual bool MbRegion::SetEqual ( const MbPlaneItem item)
virtual

Сделать объекты равным.

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

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

Замещает MbPlaneItem.

◆ IsVisibleInRect()

virtual bool MbRegion::IsVisibleInRect ( const MbRect rect,
bool  exact = false 
) const
virtual

Определить видимость объекта в прямоугольнике.

Считается, что объект виден в прямоугольнике, если габариты объекта пересекаются с заданным прямоугольником или (при повышенных требованиях к точности exact = true) в прямоугольник попадает хотя бы одна точка объекта.

Аргументы
[in]rect- Прямоугольник, попадание в который проверяется.
[in]exact- Точность проверки. При exact = true в прямоугольник должна попасть хотя бы одна точка объекта. При exact = false - достаточно пересечения габарита объекта с прямоугольником.
Возвращает
true - объект виден в прямоугольнике, иначе - false.

Замещает MbPlaneItem.

◆ DistanceToPointIfLess()

virtual bool MbRegion::DistanceToPointIfLess ( const MbCartPoint to,
double &  d 
) const
virtual

Вычислить расстояние до точки.

Вычислить расстояние от объекта до заданной точки вблизи объекта. Расстояние вычисляется и записывается в переменную d, если оно меньше исходного значения d. Может быть получен выигрыш по времени выполнения по сравнению с функцией DistanceToPoint, за счет того, что сначала проверяется расстояние от точки до габаритного куба, и только если это расстояние не больше заданного, выполняются дальнейшие вычисления.

Аргументы
[in]to- Tочка.
[in,out]d- На входе - заданная величина отступа от объекта. На выходе - расстояние от точки до объекта, если операция выполнена успешно.
Возвращает
true, если расстояние от точки до объекта меньше заданного, иначе - false. Рассчитать расстояние до точки и изменить его присланное значение, если расстояние окажется меньше присланного значения.

Замещает MbPlaneItem.

◆ GetProperties()

virtual void MbRegion::GetProperties ( MbProperties properties)
virtual

Выдать свойства объекта.

Выдать внутренние данные (свойства) объекта для их просмотра и модификации.

Аргументы
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbPlaneItem.

◆ SetProperties()

virtual void MbRegion::SetProperties ( const MbProperties properties)
virtual

Изменить свойства объекта.

Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.

Аргументы
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbPlaneItem.

◆ DeleteInnerContour()

bool MbRegion::DeleteInnerContour ( size_t  index)

Удалить внутренний контур.

Удалить внутренний контур по индексу. Индекс проверяется на корректность.

Аргументы
[in]index- Индекс внутреннего контура. Должен быть больше нуля, но меньше количества контуров.
Возвращает
true Если контур был удален.

Объявления и описания членов класса находятся в файле: