---
title: "Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D)"
type: interface
api: [api7]
domain: [3d, assembly]
tags: [interface, api7, 3d, assembly, kscurve3d]
sources:
  - kscurve3d.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D )  > Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart *


## Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D)

Интерфейс математической кривой в трехмерном пространстве.
| ksCurve3D | - интерфейс Automation |
| --- | --- |
| ICurve3D | - интерфейс COM |
Примечание:
Данный интерфейс может быть получен с использованием метода интерфейсов ksAxisConefaceDefinition::GetCurve3D, IDefaultObject::GetCurve3D, ksAxisEdgeDefinition::GetCurve3D, ksAxis2PlanesDefinition::GetCurve3D, ksAxisOperationsDefinition::GetCurve3D, ksAxis2PointsDefinition::GetCurve3D, ksEdgeDefinition::GetCurve3D.
Параметры отрезка (Интерфейсы ksLineSeg3dParam,ILineSeg3dParam)
Параметры окружности (Интерфейсы ksCircle3dParam,ICircle3dParam)
Параметры эллипса (Интерфейсы ksEllipse3dParam, IEllipse3dParam)
Параметры трехмерной дуги(Интерфейсы ksArc3dParam,IArc3dParam)
Параметры трехмерных NURBS (Интерфейсы ksNurbs3dParam,INurbs3dParam)


## CalculatePolygon - Рассчитать полигон

Синтаксис Automation:
```
VARIANT CalculatePolygon( double step );
```
Синтаксис COM:
```
BOOL CalculatePolygon( VARIANT * points,
double step );
Входные параметры:
step    - шаг для расчета полигона.
Возвращаемое значение:
- массив SafeArray координат точек на кривой, полученных с шагом step.
```
Примечание:
1. Если шаг задан равным 0, то используется шаг применяемый в системе КОМПАС, который рассчитывается с учетом габаритов детали.
2. Если шаг задан -1, то используется шаг применяемый в системе КОМПАС при отрисовке кривых. Он рассчитывается с учетом следующих параметров:
•габариты детали и масштаба отображения модели.
•тип возвращаемого массива VT_ARRAY | VT_R8
•значения координат в массиве лежат в последовательности x1, y1, z1, x2, y2, z2 ... xn, yn, zn.


## GetCurveParam - Получить параметры линии, окружности, эллипса, NURBS или NULL

Синтаксис Automation:
```
LPDISPATCH GetCurveParam();
```
Синтаксис COM:
```
LPUNKNOWN GetCurveParam();
Возвращаемое значение:
- указатель на интерфейс параметра кривой.
```
Примечание:
В соответствии с типом объекта метод вернет указатель на интерфейс параметра:
| - отрезка | ksILineSeg3dParam или ILineSeg3dParam, |
| --- | --- |
| - дуги окружности | ksArc3dParam или IArc3dParam, |
| - окружности | ks ICircle3dParam или ICircle3dParam, |
| - эллипса | ksEllipse3dParam или IEllipse3dParam, |
| - NURBS | kIsNurbs3dParam или INurbs3dParam. |
Зная тип объекта, можно базовый интерфейс привести к конечному (IDispatch или IUnknown). Для определения типа объекта можно воспользоваться методами IsLineSeg, IsArc, IsCircle, IsEllipse, IsNurbs.


## GetDerivativeT - Получить первую производную по T

Синтаксис Automation:
```
BOOL GetDerivativeT (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeT (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - первая производная по T.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента.


## GetDerivativeTT - Получить вторую производную по T

Синтаксис Automation:
```
BOOL GetDerivativeTT (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeTT (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - вторая производная по T.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента.


## GetDerivativeTTT - Получить третью производную по T

Синтаксис Automation:
```
BOOL GetDerivativeTTT (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeTTT (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - третья производная по T.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента.


## GetGabarit - Получить габаритный параллелепипед кривой

Синтаксис Automation:
```
BOOL GetGabarit (double * x1,
double *y1,
double *z1,
double * x2,
double *y2,
double *z2);
```
Синтаксис COM:
```
BOOL GetGabarit (double * x1,
double *y1,
double *z1,
double * x2,
double *y2,
double *z2);
Выходные параметры:
x1, y1, z1, x2, y2, z2    - координаты вершин габаритного параллелепипеда.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Координаты вершин параллелепипеда возвращаются в системе координат компонента.


## GetLength - Получить длину кривой

Синтаксис Automation:
```
double GetLength (unsigned long bitVector);
```
Синтаксис COM:
```
double GetLength (unsigned long bitVector);
Входные параметры:
bitVector    - единицы измерения в интервале [ST_MIX_MM..ST_MIX_M].
Возвращаемое значение:
длина кривой    - в случае успешного завершения,
0    - в случае неудачи.
```


## GetMetricLength - Получить метрическую длину кривой

Синтаксис Automation:
```
double GetMetricLength (double startParam, double endParam);
```
Синтаксис COM:
```
double GetMetricLength (double startParam, double endParam);
Входные параметры:
startParam    - начальное значение параметра T в параметрическом представлении кривой,
endParam    - конечное значение параметра T в параметрическом представлении кривой.
Возвращаемое значение:
метрическая длина кривой    - в случае успешного завершения,
0    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax.


## GetNormal - Получить направление нормали

Синтаксис Automation:
```
BOOL GetNormal (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetNormal (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - вектор нормали.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента.


## GetNurbs3dParam - Получить NURBS-представление кривой

Синтаксис Automation:
```
LPDISPATCH GetNurbs3dParam();
```
Синтаксис COM:
```
LPNURBS3DPARAM GetNurbs3dParam();
Возвращаемое значение:
- указатель на интерфейс ksNurbs3dParam/INurbs3dParam.
```
Примечание:
Метод позволяет получить параметры кривой в NURBS-представлении. Для получения параметров кривой в NURBS-представлении создается математическая NURBS-кривая, аналогичная заданной. Если заданная кривая является NURBS-кривой, то возвращаются ее параметры без создания NURBS-представления.


## GetParamMax - Получить конечное значение параметра T в параметрическом представлении кривой

Синтаксис Automation:
```
double GetParamMax();
```
Синтаксис COM:
```
double GetParamMax();
Возвращаемое значение:
Значение параметра T    - в случае успеха,
0    - в случае неудачи.
```


## GetParamMin - Получить начальное значение параметра T в параметрическом представлении кривой

Синтаксис Automation:
```
double GetParamMin();
```
Синтаксис COM:
```
double GetParamMin();
Возвращаемое значение:
Значение параметра T    - в случае успеха,
0    - в случае неудачи.
```


## GetPoint - Получить координаты точки на кривой

Синтаксис Automation:
```
BOOL GetPoint (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetPoint (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - координаты точки на кривой.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координаты точки возвращаются в системе координат компонента.


## GetTangentVector - Получить направление касательного вектора

Синтаксис Automation:
```
BOOL GetTangentVector (double paramT, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetTangentVector (double paramT, double * x, double *y, double *z);
Входной параметр:
paramT    - значение параметра T в параметрическом представлении кривой.
Выходные параметры:
x, y, z    - касательный вектор.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента.


## IsArc - Определить, является ли кривая дугой окружности

Синтаксис Automation:
```
BOOL IsArc();
```
Синтаксис COM:
```
BOOL IsArc();
Возвращаемое значение:
TRUE    - кривая является дугой окружности,
FALSE    - кривая не является дугой окружности.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра дуги окружности ksArc3dParam или IArc3dParam.


## IsCircle - Определить, является ли кривая окружностью

Синтаксис Automation:
```
BOOL IsCircle();
```
Синтаксис COM:
```
BOOL IsCircle();
Возвращаемое значение:
TRUE    - кривая является окружностью,
FALSE    - кривая не является окружностью.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра окружности ksCircle3dParam или ICircle3dParam.


## IsClosed - Определить, является ли кривая замкнутой

Синтаксис Automation:
```
BOOL IsClosed();
```
Синтаксис COM:
```
BOOL IsClosed();
Возвращаемое значение:
TRUE    - кривая замкнута,
FALSE    - кривая разомкнута.
```


## IsDegenerate - Определить, является ли кривая вырожденной

Синтаксис Automation:
```
BOOL IsDegenerate();
```
Синтаксис COM:
```
BOOL IsDegenerate();
Возвращаемое значение:
TRUE    - кривая вырожденная,
FALSE    - кривая невырожденная.
```


## IsEllipse - Определить, является ли кривая эллипсом

Синтаксис Automation:
```
BOOL IsEllipse();
```
Синтаксис COM:
```
BOOL IsEllipse();
Возвращаемое значение:
TRUE    - кривая является эллипсом,
FALSE    - кривая не является эллипсом.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра эллипса ksEllipse3dParam или IEllipse3dParam.


## IsEllipseArc - Является ли кривая дугой эллипса

Синтаксис Automation:
```
BOOL IsEllipseArc();
```
Синтаксис COM:
```
BOOL IsEllipseArc();
Возвращаемое значение:
TRUE    - кривая является дугой эллипса,
FALSE    - кривая не является дугой эллипса.
Версия КОМПАС v22
```


## IsLineSeg - Определить, является ли кривая отрезком

Синтаксис Automation:
```
BOOL IsLineSeg();
```
Синтаксис COM:
```
BOOL IsLineSeg();
Возвращаемое значение:
TRUE    - кривая является отрезком,
FALSE    - кривая не является отрезком.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра отрезка ksLineSeg3dParam или ILineSeg3dParam.


## IsNurbs - Определить, является ли кривая NURBS

Синтаксис Automation:
```
BOOL IsNurbs();
```
Синтаксис COM:
```
BOOL IsNurbs();
Возвращаемое значение:
TRUE    - кривая является NURBS,
FALSE    - кривая не является NURBS.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра NURBS ksNurbs3dParam или INurbs3dParam.


## IsPeriodic - Определить, является ли замкнутая кривая периодической

Синтаксис Automation:
```
BOOL IsPeriodic();
```
Синтаксис COM:
```
BOOL IsPeriodic();
Возвращаемое значение:
TRUE    - кривая периодична,
FALSE    - кривая не периодична.
```


## IsPlanar - Определить, является ли кривая плоской

Синтаксис Automation:
```
BOOL IsPlanar();
```
Синтаксис COM:
```
BOOL IsPlanar();
Возвращаемое значение:
TRUE    - кривая плоская,
FALSE    - кривая неплоская.
```


## IsStraight - Является ли кривая прямолинейной

Синтаксис Automation:
```
BOOL IsStraight();
```
Синтаксис COM:
```
BOOL IsStraight();
Возвращаемое значение:
TRUE    - кривая является прямолинейной,
FALSE    - кривая не является прямолинейной.
Версия КОМПАС v22
```


## NearPointProjection - Получить ближайшую проекцию точки на поверхность

Синтаксис Automation:
```
BOOL NearPointProjection (double x, double y, double z, double * t, BOOL ext);
```
Синтаксис COM:
```
BOOL NearPointProjection (double x, double y, double z, double * t, BOOL ext);
Входные параметры:
x, y, z    - координаты исходной пространственной точки,
ext    - если проекция точки вне кривой: - TRUE проецировать на продолжение кривой, - FALSE найти ближайшую граничную точку кривой. Если проекция точки внутри кривой, значение этого параметра не учитывается.
Выходные параметры:
t    - параметрические координаты точки на кривой.
Возвращаемое значение:
TRUE    - если проекция точки попала на саму кривую или если ext равен TRUE,
FALSE    - если проекция точки не попала на саму кривую.
```
