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

22 KiB

title, type, api, domain, tags, sources
title type api domain tags sources
Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D) interface
api7
3d
assembly
interface
api7
3d
assembly
kscurve3d
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    - если проекция точки не попала на саму кривую.