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>
508 lines
22 KiB
Markdown
508 lines
22 KiB
Markdown
---
|
||
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 - если проекция точки не попала на саму кривую.
|
||
```
|