C3D Toolkit
Kernel - 105435, Vision - 121811.105435
|
Мультилиния. Подробнее...
#include <multiline.h>
Открытые члены | |
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 MbPlaneItem & | Duplicate (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 MbProperty & | CreateProperty (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 MbContour & | GetBasisCurve () const |
Базовая кривая. | |
MbContour & | SetBasisCurve () |
Дать базовую кривую для изменения. | |
size_t | GetVerticesCount () const |
Количество вершин. | |
const StVertexOfMultilineInfo & | GetVertex (size_t i) const |
Вершина по номеру. Номер должен быть меньше количества вершин. | |
size_t | GetEquidRadiiCount () const |
Количество радиусов эквидистант. | |
double | GetEquidRadius (size_t i) const |
Радиус эквидистанты по номеру. Номер должен быть меньше количества радиусов. | |
const StMLTipParams & | GetBegTipParams () const |
Параметры законцовки в начале мультилинии. | |
const StMLTipParams & | GetEndTipParams () const |
Параметры законцовки в конце мультилинии. | |
bool | IsProcessClosed () const |
Признак обрабатывания замкнутости базовой кривой. | |
bool | IsTransparent () const |
Прозрачность мультилинии. | |
size_t | GetCurvesCount () const |
Количество кривых мультилинии. | |
const MbContourWithBreaks * | GetCurve (size_t i) const |
Кривая мультилинии по номеру. Номер должен быть меньше количества кривых. | |
size_t | GetTipCurvesCount () const |
Количество кривых - законцовок в вершинах мультилинии. | |
const MbContour * | GetTipCurve (size_t i) const |
Кривая - законцовка по номеру. Номер должен быть меньше количества законцовок. | |
const MbContour * | GetBegTipCurve () const |
Законцовка в начале мультилинии. | |
const MbContour * | GetEndTipCurve () 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) |
Найти индекс кривой мультилинии. Подробнее... | |
Операции с мультилинией | |
MbMultiline * | Trimmed (double t1, double t2, int sense) const |
Усечь мультилинию. Подробнее... | |
![]() | |
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 (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 () | |
Конструктор без параметров. | |
refcount_t | GetUseCount () const |
Выдать количество ссылок (выдать количество владельцев объекта). | |
refcount_t | AddRef () const |
Увеличить количество ссылок на единицу. | |
refcount_t | DecRef () const |
Уменьшить количество ссылок на единицу. | |
refcount_t | Release () const |
Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя. | |
Защищенные члены | |
MbMultiline (const MbMultiline &) | |
Копирующий конструктор. | |
![]() | |
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 | ( | 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 | - "Прозрачная" ли мультилиния параметр не используется, мультилиния считается прозрачной. |
|
virtual |
Определить, являются ли объекты равными.
Равными считаются однотипные объекты, все данные которых одинаковы (равны).
[in] | item | - Объект для сравнения. |
[in] | accuracy | - Точность сравнения. |
Замещает MbPlaneItem.
|
virtual |
Определить, являются ли объекты подобными.
Подобными считаются однотипные объекты, данные которых можно приравнять или данные так же являются подобными (указатели). Подобный объект можно инициализировать по данным подобного ему объекта (приравнять один другому без изменения адресов).
[in] | item | - Объект для сравнения. |
Переопределяет метод предка MbPlaneItem.
|
virtual |
Сделать объекты равным.
Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.
[in] | item | - Объект для инициализации. |
Замещает MbPlaneItem.
|
virtual |
Преобразовать согласно матрице.
Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.
[in] | matr | - Матрица преобразования. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
virtual |
Сдвинуть вдоль вектора.
Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.
[in] | to | - Вектор сдвига. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
virtual |
Повернуть вокруг точки.
Повернуть объект вокруг точки на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.
[in] | pnt | - Неподвижная точка. |
[in] | angle | - Угол поворота. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
virtual |
Создать копию.
Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.
[in] | iReg | - Регистратор. |
Замещает MbPlaneItem.
|
virtual |
Определить видимость объекта в прямоугольнике.
Считается, что объект виден в прямоугольнике, если габариты объекта пересекаются с заданным прямоугольником или (при повышенных требованиях к точности exact = true) в прямоугольник попадает хотя бы одна точка объекта.
[in] | rect | - Прямоугольник, попадание в который проверяется. |
[in] | exact | - Точность проверки. При exact = true в прямоугольник должна попасть хотя бы одна точка объекта. При exact = false - достаточно пересечения габарита объекта с прямоугольником. |
Замещает MbPlaneItem.
|
virtual |
Вычислить расстояние до точки.
Вычислить расстояние от объекта до заданной точки вблизи объекта. Расстояние вычисляется и записывается в переменную d, если оно меньше исходного значения d. Может быть получен выигрыш по времени выполнения по сравнению с функцией DistanceToPoint, за счет того, что сначала проверяется расстояние от точки до габаритного куба, и только если это расстояние не больше заданного, выполняются дальнейшие вычисления.
[in] | to | - Tочка. |
[in,out] | d | - На входе - заданная величина отступа от объекта. На выходе - расстояние от точки до объекта, если операция выполнена успешно. |
Замещает MbPlaneItem.
|
virtual |
Выдать свойства объекта.
Выдать внутренние данные (свойства) объекта для их просмотра и модификации.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.
|
virtual |
Изменить свойства объекта.
Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.
void MbMultiline::ReplaceBasisCurve | ( | const MbContour & | _basisCurve, |
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Заменить базовую кривую.
Заменить базовую кривую.
При замене базовой кривой мультилинии в ней удаляются все разрывы.
[in] | _basisCurve | - Новая базовая кривая. |
[in] | vertInfo | - Новая информация о вершинах мультилинии. |
bool MbMultiline::AddBasisSegment | ( | MbCurve * | segment, |
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Добавить сегмент в базовую кривую.
Добавить сегмент в базовую кривую.
[in] | segment | - Добавляемый сегмент, если является ломаной или контуром, то в мультилинию добавляются только составляющие сегменты. |
[in] | vertInfo | - Информация присваивается всем добавленным или измененным вершинам. |
size_t MbMultiline::InsertVertex | ( | double | t, |
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Вставить вершину.
Вставить вершину. Сегмент разбивается на два.
[in] | t | - Параметр на базовой кривой. |
[in] | vertInfo | - Информация о новой вершине мультилинии. |
bool MbMultiline::RemoveVertex | ( | size_t | i | ) |
Удалить вершину мультилинии.
Удалить вершину мультилинии.
Пара сегментов, примыкающих к вершине, заменяется отрезком.
Разрывы на прилегающих сегментах исчезают. Разрывы, лежащие на прямолинейных прилегающих сегментах, остаются, привязываясь к вершинам нового отрезка.
[in] | i | - Индекс вершины. |
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 | - Новое положение точки. |
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 (изменение формы). |
bool MbMultiline::FilletTwoBasisSegments | ( | ptrdiff_t & | index, |
double | rad, | ||
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Скруглить два соседних сегмента.
Скруглить два соседних сегмента базовой кривой.
[in] | index | - Индекс первого скругляемого сегмента. |
[in] | rad | - Радиус скругления. |
[in] | vertInfo | - Информация для новых вершин мультилинии. |
bool MbMultiline::FilletBasisCurve | ( | double | rad, |
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Скруглить базовую кривую.
Скруглить все углы базовой кривой.
[in] | rad | - Радиус скругления. |
[in] | vertInfo | - Информация для новых вершин мультилинии. |
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 | - Информация для новых вершин мультилинии. |
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 | - Информация для новых вершин мультилинии. |
void MbMultiline::SetSmoothJoint | ( | size_t | i, |
bool | othSmoothJoint | ||
) |
Установить флаг гладкого стыка.
Установить флаг гладкого стыка в вершине.
[in] | i | - Индекс вершины мультилинии. |
[in] | othSmoothJoint | - Флаг гладкого стыка. |
void MbMultiline::SetTracingType | ( | size_t | i, |
EnMLVertexTracingType | othTracingType | ||
) |
Установить тип обхода.
Установить тип обхода вершины.
[in] | i | - Индекс вершины мультилинии. |
[in] | othTracingType | - Тип обхода. |
void MbMultiline::SetSpecFilletRad | ( | size_t | i, |
double | othSpecFilletRad | ||
) |
Установить радиус специального скругления.
Установить радиус специального скругления вершины мультилинии.
[in] | i | - Индекс вершины мультилинии. |
[in] | othSpecFilletRad | - Радиус. |
void MbMultiline::SetTipType | ( | size_t | i, |
EnMLInnerTipType | othTipType | ||
) |
Установить тип законцовки.
Установить тип законцовки (разделителя) в вершине.
[in] | i | - Индекс вершины мультилинии. |
[in] | othTipType | - Тип законцовки. |
void MbMultiline::SetTipDirection | ( | size_t | i, |
bool | othFirstSegTip | ||
) |
Установить направление законцовки.
Установить направление законцовки в вершине мультилинии.
[in] | i | - Индекс вершины мультилинии. |
[in] | othFirstSegTip | - Направление законцовки, если true - от первого сегмента. |
void MbMultiline::SetVertexOfMultilineInfo | ( | size_t | i, |
const StVertexOfMultilineInfo & | vertInfo | ||
) |
Установить информацию о вершине.
Установить информацию о вершине мультилинии.
[in] | i | - Индекс вершины мультилинии. |
[in] | vertInfo | - Информация о вершине. |
bool MbMultiline::SetRadius | ( | size_t | i, |
double | radius, | ||
size_t & | newIndex | ||
) |
Установить значение радиуса кривой.
Установить значение радиуса кривой.
[in] | i | - Индекс кривой мультилинии. |
[in] | radius | - Новое значение радиуса. |
[out] | newIndex | - Новый индекс кривой. |
bool MbMultiline::SetRadii | ( | const CSSArray< double > & | newRadii | ) |
Изменение всех радиусов кривых.
Изменение одновременно всех радиусов кривых.
Значения радиусов будут изменены, если их количество в newRadii совпадает с количеством кривых.
[in] | newRadii | - Новые значения радиусов кривых. |
void MbMultiline::ChangeRadius | ( | double | oldRadius, |
double | radius | ||
) |
Изменение радиуса.
Изменение радиуса кривой мультилинии.
[in] | oldRadius | - Старое значение радиуса. |
[in] | radius | - Новое значение радиуса. |
size_t MbMultiline::AddRadius | ( | double | radius | ) |
Добавление радиуса кривой мультилинии.
Добавление радиуса кривой мультилинии.
Фактически, добавление кривой мультилинии.
[in] | radius | - Значение радиуса. |
bool MbMultiline::RemoveRadius | ( | size_t | i | ) |
Удаление кривой.
Удаление кривой мультилинии.
[in] | i | - Индекс кривой. |
bool MbMultiline::RemoveRadius | ( | double | oldRadius | ) |
Удаление кривой.
Удаление кривой мультилинии.
[in] | oldRadius | - Радиус кривой. |
void MbMultiline::SetBegTipType | ( | EnMLTipType | othTipType | ) |
Изменение типа законцовки в начале.
Изменение типа законцовки мультилинии в начале.
[in] | othTipType | - Новый тип законцовки. |
void MbMultiline::SetBegTipParam | ( | double | othTipParam | ) |
Изменение параметра законцовки в начале.
Изменение параметра законцовки мультилинии в начале.
[in] | othTipParam | - Новый параметр законцовки. |
void MbMultiline::SetEndTipType | ( | EnMLTipType | othTipType | ) |
Изменение типа законцовки в конце.
Изменение типа законцовки мультилинии в конце.
[in] | othTipType | - Новый тип законцовки. |
void MbMultiline::SetEndTipParam | ( | double | othTipParam | ) |
Изменение параметра законцовки в конце.
Изменение параметра законцовки мультилинии в конце.
[in] | othTipParam | - Новый параметр законцовки. |
void MbMultiline::SetProcessClosed | ( | bool | othProcessClosed | ) |
Изменение обработки замкнутости.
Изменение флага обработки замкнутости.
[in] | othProcessClosed | - Флаг обработки замкнутости. |
void MbMultiline::SetTransparent | ( | bool | othTransparent | ) |
Изменение прозрачности мультилинии.
Изменение флага прозрачности мультилинии.
[in] | othTransparent | - Флаг прозрачности. |
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, то разрыв накладывается на противоположную часть контура. |
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, то разрыв накладывается на противоположную часть контура. |
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, то разрыв накладывается на противоположную часть контура. |
bool MbMultiline::DeleteBreaks | ( | ) |
Удалить разрывы.
Удалить все разрывы мультилинии.
bool MbMultiline::DeleteBreaks | ( | size_t | cNumber | ) |
Удалить разрывы кривой.
Удалить все разрывы кривой мультилинии.
[in] | cNumber | - Номер кривой. |
bool MbMultiline::DeleteBreak | ( | size_t | cNumber, |
double | t | ||
) |
Удалить разрыв кривой.
Удалить разрыв по параметру на кривой.
[in] | cNumber | - Номер кривой. |
[in] | t | - Параметр на кривой. |
bool MbMultiline::DeleteBreakAtNumber | ( | size_t | cNumber, |
size_t | brNumber | ||
) |
Удалить разрыв.
Удалить разрыв по номеру.
[in] | cNumber | - Номер кривой. |
[in] | brNumber | - Номер разрыва на кривой. |
bool MbMultiline::DeleteSmallBreaks | ( | size_t | cNumber, |
double | length | ||
) |
Удалить разрывы малой длины.
Удалить разрывы малой метрической длины у кривой мультилинии.
В случае успеха линия мультилинии перестраивается соответственно разрывам.
[in] | cNumber | - Номер кривой мультилинии. |
[in] | length | - Минимальная длина невидимой части. |
bool MbMultiline::DeleteSmallVisContours | ( | size_t | cNumber, |
double | length | ||
) |
Удалить малые видимые части.
Удалить видимые части малой метрической длины у кривой мультилинии.
Соответствует объединению близких разрывов в один. В случае успеха видимые контуры кривой перестраиваются соответственно разрывам.
[in] | cNumber | - Номер кривой мультилинии. |
[in] | length | - Минимальная длина видимой части. |
bool MbMultiline::IsRectInBreak | ( | size_t | cNumber, |
const MbRect1D & | rect | ||
) |
Находится ли интервал на разрыве.
Находится ли интервал параметров на разрыве кривой.
[in] | cNumber | - Номер кривой мультилинии. |
[in] | rect | - Интервал для проверки. |
Запомнить разрывы.
Запомнить разрывы невидимыми контурами.
Для использования в паре с AddBreaksByInvisContours.
Удаляет все разрывы мультилинии.
Все контуры invisContours имеют счетчик ссылок = 1 (вызван AddRef()).
[out] | invisContours | - Набор невидимых контуров всех кривых мультилинии. |
Добавить разрывы.
Добавить разрывы невидимыми контурами.
Для использования в паре с GetBreaksInInvisContours.
Контуры invisContours удаляются (вызывается Release()).
Данной функцией можно наложить разрывы на мультилинию, если они были получены методом GetBreaksInInvisContours у этой мультилинии и форма мультилинии не была изменена.
[in] | invisContours | - Набор невидимых контуров всех кривых мультилинии. |
void MbMultiline::CurvesIntersectNumbers | ( | const MbCartPoint & | p1, |
const MbCartPoint & | p2, | ||
SArray< size_t > & | cNumbers | ||
) | const |
Номера контуров, пересекаемых отрезком.
Номера контуров, которые пересекаются с отрезком по двум точкам.
[in] | p1 | - Первая точка отрезка. |
[in] | p2 | - Вторая точка отрезка. |
[out] | cNumbers | - Номера контуров. |
|
inline |
Вырождена ли мультилиния.
Вырождена ли мультилиния
|
inline |
Замкнутая ли мультилиния.
Замкнутая ли мультилиния
|
inline |
Получить ширину мультилинии.
Получить ширину мультилинии
size_t MbMultiline::FindRadius | ( | double | radius | ) |
Найти индекс кривой мультилинии.
Найти индекс кривой мультилинии.
[in] | radius | - Радиус нужной кривой. |
MbMultiline* MbMultiline::Trimmed | ( | double | t1, |
double | t2, | ||
int | sense | ||
) | const |
Усечь мультилинию.
Усечь мультилинию.
Вернуть мультилинию, базовая кривая которой - копия участка между параметрами t1 и t2 базовой данной мультилинии.
[in] | t1 | - Начальный параметр усечения. |
[in] | t2 | - Конечный параметр усечения. |
[in] | sense | - Направление усеченной базовой кривой. |