C3D Kernel  104598
Открытые члены | Защищенные члены | Защищенные данные

Ребро грани. Подробнее...

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

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

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

 MbCurveEdge (const MbVertex &beg, const MbVertex &end, const MbSurfaceIntersectionCurve &initCurve, bool sense)
 Конструктор по вершинам, кривой пересечения и ее ориентации в ребре.
 MbCurveEdge (const MbVertex *beg, const MbVertex *end, const MbSurfaceIntersectionCurve &initCurve, bool sense)
 Конструктор по вершинам, кривой пересечения и ее ориентации в ребре.
 MbCurveEdge (const MbSurfaceIntersectionCurve &initCurve, bool sense)
 Конструктор по кривой пересечения.
 MbCurveEdge (const MbCurveEdge &other, const MbSurfaceIntersectionCurve &newCurve)
 Конструктор копирования с использованием другой кривой.
virtual ~MbCurveEdge ()
 Деструктор.
 VISITING_CLASS (MbCurveEdge)
virtual MbeTopologyType IsA () const
 Тип элемента.
virtual MbCurveEdgeDataDuplicate (MbRegDuplicate *=NULL) const
 Создать новое ребро копированием всех данных исходного ребра.
virtual void SetOwnChangedThrough (MbeChangedType)
 Установить флаг изменения в положение измененного объекта.
virtual void Reverse ()
 Изменить направление ребра на противоположной, не изменяя кривую.
virtual bool IsSame (const MbTopologyItem &other, double accuracy) const
 Являются ли объекты равными?
virtual bool ChangeCurve (MbCurve3D &crv)
 Замена кривой ребра на кривую crv.
const MbSurfaceIntersectionCurveGetIntersectionCurve () const
 Выдать кривую пересечения поверхностей.
MbSurfaceIntersectionCurveSetIntersectionCurve ()
 Выдать кривую пересечения поверхностей для модификации.
const MbCurve3DGetSpaceCurve () const
 Дать пространственную копию кривой пересечения поверхностей.
MbCurve3DMakeCurve () const
 Построить пространственную копию кривой пересечение поверхностей.
MbFaceGetFacePlus () const
 Выдать грань слева.
MbFaceGetFaceMinus () const
 Выдать грань справа.
MbFaceGetFace (size_t i) const
 Выдать грань по индексу (0 - справа от ребра, 1 - слева от ребра.
void SetFacePlus (MbFace *f)
 Установить грань слева.
void SetFaceMinus (MbFace *f)
 Установить грань справа.
bool IsSmooth (double epsilon=Math::paramPrecision) const
 Является ли ребро гладким?
bool IsSeam () const
 Является ли ребро швом?
bool IsSplit (bool strict=false) const
 Является ли ребро разбиением грани?
bool IsPole () const
 Является ли ребро полюсным?
bool IsUsual (bool tolerantIsUsual) const
 Является ли ребро обычным ребром пересечения (толерантное по флагу)?
void SetOrientedEdgesLabel (MbeLabelState, void *key=NULL)
 Установить метки ориентированных ребер.
bool FindOrientedEdge (bool orient, const MbFace *face, MbLoop *&findLoop, size_t &index) const
 Найти ориентированное ребро.
bool FindOrientedEdgePlus (size_t &loopIndex, MbLoop *&findLoop, size_t &index) const
 Найти ориентированное ребро.
bool FindOrientedEdgeMinus (size_t &loopIndex, MbLoop *&findLoop, size_t &index) const
 Найти ориентированное ребро.
void DeleteOrientedEdges ()
 Удалить ориентированные ребра на данном ребре.
void ChangeSurface (MbSurface &oldSurf, MbSurface &newSurf, bool faceSense, bool orient)
 Замена поверхности.
bool ChangeCarrierBorne (MbSurface &item, MbSurface &init, const MbMatrix &matr)
 Замена поверхности.
bool GetTraverses (const MbFace *face, bool plus, double t, double paramStep, double metricStep, MbCartPoint &p0, MbVector3D &leftNorm, MbVector3D &rightNorm, MbVector3D &left, MbVector3D &right, VERSION version=Math::DefaultMathVersion()) const
 Построение нормалей грани face и векторов от ребра в обе стороны.
bool GetOutTraverse (const MbFace *face, bool plus, double t, MbCartPoint3D &q0, MbVector3D &outv, MbCartPoint &p0, MbVector &tv, bool &out) const
 Построить вектор от ребра вне/внутрь грани (out==true/false).
bool Transversal (double t, MbVector3D &f, bool plus) const
 Построить перпендикуляр к ребру (0 <= t <= 1) внутрь грани facePlus/faceMinus (plus==true/false).
bool Transversal (double t, MbVector &f, MbCartPoint &p, bool plus) const
 Построить перпендикуляр к ребру (0 <= t <= 1) внутрь грани facePlus/faceMinus (plus==true/false).
bool TransversalReper (double t, MbPlacement3D &pl, bool plus) const
 Построить перпендикуляр к ребру (0 <= t <= 1) внутрь грани facePlus/faceMinus (plus==true/false).
bool PointBy (const MbSurface &surf, bool faceSense, bool orient, double t, MbCartPoint &p) const
 Вычислить на ребре (0 <= t <= 1) двумерную точку p в области параметров поверхности surf.
bool PointOn (const MbSurface &surf, bool faceSense, bool orient, double &t, MbCartPoint &p) const
 Вычислить на ребре двумерную точку p в области параметров поверхности surf по значению параметра t кривой ребра.
bool PointOn (const MbFace *face, bool orient, double &t, MbCartPoint &p) const
 Вычислить на ребре двумерную точку p в области параметров поверхности грани face по значению параметра t кривой ребра.
bool FaceNormal (double t, MbVector3D &n, bool plus) const
 Нормаль к грани facePlus или faceMinus на ребре (0 <= t <= 1).
bool FaceNormal (const MbSurface &surf, bool faceSense, double t, MbVector3D &p) const
 Нормаль к грани поверхности surf на ребре (0 <= t <= 1) поверхности surf.
bool EdgeNormal (double t, MbVector3D &p) const
 Средняя нормаль на ребре (0 <= t <= 1) наружу оболочки.
bool VertexNormal (bool begin, MbVector3D &normal) const
 Вычислить среднюю нормаль в вершине begin ребра edge.
MbCurveChooseCurve (const MbSurface &surf, bool faceSene, bool orient) const
 Выбор двумерной кривой на поверхности surf в направлении цикла.
MbCurveChooseCurve (const MbFace *face, bool orient) const
 Выбор двумерной кривой на поверхности surf в направлении цикла.
bool GetLimitParam (bool beg, MbCartPoint &pPlus, MbCartPoint &pMinus, double &t) const
 Дать параметр t крайней точки ребра и соответствующие ему точки на поверхностях кривой пересечения.
double FacesAngle (double t) const
 Вычислить угол ребра (0 <= t <= 1): для выпуклого ребра угол больше нуля, для вогнутого ребра угол меньше нуля.
ThreeStates IsConvex (double angleEps=EXTENT_EPSILON, const MbRect1D *tRange=NULL) const
 Выпуклое ли ребро?
bool CopyReadyMutable (const MbCurveEdge &e)
bool GetMoveVector (const MbSurface &surf, bool faceSene, bool orient, MbVector &to) const
 Вычислить двумерный вектор сдвига двумерной кривой.
int IsCurveOneOnFacePlus () const
bool MoveBy (const MbSurface &surf, bool faceSense, bool orient, const MbVector &to)
 Cдвиг одной двумерной кривой.
MbCurveEdgeCuttingEdge (double t, bool beginSafe, const MbSurface *surface)
 Разбить ребро на два ребра по параметру его кривой.
bool TruncateEdge (double &t, bool beginCutting, const MbSurface *surface)
 Усечь ребро по параметру его кривой.
bool CuttingEdge (SArray< double > &params, bool beginSafe, double eps, const MbSurface *surface, RPArray< MbCurveEdge > &edges)
 Разбить ребро по параметрам его кривой на несколько его частей.
bool ConvexoConcaveCutting (RPArray< MbCurveEdge > &edges)
 Разбить ребро по точкам изменения выпуклости-вогнутости.
bool ConvexoConcaveCutting (RPArray< MbCurveEdge > &edges, MbFunction &function, RPArray< MbFunction > &functions)
bool ProlongEdge (double &t, bool begin, double deviateAngle, const VERSION version)
 Продолжить ребро.
MbCurveEdgeMergeEdges (MbCurveEdge &edge2, bool begin1, bool begin2, VERSION version, bool addParentNamesAttributes)
 Объединение двух стыкующихся ребер.
void GetConnectedEdges (bool begin, RPArray< MbCurveEdge > &edges, SArray< bool > &orients) const
 Собрать все ребра, стыкующиеся с заданным ребром в его начале begin==true (конце begin==false).
bool GetProlongEdges (RPArray< MbCurveEdge > &edges)
 Собрать все ребра, гладко стыкующиеся с заданным ребром и образующие гладкую цепочку ребер.
void GetProperties (MbProperties &)
 Выдать свойства объекта.
void SetProperties (const MbProperties &)
 Установить свойства объекта.
bool IsBoundaryFace (double mEps=Math::metricEpsilon) const
 Является ли ребро граничным, по которому происходит разрыв оболочки?
MbeCurveBuildType GetBuildType () const
 Получить тип кривой по построению.
double GetTolerance () const
 Вычислить и выдать толерантность кривой ребра.
void SetTolerance (double eps)
 Изменить точность построения кривой пересечения.
bool IsTolerant () const
 Является ли кривая толерантной?
bool MakeBoundaryCurve ()
 Сделать ребро граничным (изменить кривую ребра).
void CurveSection (const MbPlacement3D &place, SArray< MbCartPoint > &points, RPArray< MbCurve > &pCurve) const
 Пересечение ребра с плоскостью, результат - множество параметров на плейсменте или множество двумерных кривых на плейсменте.
bool CutPeriodicEdge (const MbVector3D &eye, SSArray< double > &trimParams, double &delT1, double &delT2) const
 Получить параметры разрезки для периодического ребра.

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

 MbCurveEdge (const MbCurveEdge &init, MbRegDuplicate *iReg)
 Конструктор копирования.

Защищенные данные

MbFacefacePlus
 Грань слева, в которой направление ребра совпадает с направлением цикла.
MbFacefaceMinus
 Грань справа, в которой направление ребра не совпадает с направлением цикла.

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

Ребро грани представляет собой кривую пересечения поверхностей MbSurfaceIntersectionCurve, которой приписано направление. В отличие от ребра MbEdge ребро MbCurveEdge описывает не просто кривую, а гладкий участок стыковки двух граней или гладкий участок края грани.
Ребро грани служит для описания участка стыковки двух граней или для описания участка края грани.
Если ребро описывает участок стыковки двух граней, то указатели на грань слева и грань справа ненулевые.
Ребро, описывающее участок стыковки циклически замкнутой грани самой с собой, называется швом.
В последнем случае указатели на грань слева и грань справа одинаковые.
Если ребро описывает участок края грани, то указатель на грань слева или грань справа равен нулю.
Ребро, описывающее участок края грани, стянутый в точку, называется полюсным ребром.
Если ребро описывает участок края грани, то кривая пересечения поверхностей также является граничной, то есть состоит из двух одинаковых кривых на поверхности.
Ребро начинается и заканчивается в вершинах MbVertex. Если кривая ребра циклически замкнута, то ребро начинается и заканчивается в одной и той же вершине.


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

MbCurveEdge::MbCurveEdge ( const MbVertex beg,
const MbVertex end,
const MbSurfaceIntersectionCurve initCurve,
bool  sense 
)

Конструктор ребра по вершинам, кривой пересечения и ее ориентации в ребре. Проводится проверка существования и правильности положения точек-вершин ребра.

MbCurveEdge::MbCurveEdge ( const MbSurfaceIntersectionCurve initCurve,
bool  sense 
)

Конструктор ребра по кривой пересечения. Вершины формируются на основе граничных точек кривой.


Методы

void MbCurveEdge::ChangeSurface ( MbSurface oldSurf,
MbSurface newSurf,
bool  faceSense,
bool  orient 
)

Замена в кривой поверхности oldSurf на поверхность newSurf.

Аргументы:
[in]oldSurf- Заменяемая поверхность грани.
[in]newSurf- Заменяющая (новая) поверхность грани.
[in]faceSense- Совпадение направления нормали грани и нормали поверхности.
[in]orient- Ориентация ребра в цикле грани.
bool MbCurveEdge::ChangeCarrierBorne ( MbSurface item,
MbSurface init,
const MbMatrix matr 
)

Замена в кривой поверхности item на поверхность init при объединении подобных граней.

Аргументы:
[in]item- Заменяемая поверхность грани.
[in]init- Заменяющая (новая) поверхность грани.
[in]matr- Матрица преобразования двумерных кривых кривой пересечения curve при замене поверхностей.
Возвращает:
Выполнена ли замена и преобразование?
ThreeStates MbCurveEdge::IsConvex ( double  angleEps = EXTENT_EPSILON,
const MbRect1D tRange = NULL 
) const

Выпуклое ли ребро по среднему параметру ребра (или среднему параметру указанного диапазона)? Расчет верен для не меняющего выпуклость ребра. Для гладких рёбер возвращает ts_neutral.

bool MbCurveEdge::CopyReadyMutable ( const MbCurveEdge e)

Скопировать из копии готовые метрические оценки, которые в оригинале не были расчитаны.

Предупреждения:
Внимание: для скорости проверка идентичности оригинала и копии не выполняется!
bool MbCurveEdge::GetMoveVector ( const MbSurface surf,
bool  faceSene,
bool  orient,
MbVector to 
) const

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

int MbCurveEdge::IsCurveOneOnFacePlus ( ) const

Где лежат кривые пересечения поверхностей (граней):
curveOne на facePlus, curveTwo на faceMinus => +1
curveOne на faceMinus, curveTwo на facePlus => -1
иначе => 0

MbCurveEdge* MbCurveEdge::CuttingEdge ( double  t,
bool  beginSafe,
const MbSurface surface 
)

Если beginSafe == true - ребро сохранит начальный участок, разбиваемое ребро сохранит начальную вершину и будет кончаться в вершине breakVertex, новое ребро newEdge будет начинаться в вершине breakVertex и кончаться в бывшей конечной вершине разбиваемого ребра Если beginSafe == false - ребро сохранит конечный участок, разбиваемое ребро сохранит конечную вершину и будет начинаться в вершине breakVertex, новое ребро newEdge будет начинаться в начальной вершине разбиваемого ребра и кончаться в вершине breakVertex
Параметр 'surface' необходим только для толерантной кривой пересечения. Новое ребро встраиваются в циклы смежных граней. Вернет новое ребро. Параметр кривой пересечения для разбиения ребра,

Аргументы:
[in]beginSafe- Ребро сохранит начальную половину (true) или ребро сохранит конечную половину (false),
[in]surface- Для толерантной кривой требуется указать поверхность, к кривой которой относится параметр.
Возвращает:
Возвращает отрезанную часть ребра.
bool MbCurveEdge::TruncateEdge ( double &  t,
bool  beginCutting,
const MbSurface surface 
)

Если beginCutting == true - отрезается начало ребра, Если beginCutting == false - отрезается конец ребра.

Аргументы:
[in]t- Параметр кривой пересечения для усечения ребра.
[in]beginCutting- Ребро сохранит начальную половину (false) или ребро сохранит конечную половину (true).
[in]surface- Для толерантной кривой требуется указать поверхность, к кривой которой относится параметр.
Возвращает:
Возвращает true, если усечение выполнено, false - в противном случае.
bool MbCurveEdge::CuttingEdge ( SArray< double > &  params,
bool  beginSafe,
double  eps,
const MbSurface surface,
RPArray< MbCurveEdge > &  edges 
)

. Если beginSafe == true - ребро сохранит начальный участок, Если beginSafe == false - ребро сохранит конечный участок. По параметру 'eps' отсеиваются значения в контейнере 'params', совпадающие друг с другом и с начальным и конечным параметрами кривой пересечения. Параметр 'surface' необходим только для толерантной кривой пересечения. Контейнер 'edges' содержит отрезанные части. Оотрезанные части встраиваются в циклы смежных граней.

Аргументы:
[in]params- Параметры кривой пересечения для разбиения ребра,
[in]beginSafe- Ребро сохранит начальную половину (true) или ребро сохранит конечную половину (false),
[in]eps- Точность совпадения параметров разбиения,
[in]surface- Для толерантной кривой требуется указать поверхность грани, к кривой которой относятся параметры резки.
[out]edges- Отрезанные части ребра.
Возвращает:
Возвращает true, если ребро было порезано.
bool MbCurveEdge::ConvexoConcaveCutting ( RPArray< MbCurveEdge > &  edges)

Разбить ребро по точкам изменения выпуклости-вогнутости и сложить отрезанные части в контейнер 'edges'. Оотрезанные части встраиваются в циклы смежных граней.

Аргументы:
[out]edges- Отрезанные части ребра.
Возвращает:
Возвращает true, если ребро было порезано.
bool MbCurveEdge::ProlongEdge ( double &  t,
bool  begin,
double  deviateAngle,
const VERSION  version 
)

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

Аргументы:
in/out]t - Параметра на проложении кривой ребра.
[in]begin- Начало (true) или конец (false) ребра продолжить.
[in]deviateAngle- Угловое отклонение для шага при движении вдоль кривой в общем случае.
[in]version- Версия операции.
Возвращает:
Возвращает true, если продление выполнено, false - в противном случае.
MbCurveEdge* MbCurveEdge::MergeEdges ( MbCurveEdge edge2,
bool  begin1,
bool  begin2,
VERSION  version,
bool  addParentNamesAttributes 
)

Объединение двух стыкующихся ребер:
перед вызовом на ребра надо сделать AddRef, т.к. одно из них может быть удалено, а после вызова и использования ребер на них надо сделать Release.

Аргументы:
in/out]edge2 - Присоединяемое ребро.
[in]begin1- К началу (true) или к концу (false) ребра this стыкуется присоединяемое ребро.
[in]begin2- Началом (true) или концом (false) стыкуется присоединяемое ребро к ребру this.
[in]version- Версия операции.
[in]addParentNamesAttributes- Добавить атрибут имени с именами слитых ребер.
Возвращает:
Возвращает поглощенное ребро edge2, которое можно удалять.

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