C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

Мультилиния. Подробнее...

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

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

 MbMultiline ()
 Конструктор пустой мультилинии.
 
 MbMultiline (const MbContour &_basisCurve, const StVertexOfMultilineInfo &vertInfo, const SArray< double > &_equidRadii, const StMLTipParams &_begTipParams, const StMLTipParams &_endTipParams, bool _processClosed, bool _isTransparent)
 Конструктор. Подробнее...
 
Общие функции геометрического объекта
virtual MbePlaneType IsA () const
 Получить тип объекта.
 
virtual MbePlaneType Type () const
 Получить групповой тип объекта.
 
virtual MbePlaneType Family () const
 Получить семейство объекта.
 
virtual bool IsSame (const MbPlaneItem &other, double accuracy=LENGTH_EPSILON) const
 Определить, являются ли объекты равными. Подробнее...
 
virtual bool IsSimilar (const MbPlaneItem &item) const
 Определить, являются ли объекты подобными. Подробнее...
 
virtual bool SetEqual (const MbPlaneItem &item)
 Сделать объекты равным. Подробнее...
 
virtual void Transform (const MbMatrix &matr, MbRegTransform *=NULL, const MbSurface *newSurface=NULL)
 Преобразовать согласно матрице. Подробнее...
 
virtual void Move (const MbVector &to, MbRegTransform *=NULL, const MbSurface *newSurface=NULL)
 Сдвинуть вдоль вектора. Подробнее...
 
virtual void Rotate (const MbCartPoint &pnt, const MbDirection &angle, MbRegTransform *=NULL, const MbSurface *newSurface=NULL)
 Повернуть вокруг точки. Подробнее...
 
virtual MbPlaneItemDuplicate (MbRegDuplicate *=NULL) const
 Создать копию. Подробнее...
 
virtual void AddYourGabaritTo (MbRect &r) const
 Расширить присланный габаритный прямоугольник так, чтобы он включал в себя данный объект.
 
virtual bool IsVisibleInRect (const MbRect &r, bool exact=false) const
 Определить видимость объекта в прямоугольнике. Подробнее...
 
virtual double DistanceToPoint (const MbCartPoint &toP) const
 Вычислить расстояние до точки.
 
virtual bool DistanceToPointIfLess (const MbCartPoint &to, double &distance) const
 Вычислить расстояние до точки. Подробнее...
 
virtual MbPropertyCreateProperty (MbePrompt name) const
 Создать собственное свойство с заданием его имени.
 
virtual void GetProperties (MbProperties &properties)
 Выдать свойства объекта. Подробнее...
 
virtual void SetProperties (const MbProperties &properties)
 Изменить свойства объекта. Подробнее...
 
virtual void GetBasisPoints (MbControlData &) const
 Выдать контрольные точки объекта.
 
virtual void SetBasisPoints (const MbControlData &)
 Изменить объект по контрольным точкам.
 
Функции доступа к данным
const MbContourGetBasisCurve () const
 Базовая кривая.
 
MbContourSetBasisCurve ()
 Дать базовую кривую для изменения.
 
size_t GetVerticesCount () const
 Количество вершин.
 
const StVertexOfMultilineInfoGetVertex (size_t i) const
 Вершина по номеру. Номер должен быть меньше количества вершин.
 
size_t GetEquidRadiiCount () const
 Количество радиусов эквидистант.
 
double GetEquidRadius (size_t i) const
 Радиус эквидистанты по номеру. Номер должен быть меньше количества радиусов.
 
const StMLTipParamsGetBegTipParams () const
 Параметры законцовки в начале мультилинии.
 
const StMLTipParamsGetEndTipParams () const
 Параметры законцовки в конце мультилинии.
 
bool IsProcessClosed () const
 Признак обрабатывания замкнутости базовой кривой.
 
bool IsTransparent () const
 Прозрачность мультилинии.
 
size_t GetCurvesCount () const
 Количество кривых мультилинии.
 
const MbContourWithBreaksGetCurve (size_t i) const
 Кривая мультилинии по номеру. Номер должен быть меньше количества кривых.
 
size_t GetTipCurvesCount () const
 Количество кривых - законцовок в вершинах мультилинии.
 
const MbContourGetTipCurve (size_t i) const
 Кривая - законцовка по номеру. Номер должен быть меньше количества законцовок.
 
const MbContourGetBegTipCurve () const
 Законцовка в начале мультилинии.
 
const MbContourGetEndTipCurve () const
 Законцовка в конце мультилинии.
 
double GetMaxPosRadius () const
 Максимально возможный для невывернутого построения положительный радиус.
 
double GetMinNegRadius () const
 Минимально возможный для невывернутого построения отрицательный радиус.
 
size_t GetMinNotDegInd () const
 Индекс невырожденной кривой мультилинии с минимальным радиусом
 
size_t GetMaxNotDegInd () const
 Индекс невырожденной кривой мультилинии с максимальным радиусом
 
Функции изменения данных: изменение базовой кривой мультилинии
void ClearBasisCurve ()
 Очистить базовую кривую.
 
void ReplaceBasisCurve (const MbContour &_basisCurve, const StVertexOfMultilineInfo &vertInfo)
 Заменить базовую кривую. Подробнее...
 
bool AddBasisSegment (MbCurve *segment, const StVertexOfMultilineInfo &vertInfo)
 Добавить сегмент в базовую кривую. Подробнее...
 
void DeleteLastBasisSegment ()
 Удалить последний сегмент базовой кривой.
 
size_t InsertVertex (double t, const StVertexOfMultilineInfo &vertInfo)
 Вставить вершину. Подробнее...
 
bool RemoveVertex (size_t i)
 Удалить вершину мультилинии. Подробнее...
 
bool SetBasisCurvesGeoHotPoint (size_t segInd, size_t subInd, const MbCartPoint &newPoint)
 Сместить геометрическую hot-точку. Подробнее...
 
bool DelBasisCurvesGeoHotPoint (size_t segInd, size_t subInd)
 Удалить геометрическую hot-точку. Подробнее...
 
Функции изменения данных: скругления и фаски базовой кривой
bool FilletTwoBasisSegments (ptrdiff_t &index, double rad, const StVertexOfMultilineInfo &vertInfo)
 Скруглить два соседних сегмента. Подробнее...
 
bool FilletBasisCurve (double rad, const StVertexOfMultilineInfo &vertInfo)
 Скруглить базовую кривую. Подробнее...
 
bool ChamferTwoBasisSegments (ptrdiff_t &index, double len, double par, bool type, bool firstSeg, const StVertexOfMultilineInfo &vertInfo)
 Вставить фаску между двумя соседними сегментами базовой кривой мультилинии. Подробнее...
 
bool ChamferBasisCurve (double len, double par, bool type, const StVertexOfMultilineInfo &vertInfo)
 Вставить фаску между каждыми двумя соседними сегментами базовой кривой мультилинии. Подробнее...
 
Функции изменения данных: изменение параметров вершины мультилинии
void SetSmoothJoint (size_t i, bool othSmoothJoint)
 Установить флаг гладкого стыка. Подробнее...
 
void SetTracingType (size_t i, EnMLVertexTracingType othTracingType)
 Установить тип обхода. Подробнее...
 
void SetSpecFilletRad (size_t i, double othSpecFilletRad)
 Установить радиус специального скругления. Подробнее...
 
void SetTipType (size_t i, EnMLInnerTipType othTipType)
 Установить тип законцовки. Подробнее...
 
void SetTipDirection (size_t i, bool othFirstSegTip)
 Установить направление законцовки. Подробнее...
 
void SetVertexOfMultilineInfo (size_t i, const StVertexOfMultilineInfo &vertInfo)
 Установить информацию о вершине. Подробнее...
 
Функции изменения данных: изменение радиусов эквидистант
bool SetRadius (size_t i, double radius, size_t &newIndex)
 Установить значение радиуса кривой. Подробнее...
 
bool SetRadii (const CSSArray< double > &newRadii)
 Изменение всех радиусов кривых. Подробнее...
 
void ChangeRadius (double oldRadius, double radius)
 Изменение радиуса. Подробнее...
 
size_t AddRadius (double radius)
 Добавление радиуса кривой мультилинии. Подробнее...
 
bool RemoveRadius (size_t i)
 Удаление кривой. Подробнее...
 
bool RemoveRadius (double oldRadius)
 Удаление кривой. Подробнее...
 
Функции изменения данных: изменение параметров законцовок
void SetBegTipType (EnMLTipType othTipType)
 Изменение типа законцовки в начале. Подробнее...
 
void SetBegTipParam (double othTipParam)
 Изменение параметра законцовки в начале. Подробнее...
 
void SetEndTipType (EnMLTipType othTipType)
 Изменение типа законцовки в конце. Подробнее...
 
void SetEndTipParam (double othTipParam)
 Изменение параметра законцовки в конце. Подробнее...
 
Функции изменения данных
void SetProcessClosed (bool othProcessClosed)
 Изменение обработки замкнутости. Подробнее...
 
void SetTransparent (bool othTransparent)
 Изменение прозрачности мультилинии. Подробнее...
 
Работа с разрывами: добавление разрывов
bool DeletePartP1P2 (MbContourWithBreaks *contour, const MbCartPoint &point1, const MbCartPoint &point2, const MbCartPoint &point3, bool invertBreak=false)
 Усечение части кривой мультилинии между точками. Подробнее...
 
bool DeletePartP1P2 (size_t cNumber, const MbCartPoint &point1, const MbCartPoint &point2, const MbCartPoint &point3, bool invertBreak=false)
 Усечение части кривой мультилинии между точками. Подробнее...
 
bool DeletePartP1P2 (size_t cNumber, double t1, double t2, double t3, bool invertBreak=false)
 Усечение части кривой мультилинии между параметрами контура. Подробнее...
 
Работа с разрывами: удаление разрывов
bool DeleteBreaks ()
 Удалить разрывы. Подробнее...
 
bool DeleteBreaks (size_t cNumber)
 Удалить разрывы кривой. Подробнее...
 
bool DeleteBreak (size_t cNumber, double t)
 Удалить разрыв кривой. Подробнее...
 
bool DeleteBreakAtNumber (size_t cNumber, size_t brNumber)
 Удалить разрыв. Подробнее...
 
bool DeleteSmallBreaks (size_t cNumber, double length)
 Удалить разрывы малой длины. Подробнее...
 
bool DeleteSmallVisContours (size_t cNumber, double length)
 Удалить малые видимые части. Подробнее...
 
Работа с разрывами
bool IsRectInBreak (size_t cNumber, const MbRect1D &rect)
 Находится ли интервал на разрыве. Подробнее...
 
void GetBreaksInInvisContours (RPArray< MbContour > &invisContours)
 Запомнить разрывы. Подробнее...
 
void AddBreaksByInvisContours (RPArray< MbContour > &invisContours)
 Добавить разрывы. Подробнее...
 
void CurvesIntersectNumbers (const MbCartPoint &p1, const MbCartPoint &p2, SArray< size_t > &cNumbers) const
 Номера контуров, пересекаемых отрезком. Подробнее...
 
Информация о мультилинии
bool IsDegenerate () const
 Вырождена ли мультилиния. Подробнее...
 
bool IsClosed () const
 Замкнутая ли мультилиния. Подробнее...
 
double GetWidth () const
 Получить ширину мультилинии. Подробнее...
 
bool IsPointOn (const MbCartPoint &point) const
 Лежит ли данная точка на мультилинии.
 
size_t FindRadius (double radius)
 Найти индекс кривой мультилинии. Подробнее...
 
Операции с мультилинией
MbMultilineTrimmed (double t1, double t2, int sense) const
 Усечь мультилинию. Подробнее...
 
- Открытые члены унаследованные от MbPlaneItem
virtual ~MbPlaneItem ()
 Деструктор.
 
void PrepareWrite ()
 Регистрация объекта. Подробнее...
 
virtual MbeRefType RefType () const
 Получить регистрационный тип (для копирования, дублирования).
 
void Rotate (const MbCartPoint &pnt, double angle, MbRegTransform *iReg=NULL, const MbSurface *newSurface=NULL)
 Повернуть вокруг точки. Подробнее...
 
virtual void Refresh ()
 Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние.
 
- Открытые члены унаследованные от 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
 Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя.
 

Защищенные члены

 MbMultiline (const MbMultiline &)
 Копирующий конструктор.
 
- Защищенные члены унаследованные от MbPlaneItem
 MbPlaneItem ()
 Конструктор.
 

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

Мультилиния.

Мультилиния - составной геометрический объект, состоящий из
1) кривых curves, построенных эквидистантно к базовой кривой мультилинии basisCurve с радиусами equidRadii. При этом способ обхода углов для каждой вершины basisCurve определяется отдельно (с помощью vertices.tracingType и vertices.specFilletRad).
2) массива законцовок tipCurves в вершинах мультилинии, тип которых определяется соответствующим vertices[i].tipParams.tipType.
3) законцовок begTipCurve и endTipCurve на концах мультилинии, тип которых определяется с помощью begTipParams и endTipParams.
При создании линии мультилинии (добавлении радиуса эквидистанты) создается контур, который будет жить (меняться только внутри) до того момента, пока в массиве equidRadii есть соответствующий ему в начале элемент.
Контур законцовки живет до тех пор, пока соответствующий тип законцовки не равен m_t_UndefTip.
За существованием и удалением законцовок должны следить функции SetTipType.
При построении кривых мультилинии вырожденные участки исключаются только в вершинах (перехлесты).

Конструктор(ы)

◆ MbMultiline()

MbMultiline::MbMultiline ( const MbContour _basisCurve,
const StVertexOfMultilineInfo vertInfo,
const SArray< double > &  _equidRadii,
const StMLTipParams _begTipParams,
const StMLTipParams _endTipParams,
bool  _processClosed,
bool  _isTransparent 
)

Конструктор.

Конструктор.

Аргументы
[in]_basisCurve- Базовая кривая.
[in]vertInfo- Информация о вершине мультилинии (применяется ко всем вершинам).
[in]_equidRadii- Сортированный массив радиусов эквидистантных кривых.
[in]_begTipParams- Параметры законцовки в начале мультилинии.
[in]_endTipParams- Параметры законцовки в конце мультилинии.
[in]_processClosed- Обрабатывать ли замкнутость базовой кривой.
[in]_isTransparent- "Прозрачная" ли мультилиния
параметр не используется, мультилиния считается прозрачной.

Методы

◆ IsSame()

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

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

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

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

Замещает MbPlaneItem.

◆ IsSimilar()

virtual bool MbMultiline::IsSimilar ( const MbPlaneItem item) const
virtual

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

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

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

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

◆ SetEqual()

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

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

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

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

Замещает MbPlaneItem.

◆ Transform()

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

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

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

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

Замещает MbPlaneItem.

◆ Move()

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

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

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

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

Замещает MbPlaneItem.

◆ Rotate()

virtual void MbMultiline::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.

◆ Duplicate()

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

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

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

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

Замещает MbPlaneItem.

◆ IsVisibleInRect()

virtual bool MbMultiline::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 MbMultiline::DistanceToPointIfLess ( const MbCartPoint to,
double &  d 
) const
virtual

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

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

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

Замещает MbPlaneItem.

◆ GetProperties()

virtual void MbMultiline::GetProperties ( MbProperties properties)
virtual

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

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

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

Замещает MbPlaneItem.

◆ SetProperties()

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

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

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

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

Замещает MbPlaneItem.

◆ ReplaceBasisCurve()

void MbMultiline::ReplaceBasisCurve ( const MbContour _basisCurve,
const StVertexOfMultilineInfo vertInfo 
)

Заменить базовую кривую.

Заменить базовую кривую.

При замене базовой кривой мультилинии в ней удаляются все разрывы.

Аргументы
[in]_basisCurve- Новая базовая кривая.
[in]vertInfo- Новая информация о вершинах мультилинии.

◆ AddBasisSegment()

bool MbMultiline::AddBasisSegment ( MbCurve segment,
const StVertexOfMultilineInfo vertInfo 
)

Добавить сегмент в базовую кривую.

Добавить сегмент в базовую кривую.

Аргументы
[in]segment- Добавляемый сегмент,
если является ломаной или контуром, то в мультилинию добавляются только составляющие сегменты.
[in]vertInfo- Информация присваивается всем добавленным или измененным вершинам.
Возвращает
true, если сегмент был добавлен.

◆ InsertVertex()

size_t MbMultiline::InsertVertex ( double  t,
const StVertexOfMultilineInfo vertInfo 
)

Вставить вершину.

Вставить вершину. Сегмент разбивается на два.

Аргументы
[in]t- Параметр на базовой кривой.
[in]vertInfo- Информация о новой вершине мультилинии.
Возвращает
Индекс разбитого сегмента.

◆ RemoveVertex()

bool MbMultiline::RemoveVertex ( size_t  i)

Удалить вершину мультилинии.

Удалить вершину мультилинии.

Пара сегментов, примыкающих к вершине, заменяется отрезком.
Разрывы на прилегающих сегментах исчезают. Разрывы, лежащие на прямолинейных прилегающих сегментах, остаются, привязываясь к вершинам нового отрезка.

Аргументы
[in]i- Индекс вершины.
Возвращает
true, если вершина была удалена.

◆ SetBasisCurvesGeoHotPoint()

bool MbMultiline::SetBasisCurvesGeoHotPoint ( size_t  segInd,
size_t  subInd,
const MbCartPoint newPoint 
)

Сместить геометрическую hot-точку.

Сместить геометрическую hot-точку базовой кривой.

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

Аргументы
[in]segInd- Номер сегмента.
[in]subInd- Номер точки на сегменте:
если subInd = 0 - общая точка между двумя сегментами (может быть задана для любого сегмента),
если subInd = 1 - средняя точкой отрезка, средняя точкой дуги, базовая точка сплайнов pt_Nurbs и pt_Bezier,
если subInd > 1 - базовая точка сплайнов pt_Nurbs и pt_Bezier.
[in]newPoint- Новое положение точки.
Возвращает
Точка была смещена.

◆ DelBasisCurvesGeoHotPoint()

bool MbMultiline::DelBasisCurvesGeoHotPoint ( size_t  segInd,
size_t  subInd 
)

Удалить геометрическую hot-точку.

Удалить геометрическую hot-точку базовой кривой.

Аргументы
[in]segInd- Номер сегмента.
[in]subInd- Номер точки на сегменте:
если subInd = 0 - результат аналогичен удалению вершины мультилинии RemoveVertex,
если subInd = 1 - удаление средней точки дуги (дуга заменяется отрезком), удаление базовой точки сплайнов pt_Nurbs и pt_Bezier (изменение формы),
если subInd > 1 - удаление базовой точки сплайнов pt_Nurbs и pt_Bezier (изменение формы).


Возвращает
true, если hot-точка была удалена.

◆ FilletTwoBasisSegments()

bool MbMultiline::FilletTwoBasisSegments ( ptrdiff_t &  index,
double  rad,
const StVertexOfMultilineInfo vertInfo 
)

Скруглить два соседних сегмента.

Скруглить два соседних сегмента базовой кривой.

Аргументы
[in]index- Индекс первого скругляемого сегмента.
[in]rad- Радиус скругления.
[in]vertInfo- Информация для новых вершин мультилинии.
Возвращает
true в случае успеха операции.

◆ FilletBasisCurve()

bool MbMultiline::FilletBasisCurve ( double  rad,
const StVertexOfMultilineInfo vertInfo 
)

Скруглить базовую кривую.

Скруглить все углы базовой кривой.

Аргументы
[in]rad- Радиус скругления.
[in]vertInfo- Информация для новых вершин мультилинии.
Возвращает
true, если добавилось хотя бы одно скругление.

◆ ChamferTwoBasisSegments()

bool MbMultiline::ChamferTwoBasisSegments ( ptrdiff_t &  index,
double  len,
double  par,
bool  type,
bool  firstSeg,
const StVertexOfMultilineInfo vertInfo 
)

Вставить фаску между двумя соседними сегментами базовой кривой мультилинии.

Вставить фаску между двумя соседними сегментами базовой кривой мультилинии.

Аргументы
[in]index- Индекс первого скругляемого сегмента.
[in]len- Длина фаски.
[in]par- Параметр в зависимости от типа type:
если type = true, par - угол
если type = false, par - размер.
[in]type- Тип задания фаски:
true - фаска задана как размер + угол,
false - фаска задана как размер + размер.
[in]firstSeg- true, если параметр par относится к первому сегменту.
[in]vertInfo- Информация для новых вершин мультилинии.
Возвращает
true в случае успеха операции.

◆ ChamferBasisCurve()

bool MbMultiline::ChamferBasisCurve ( double  len,
double  par,
bool  type,
const StVertexOfMultilineInfo vertInfo 
)

Вставить фаску между каждыми двумя соседними сегментами базовой кривой мультилинии.

Вставить фаску между каждыми двумя соседними сегментами базовой кривой мультилинии.


Параметр par относится к первому сегменту из каждой пары.

Аргументы
[in]len- Длина фаски.
[in]par- Параметр в зависимости от типа type:
если type = true, par - угол,
если type = false, par - размер.
[in]type- Тип задания фаски:
true - фаска задана как размер + угол,
false - фаска задана как размер + размер.



Аргументы
[in]vertInfo- Информация для новых вершин мультилинии.
Возвращает
true, если добавилась хотя бы одна фаска. Вставить фаску БК

◆ SetSmoothJoint()

void MbMultiline::SetSmoothJoint ( size_t  i,
bool  othSmoothJoint 
)

Установить флаг гладкого стыка.

Установить флаг гладкого стыка в вершине.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]othSmoothJoint- Флаг гладкого стыка.

◆ SetTracingType()

void MbMultiline::SetTracingType ( size_t  i,
EnMLVertexTracingType  othTracingType 
)

Установить тип обхода.

Установить тип обхода вершины.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]othTracingType- Тип обхода.

◆ SetSpecFilletRad()

void MbMultiline::SetSpecFilletRad ( size_t  i,
double  othSpecFilletRad 
)

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

Установить радиус специального скругления вершины мультилинии.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]othSpecFilletRad- Радиус.

◆ SetTipType()

void MbMultiline::SetTipType ( size_t  i,
EnMLInnerTipType  othTipType 
)

Установить тип законцовки.

Установить тип законцовки (разделителя) в вершине.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]othTipType- Тип законцовки.

◆ SetTipDirection()

void MbMultiline::SetTipDirection ( size_t  i,
bool  othFirstSegTip 
)

Установить направление законцовки.

Установить направление законцовки в вершине мультилинии.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]othFirstSegTip- Направление законцовки, если true - от первого сегмента.

◆ SetVertexOfMultilineInfo()

void MbMultiline::SetVertexOfMultilineInfo ( size_t  i,
const StVertexOfMultilineInfo vertInfo 
)

Установить информацию о вершине.

Установить информацию о вершине мультилинии.

Аргументы
[in]i- Индекс вершины мультилинии.
[in]vertInfo- Информация о вершине.

◆ SetRadius()

bool MbMultiline::SetRadius ( size_t  i,
double  radius,
size_t &  newIndex 
)

Установить значение радиуса кривой.

Установить значение радиуса кривой.

Аргументы
[in]i- Индекс кривой мультилинии.
[in]radius- Новое значение радиуса.
[out]newIndex- Новый индекс кривой.
Возвращает
true, если радиус был изменен.

◆ SetRadii()

bool MbMultiline::SetRadii ( const CSSArray< double > &  newRadii)

Изменение всех радиусов кривых.

Изменение одновременно всех радиусов кривых.
Значения радиусов будут изменены, если их количество в newRadii совпадает с количеством кривых.

Аргументы
[in]newRadii- Новые значения радиусов кривых.
Возвращает
true, если радиусы были изменены.

◆ ChangeRadius()

void MbMultiline::ChangeRadius ( double  oldRadius,
double  radius 
)

Изменение радиуса.

Изменение радиуса кривой мультилинии.

Аргументы
[in]oldRadius- Старое значение радиуса.
[in]radius- Новое значение радиуса.

◆ AddRadius()

size_t MbMultiline::AddRadius ( double  radius)

Добавление радиуса кривой мультилинии.

Добавление радиуса кривой мультилинии.
Фактически, добавление кривой мультилинии.


Аргументы
[in]radius- Значение радиуса.
Возвращает
Значение индекса новой кривой
если кривая не была добавлена, индекс равен SYS_MAX_T.

◆ RemoveRadius() [1/2]

bool MbMultiline::RemoveRadius ( size_t  i)

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

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

Аргументы
[in]i- Индекс кривой.
Возвращает
true, если кривая была удалена.

◆ RemoveRadius() [2/2]

bool MbMultiline::RemoveRadius ( double  oldRadius)

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

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

Аргументы
[in]oldRadius- Радиус кривой.
Возвращает
true, если кривая была удалена.

◆ SetBegTipType()

void MbMultiline::SetBegTipType ( EnMLTipType  othTipType)

Изменение типа законцовки в начале.

Изменение типа законцовки мультилинии в начале.

Аргументы
[in]othTipType- Новый тип законцовки.

◆ SetBegTipParam()

void MbMultiline::SetBegTipParam ( double  othTipParam)

Изменение параметра законцовки в начале.

Изменение параметра законцовки мультилинии в начале.

Аргументы
[in]othTipParam- Новый параметр законцовки.

◆ SetEndTipType()

void MbMultiline::SetEndTipType ( EnMLTipType  othTipType)

Изменение типа законцовки в конце.

Изменение типа законцовки мультилинии в конце.

Аргументы
[in]othTipType- Новый тип законцовки.

◆ SetEndTipParam()

void MbMultiline::SetEndTipParam ( double  othTipParam)

Изменение параметра законцовки в конце.

Изменение параметра законцовки мультилинии в конце.

Аргументы
[in]othTipParam- Новый параметр законцовки.

◆ SetProcessClosed()

void MbMultiline::SetProcessClosed ( bool  othProcessClosed)

Изменение обработки замкнутости.

Изменение флага обработки замкнутости.

Аргументы
[in]othProcessClosed- Флаг обработки замкнутости.

◆ SetTransparent()

void MbMultiline::SetTransparent ( bool  othTransparent)

Изменение прозрачности мультилинии.

Изменение флага прозрачности мультилинии.

Аргументы
[in]othTransparent- Флаг прозрачности.

◆ DeletePartP1P2() [1/3]

bool MbMultiline::DeletePartP1P2 ( MbContourWithBreaks contour,
const MbCartPoint point1,
const MbCartPoint point2,
const MbCartPoint point3,
bool  invertBreak = false 
)

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

Усечение части кривой мультилинии между точками.
Добавление разрыва.


Аргументы
[in]contour- Кривая мультилинии для добавления разрыва.
[in]point1- Первая граница разрыва.
[in]point2- Вторая граница разрыва.
[in]point3- Точка, которая показывает удаляемую часть замкнутого контура,
в случае разомкнутого контура она игнорируется.
[in]invertBreak- Если true, то разрыв накладывается на противоположную часть контура.
Возвращает
true, если разрыв был добавлен.

◆ DeletePartP1P2() [2/3]

bool MbMultiline::DeletePartP1P2 ( size_t  cNumber,
const MbCartPoint point1,
const MbCartPoint point2,
const MbCartPoint point3,
bool  invertBreak = false 
)

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

Усечение части кривой мультилинии между точками.
Добавление разрыва.


Аргументы
[in]cNumber- Номер кривой мультилинии для добавления разрыва.
[in]point1- Первая граница разрыва.
[in]point2- Вторая граница разрыва.
[in]point3- Точка, которая показывает удаляемую часть замкнутого контура,
в случае разомкнутого контура она игнорируется.
[in]invertBreak- Если true, то разрыв накладывается на противоположную часть контура.
Возвращает
true, если разрыв был добавлен.

◆ DeletePartP1P2() [3/3]

bool MbMultiline::DeletePartP1P2 ( size_t  cNumber,
double  t1,
double  t2,
double  t3,
bool  invertBreak = false 
)

Усечение части кривой мультилинии между параметрами контура.

Усечение части кривой мультилинии между параметрами контура.
Добавление разрыва.


Аргументы
[in]cNumber- Номер кривой мультилинии для добавления разрыва.
[in]t1- Первая граница разрыва.
[in]t2- Вторая граница разрыва.
[in]t3- Параметр, который показывает удаляемую часть замкнутого контура,
в случае разомкнутого контура он игнорируется.
[in]invertBreak- Если true, то разрыв накладывается на противоположную часть контура.
Возвращает
true, если разрыв был добавлен.

◆ DeleteBreaks() [1/2]

bool MbMultiline::DeleteBreaks ( )

Удалить разрывы.

Удалить все разрывы мультилинии.

Возвращает
true, если хотя бы один разрыв был удален.

◆ DeleteBreaks() [2/2]

bool MbMultiline::DeleteBreaks ( size_t  cNumber)

Удалить разрывы кривой.

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

Аргументы
[in]cNumber- Номер кривой.
Возвращает
true, если хотя бы один разрыв был удален.

◆ DeleteBreak()

bool MbMultiline::DeleteBreak ( size_t  cNumber,
double  t 
)

Удалить разрыв кривой.

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

Аргументы
[in]cNumber- Номер кривой.
[in]t- Параметр на кривой.
Возвращает
true, если разрыв был удален.

◆ DeleteBreakAtNumber()

bool MbMultiline::DeleteBreakAtNumber ( size_t  cNumber,
size_t  brNumber 
)

Удалить разрыв.

Удалить разрыв по номеру.

Аргументы
[in]cNumber- Номер кривой.
[in]brNumber- Номер разрыва на кривой.
Возвращает
true, если разрыв был удален.

◆ DeleteSmallBreaks()

bool MbMultiline::DeleteSmallBreaks ( size_t  cNumber,
double  length 
)

Удалить разрывы малой длины.

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

Аргументы
[in]cNumber- Номер кривой мультилинии.
[in]length- Минимальная длина невидимой части.
Возвращает
true, если хотя бы один разрыв кривой был удален.

◆ DeleteSmallVisContours()

bool MbMultiline::DeleteSmallVisContours ( size_t  cNumber,
double  length 
)

Удалить малые видимые части.

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

Соответствует объединению близких разрывов в один. В случае успеха видимые контуры кривой перестраиваются соответственно разрывам.

Аргументы
[in]cNumber- Номер кривой мультилинии.
[in]length- Минимальная длина видимой части.
Возвращает
true, если разрывы кривой были изменены.

◆ IsRectInBreak()

bool MbMultiline::IsRectInBreak ( size_t  cNumber,
const MbRect1D rect 
)

Находится ли интервал на разрыве.

Находится ли интервал параметров на разрыве кривой.

Аргументы
[in]cNumber- Номер кривой мультилинии.
[in]rect- Интервал для проверки.
Возвращает
true, если интервал полностью находится на разрыве или совпадает с ним.

◆ GetBreaksInInvisContours()

void MbMultiline::GetBreaksInInvisContours ( RPArray< MbContour > &  invisContours)

Запомнить разрывы.

Запомнить разрывы невидимыми контурами.

Для использования в паре с AddBreaksByInvisContours.
Удаляет все разрывы мультилинии.
Все контуры invisContours имеют счетчик ссылок = 1 (вызван AddRef()).

Аргументы
[out]invisContours- Набор невидимых контуров всех кривых мультилинии.

◆ AddBreaksByInvisContours()

void MbMultiline::AddBreaksByInvisContours ( RPArray< MbContour > &  invisContours)

Добавить разрывы.

Добавить разрывы невидимыми контурами.

Для использования в паре с GetBreaksInInvisContours.

Контуры invisContours удаляются (вызывается Release()).
Данной функцией можно наложить разрывы на мультилинию, если они были получены методом GetBreaksInInvisContours у этой мультилинии и форма мультилинии не была изменена.

Аргументы
[in]invisContours- Набор невидимых контуров всех кривых мультилинии.

◆ CurvesIntersectNumbers()

void MbMultiline::CurvesIntersectNumbers ( const MbCartPoint p1,
const MbCartPoint p2,
SArray< size_t > &  cNumbers 
) const

Номера контуров, пересекаемых отрезком.

Номера контуров, которые пересекаются с отрезком по двум точкам.

Аргументы
[in]p1- Первая точка отрезка.
[in]p2- Вторая точка отрезка.
[out]cNumbers- Номера контуров.

◆ IsDegenerate()

bool MbMultiline::IsDegenerate ( ) const
inline

Вырождена ли мультилиния.

Вырождена ли мультилиния

◆ IsClosed()

bool MbMultiline::IsClosed ( ) const
inline

Замкнутая ли мультилиния.

Замкнутая ли мультилиния

◆ GetWidth()

double MbMultiline::GetWidth ( ) const
inline

Получить ширину мультилинии.

Получить ширину мультилинии

◆ FindRadius()

size_t MbMultiline::FindRadius ( double  radius)

Найти индекс кривой мультилинии.

Найти индекс кривой мультилинии.

Аргументы
[in]radius- Радиус нужной кривой.
Возвращает
Индекс кривой.

◆ Trimmed()

MbMultiline* MbMultiline::Trimmed ( double  t1,
double  t2,
int  sense 
) const

Усечь мультилинию.

Усечь мультилинию.
Вернуть мультилинию, базовая кривая которой - копия участка между параметрами t1 и t2 базовой данной мультилинии.

Аргументы
[in]t1- Начальный параметр усечения.
[in]t2- Конечный параметр усечения.
[in]sense- Направление усеченной базовой кривой.
Возвращает
Новую мультилинию.

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