---
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 )    Получить свойство
```
Примечание:
Свойство доступно только для чтения.
