e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
628 lines
22 KiB
Markdown
628 lines
22 KiB
Markdown
---
|
||
title: "Интерфейс IMathCurve3D"
|
||
type: interface
|
||
api: [api7]
|
||
domain: [3d]
|
||
tags: [interface, api7, 3d, imathcurve3d]
|
||
sources:
|
||
- imathcurve3d.html
|
||
---
|
||
|
||
*API интерфейсов. Версия 7 > Документ 3D > Вспомогательные объекты, 3D-кривые и элементы тела > 3D-кривые и элементы тела > Интерфейс IModelCurve3D *
|
||
|
||
|
||
## Интерфейс IMathCurve3D
|
||
|
||
Интерфейс математической кривой в трехмерном пространстве.
|
||
Иерархия:
|
||
IDispatch
|
||
IKompasAPIObject
|
||
IMathCurve3D
|
||
|
||
|
||
## BaseCurve2DType - Тип базовой 2D кривой
|
||
|
||
Тип данных: из перечисления ksMathCurve2DTypeEnum
|
||
Синтаксис Automation:
|
||
```
|
||
BaseCurve2DType = Object.BaseCurve2DType; Получить свойство (* )
|
||
BaseCurve2DType = Object.GetBaseCurve2DType(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_BaseCurve2DType( &BaseCurve2DType ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## BaseCurveType - Тип базовой 3D кривой
|
||
|
||
Тип данных: из перечисления ksMathCurve3DTypeEnum
|
||
Синтаксис Automation:
|
||
```
|
||
BaseCurveType = Object.BaseCurveType; Получить свойство (* )
|
||
BaseCurveType = Object.GetBaseCurveType(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_BaseCurveType( &BaseCurveType ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## CalculatePolygon - Получить полигон точек на кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
VARIANT CalculatePolygon( double Step );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT CalculatePolygon( double Step, VARIANT * Result );
|
||
Возвращаемое значение:
|
||
- массив VT_ARRAY VT_R8 координат точек на кривой.
|
||
Входные параметры:
|
||
Step - шаг для расчета полигона.
|
||
```
|
||
Примечание:
|
||
1. Если шаг задан равным 0, то применяется шаг, используемый в системе КОМПАС, который рассчитывается с учетом габаритов детали.
|
||
2. Если шаг задан -1, то применяется шаг, используемый в системе КОМПАС при отрисовке кривых. Он рассчитывается с учетом следующих параметров:
|
||
•габариты детали и масштаба отображения модели,
|
||
•тип возвращаемого массива VT_ARRAY | VT_R8,
|
||
•значения координат в массиве лежат в последовательности x1, y1, z1, x2, y2, z2 ... xn, yn, zn.
|
||
|
||
|
||
## Closed - Замкнутость кривой
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
Closed = Object.Closed; Получить свойство (* )
|
||
Closed = Object.GetClosed(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_Closed( &Closed ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## CurveType - Получить тип кривой
|
||
|
||
Тип данных: из перечисления ksMathCurve3DTypeEnum
|
||
Синтаксис Automation:
|
||
```
|
||
CurveType = Object.CurveType; Получить свойство (* )
|
||
CurveType = Object.GetCurveType(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_CurveType( &CurveType ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## Degenerate - Проверка вырожденности кривой
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
Degenerate = Object.Degenerate; Получить свойство (* )
|
||
Degenerate = Object.GetDegenerate(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_Degenerate( &Degenerate ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## GetCentre - Получить центр кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetCentre( double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetCentre( double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Выходные параметры:
|
||
X, Y, Z - координаты центра кривой.
|
||
```
|
||
|
||
|
||
## GetDerivativeT - Получить первую производную по T
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetDerivativeT( double ParamT, double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetDerivativeT( double ParamT, double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - первая производная по T.
|
||
```
|
||
|
||
|
||
## GetDerivativeTT - Получить вторую производную по T
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetDerivativeTT( double ParamT, double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetDerivativeTT( double ParamT, double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - вторая производная по T.
|
||
```
|
||
|
||
|
||
## GetDerivativeTTT - Получить третью производную по T
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetDerivativeTTT( double ParamT, double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetDerivativeTTT( double ParamT, double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - третья производная по T.
|
||
```
|
||
|
||
|
||
## GetDistanceToPoint - Функция возвращает расстояние между точкой и проекцией точки на грань
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
double GetDistanceToPoint( double X, double Y, double Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetDistanceToPoint( double X, double Y, double Z, double * Result );
|
||
Возвращаемое значение:
|
||
- Расcтояние от кривой до точки.
|
||
Входные параметры:
|
||
X, Y, Z - координаты точки.
|
||
КOMPAS v24
|
||
```
|
||
|
||
|
||
## GetEllipseParam - Параметры эллипса
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetEllipseParam( double * MajorRadius, double * MinorRadius, double * Angle ) ;
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetEllipseParam( double * MajorRadius, double * MinorRadius, double * Angle, BOOL * Result ) ;
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Выходные параметры:
|
||
Angle - Угол раствора,
|
||
MajorRadius - Большой радиус эллипса,
|
||
MinorRadius - Малый радиус эллипса.
|
||
Версия КОМПАС v22
|
||
```
|
||
|
||
|
||
## GetGabarit - Выдать габарит кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetGabarit( double * X1, double * Y1, double * Z1, double * X2, double * Y2, double * Z2 ) ;
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetGabarit( double * X1, double * Y1, double * Z1, double * X2, double * Y2, double * Z2, BOOL * Result ) ;
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
X1, Y1, Z1, X2, Y2, Z2 - координаты вершин габаритного параллелепипеда.
|
||
```
|
||
Примечание:
|
||
Координаты вершин параллелепипеда возвращаются в системе координат компонента.
|
||
|
||
|
||
## GetLength - Получить длину кривой (ST_MIX_MM..ST_MIX_M единицы измерения)
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
double GetLength( ksLengthUnitEnum BitVector ) ;
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetLength( ksLengthUnitEnum BitVector, double * Result ) ;
|
||
Возвращаемое значение:
|
||
- длина кривой.
|
||
Входные параметры:
|
||
BitVector - единица измерения.
|
||
```
|
||
|
||
|
||
## GetMetricLength - Метрическая длина кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
double GetMetricLength( double StartParam, double EndParam );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetMetricLength( double StartParam, double EndParam, double * Result ) ;
|
||
Возвращаемое значение:
|
||
- длина кривой.
|
||
Входные параметры:
|
||
StartParam - начальное значение параметра T в параметрическом представлении кривой,
|
||
EndParam - конечное значение параметра T в параметрическом представлении кривой.
|
||
```
|
||
|
||
|
||
## GetNormal - Получить нормаль
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetNormal( double ParamT, double * X, double * Y, double * Z) ;
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetNormal( double ParamT, double * X, double * Y, double * Z, BOOL * Result ) ;
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - вектор нормали.
|
||
```
|
||
|
||
|
||
## GetNurbs3DParams - Параметры Nurbs-представления кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetNurbs3DParams( BOOL Closed, long * Degree, double * ParamMin, double * ParamMax, VARIANT * Points, VARIANT * Weights, VARIANT * Knots ) ;
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetNurbs3DParams( BOOL Closed, long * Degree, double * ParamMin, double * ParamMax, VARIANT * Points, VARIANT * Weights, VARIANT * Knots, BOOL * Result ) ;
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
Closed - TRUE - Вернуть параметры для замкнутого представления - FALSE - Вернуть параметры для разомкнутого представления.
|
||
Выходные параметры:
|
||
Degree - порядок сплайна (степень + 1),
|
||
ParamMin - минимальный параметр кривой,
|
||
ParamMax - максимальный параметр кривой,
|
||
Points - координаты точек в виде массива VT_ARRAY VT_R8,
|
||
Weights - веса в точках в виде массива VT_ARRAY VT_R8,
|
||
Knots - массив VT_ARRAY VT_R8 узлов сплайна.
|
||
В англоязычной специализированной литературе, документациях и различных API для систем автоматизированного проектирования (САПР) можно встретить использование термина degree для обозначения степени сплайна, а термина order — для обозначения порядка сплайна. Соответственно, order = degree + 1. Обратите внимание на то, что в интерфейсах КОМПАС-3D API термин degree используется для обозначения порядка сплайна (степень + 1).
|
||
Версия КОМПАС v22
|
||
```
|
||
|
||
|
||
## GetPoint - Получить точку на кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetPoint( double ParamT, double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetPoint( double ParamT, double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - координаты точки на кривой.
|
||
```
|
||
|
||
|
||
## GetTangentVector - Получить тангенциальный вектор (нормализованный)
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetTangentVector( double ParamT, double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetTangentVector( double ParamT, double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
ParamT - значение параметра T в параметрическом представлении кривой.
|
||
Выходные параметры:
|
||
X, Y, Z - касательный вектор.
|
||
```
|
||
|
||
|
||
## GetWeightCentre - Получить центр тяжести кривой
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetWeightCentre( double * X, double * Y, double * Z );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT GetWeightCentre( double * X, double * Y, double * Z, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Выходные параметры:
|
||
X, Y, Z - координаты центра тяжести кривой.
|
||
```
|
||
|
||
|
||
## IsArc - Является ли кривая дугой окружности
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsArc = Object.IsArc; Получить свойство (* )
|
||
IsArc = Object.GetIsArc(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsArc( &IsArc ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## IsCircle - Является ли кривая окружностью
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsCircle = Object.IsCircle; Получить свойство (* )
|
||
IsCircle = Object.GetIsCircle(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsCircle( &IsCircle ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## IsEllipse - Является ли кривая эллипсом
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsEllipse = Object.IsEllipse; Получить свойство (* )
|
||
IsEllipse = Object.GetIsEllipse(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsEllipse( &IsEllipse ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения
|
||
Версия КОМПАС v22.
|
||
|
||
|
||
## IsEllipseArc - Является ли кривая дугой эллипса
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsEllipseArc = Object.IsEllipseArc; Получить свойство (* )
|
||
IsEllipseArc = Object.GetIsEllipseArc(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsEllipseArc( &IsEllipseArc ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## IsLineSeg - Является ли кривая отрезком
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsLineSeg = Object.IsLineSeg; Получить свойство (* )
|
||
IsLineSeg = Object.GetIsLineSeg(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsLineSeg( &IsLineSeg ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## IsNurbs - Определить, является ли кривая NURBS
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsNurbs = Object.IsNurbs; Получить свойство (* )
|
||
IsNurbs = Object.GetIsNurbs(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsNurbs( &IsNurbs ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
(отсутствуют).
|
||
|
||
|
||
## IsPlanar - Является ли кривая плоской
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsPlanar = Object.IsPlanar; Получить свойство (* )
|
||
IsPlanar = Object.GetIsPlanar(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsPlanar( &IsPlanar ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## IsStraight - Является ли кривая прямолинейной
|
||
|
||
Тип данных: BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
IsStraight = Object.IsStraight; Получить свойство (* )
|
||
IsStraight = Object.GetIsStraight(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_IsStraight( &IsStraight ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## NearPointProjection - Получить ближайшую проекцию точки на кривую
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL NearPointProjection( double X, double Y, double Z, double * T, BOOL Ext );
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
HRESULT NearPointProjection( double X, double Y, double Z, double * T, BOOL Ext, BOOL * Result );
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
Входные параметры:
|
||
X, Y, Z - координаты исходной пространственной точки,
|
||
Ext - если проекция точки вне кривой,
|
||
TRUE - проецировать на продолжение кривой,
|
||
FALSE - найти ближайшую граничную точку кривой. Если проекция точки внутри кривой, значение этого параметра не учитывается.
|
||
Выходные параметры:
|
||
T - параметрические координаты точки на кривой.
|
||
```
|
||
|
||
|
||
## ParamMax - Получить значение параметра конечное
|
||
|
||
Тип данных: double
|
||
Синтаксис Automation:
|
||
```
|
||
ParamMax = Object.ParamMax; Получить свойство (* )
|
||
ParamMax = Object.GetParamMax(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_ParamMax( &ParamMax) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## ParamMin - Получить значение параметра начальное
|
||
|
||
Тип данных: double
|
||
Синтаксис Automation:
|
||
```
|
||
ParamMin = Object.ParamMin; Получить свойство (* )
|
||
ParamMin = Object.GetParamMin(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_ParamMin( &ParamMin ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## Periodic - Периодичность замкнутой кривой
|
||
|
||
Тип данных:BOOL
|
||
Синтаксис Automation:
|
||
```
|
||
Periodic = Object.Periodic; Получить свойство (* )
|
||
Periodic = Object.GetPeriodic(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_Periodic( &Periodic ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
|
||
|
||
## Placement - Интерфейс локальной системы координат (положение объекта)
|
||
|
||
Тип данных: Указатель на интерфейс IPlacement3D
|
||
Синтаксис Automation:
|
||
```
|
||
Placement = Object.Placement; Получить свойство (* )
|
||
Placement = Object.GetPlacement(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_Placement( &Placement ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|
||
Версия КОМПАС v22
|
||
|
||
|
||
## Radius - Радиус кривой
|
||
|
||
Тип данных: double
|
||
Синтаксис Automation:
|
||
```
|
||
Radius = Object.Radius; Получить свойство (* )
|
||
Radius = Object.GetRadius(); Получить свойство (**)
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
Object.get_Radius( &Radius ) Получить свойство
|
||
```
|
||
Примечание:
|
||
Свойство доступно только для чтения.
|