Files
kompas3d-mcp/docs/Kompas3D_SDK/interfaces/kscurve3d.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
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>
2026-05-26 20:00:05 +03:00

508 lines
22 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 - если проекция точки не попала на саму кривую.
```