Files
kompas3d-mcp/docs/Kompas3D_SDK/interfaces/imath2d.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

512 lines
17 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.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Интерфейс IMath2D"
type: interface
api: [api7]
domain: [2d]
tags: [interface, api7, 2d, imath2d]
sources:
- imath2d.html
---
*API интерфейсов. Версия 7 > 2D математика *
## Интерфейс IMath2D
Интерфейс 2D математики.
Иерархия:
IDispatch
IKompasAPIObject
IMath2D
Описание:
Интерфейс позволяет создавать математические кривые и осуществлять работу с точками.
Примечание:
Интерфейс можно получить у интерфейса приложения КОМПАС с помощью свойства IApplication::Math2D.
## Arc - Временная математическая дуга
Синтаксис Automation:
```
LPDISPATCH Arc( double Xc,
double Yc,
double Radius,
double Angle1,
double Angle2,
BOOL direction);
```
Синтаксис COM:
```
HRESULT Arc( double X,
double Y,
double Angle,
BOOL direction,
ICurve2D ** Result );
Входные параметры:
X, Y - координаты точки, через которую проходит прямая,
Angle - угол между прямой и осью ОХ,
Direction - направление дуги (TRUE - по часовой стрелке, FALSE - против часовой стрелки).
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую дугу.
## Bezier - Временная математическая кривая Безье
Синтаксис Automation:
```
LPDISPATCH Bezier( BOOL Closed,
BOOL AllPoints,
VARIANT Points );
```
Синтаксис COM:
```
HRESULT Bezier( BOOL Closed,
BOOL AllPoints,
VARIANT Points,
ICurve2D ** Result );
Входные параметры:
Closed - признак замкнутости кривой,
AllPoints - TRUE - в массиве присутствуют все точки узла, - FALSE - в массиве присутствуют только опорные точки,
Points - массив SAFEARRAY VT_R8 координат точек кривой.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую кривую Безье.
## Calculate - Вычислить выражение
Синтаксис Automation:
```
double Calculate( BSTR Expression );
```
Синтаксис COM:
```
HRESULT Calculate( BSTR Expression, double * Result );
Возвращаемое значение:
- Результат вычисления. В случае ошибки возвращается std::nan("").
Входные параметры:
Expression - выражение.
```
Примечание:
1.Поддерживаются функции и переменные:
  SIN, COS, TAN, ATAN - тригонометрические функции (аргумент в радианах),
  SIND, COSD, TAND, ATAND - тригонометрические функции (аргумент в градусах),
  SQRT, EXP, LN, ABS - корень квадратный, экспонента, натуральный логарифм, абсолютное значение.
2.Наименования функций можно писать в любом регистре (например, как COS, так и cos)
3.Если s = "A1 = 100 ", будет заведена переменная A1 c значением 100.
4.В именах переменных различается регистр букв (например, А1 и а1 - разные переменные).
5.Количество переменных не ограничено.
КOMPAS v24
## CalculateInertiaProperties - Функция возвращает плоские массо-центровочные характеристики
Синтаксис Automation:
```
BOOL CalculateInertiaProperties( VARIANT Objects, IInertiaProperties * InertiaParam, IInertiaPropertiesCalculateParam * CalculateParam );
```
Синтаксис COM:
```
HRESULT CalculateInertiaProperties( VARIANT Objects, IInertiaProperties * InertiaParam, IInertiaPropertiesCalculateParam * CalculateParam, BOOL * Result );
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
Входные параметры:
Objects - список или группа кривых,
InertiaParam - указатель на интерфейс результатов расчета МЦХ IInertiaProperties,
CalculateParam - указатель на интерфейс параметров расчета МЦХ IInertiaPropertiesCalculateParam.
КOMPAS v24
```
## CalculateMassInertiaProperties - Функция возвращает объемные массо-центровочные характеристики.
Синтаксис Automation:
```
BOOL CalculateMassInertiaProperties( VARIANT Objects, IMassInertiaProperties * MassInertiaParam, IMassInertiaPropertiesCalculateParam * CalculateParam );
```
Синтаксис COM:
```
HRESULT CalculateMassInertiaProperties( VARIANT Objects, IMassInertiaProperties * MassInertiaParam, IMassInertiaPropertiesCalculateParam * CalculateParam, BOOL * Result );
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
Входные параметры:
Objects - список или группа кривых,
InertiaParam - указатель на интерфейс результатов расчета МЦХ IMassInertiaProperties,
CalculateParam - указатель на интерфейс параметров расчета МЦХ IInertiaPropertiesCalculateParam.
КOMPAS v24
```
## CalculateReset - Очистить результаты вычислений и переменные калькулятора
Синтаксис Automation:
```
BOOL CalculateReset();
```
Синтаксис COM:
```
HRESULT CalculateReset( BOOL * Result );
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
КOMPAS v24
```
## Circle - Временная математическая окружность
Синтаксис Automation:
```
LPDISPATCH Circle( double Xc,
double Yc,
double Radius );
```
Синтаксис COM:
```
HRESULT Circle( double Xc,
double Yc,
double Radius,
ICurve2D ** Result );
Входные параметры:
Xc, Yc - координаты центра окружности,
Radius - радиус окружности.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую окружность.
## Ellipse - Временный математический эллипс
Синтаксис Automation:
```
LPDISPATCH Ellipse( double Xc,
double Yc,
double A,
double B,
double Angle );
```
Синтаксис COM:
```
HRESULT Ellipse( double Xc,
double Yc,
double A,
double B,
double Angle,
ICurve2D ** Result );
Входные параметры:
Xc, Yc - координаты центра эллипса,
А, В - длина полуосей эллипса,
Angle - угол наклона эллипса к оси ОХ.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временный математический эллипс.
## EllipseArc - Временная математическая дуга эллипса
Синтаксис Automation:
```
LPDISPATCH EllipseArc( double Xc,
double Yc,
double A,
double B,
double Angle,
double Angle1,
double Angle2,
BOOL direction) ;
```
Синтаксис COM:
```
HRESULT EllipseArc( double Xc,
double Yc,
double A,
double B,
double Angle,
double Angle1,
double Angle2,
BOOL direction,
ICurve2D ** Result );
Входные параметры:
Xc, Yc - координаты центра дуги эллипса,
А, В - длина полуосей дуги эллипса,
Angle - угол наклона дуги эллипса к оси ОХ.
Angle1 - начальный угол дуги к оси А,
Angle2 - конечный угол дуги к оси А,
Direction - направление дуги (TRUE - по часовой стрелке, FALSE - против часовой стрелки).
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую дугу эллипса.
## IsEqualPoints - Определить эквивалентность двух точек
Синтаксис Automation:
```
BOOL IsEqualPoints( double X1, double Y1, double X2, double Y2 );
```
Синтаксис COM:
```
HRESULT IsEqualPoints( double X1, double Y1, double X2, double Y2, BOOL * Result );
Возвращаемое значение:
TRUE - точки совпадают,
FALSE - точки не совпадают.
Входные параметры:
X1, Y1 - координаты первой точки,
X2, Y2 - координаты второй точки.
КOMPAS v24
```
## IsEqualPointsWithEpsilon - Определить эквивалентность двух точек с заданной точностью
Синтаксис Automation:
```
BOOL IsEqualPointsWithEpsilon( double X1, double Y1, double X2, double Y2, double Epsilon );
```
Синтаксис COM:
```
HRESULT IsEqualPointsWithEpsilon( double X1, double Y1, double X2, double Y2, double Epsilon, BOOL * Result );
Возвращаемое значение:
TRUE - точки совпадают,
FALSE - точки не совпадают.
Входные параметры:
X1, Y1 - координаты первой точки,
X2, Y2 - координаты второй точки,
Epsilon - погрешность сравнения.
КOMPAS v24
```
## Line - Временная математическая прямая
Синтаксис Automation:
```
LPDISPATCH Line( double X,
double Y,
double Angle );
```
Синтаксис COM:
```
HRESULT Line( double X,
double Y,
double Angle,
ICurve2D ** Result );
Входные параметры:
X, Y - координаты точки, через которую проходит прямая,
Angle - угол наклона прямой к оси ОХ.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую прямую.
## LineAngle - Угол линии по двум точками
Синтаксис Automation:
```
double LineAngle( double X1, double Y1, double X2, double Y2 );
```
Синтаксис COM:
```
HRESULT LineAngle( double X1, double Y1, double X2, double Y2, double * Result );
Возвращаемое значение:
- Значение угла.
Входные параметры:
X1, Y1 - первая точка на линии,
X2, Y2 - вторая точка на линии.
КOMPAS v24
```
## LineSeg - Временный математический отрезок
Синтаксис Automation:
```
LPDISPATCH LineSeg( double X1,
double Y1,
double X2,
double Y2 );
```
Синтаксис COM:
```
HRESULT LineSeg( double X1,
double Y1,
double X2,
double Y2,
ICurve2D ** Result );
Входные параметры:
X1, Y1 - координаты первой точки отрезка,
X2, Y2 - координаты второй точки отрезка.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временный математический отрезок.
## MovePoint - Сместить точку
Синтаксис Automation:
```
BOOL MovePoint( double * X,
double * Y,
Angle,
double Len );
```
Синтаксис COM:
```
HRESULT MovePoint( double * X,
double * Y,
double Angle,
double Len,
BOOL * Result );
Входные параметры:
X, Y - координаты точки,
Angle - угол смещения,
Len - расстояние смещения.
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
```
## Nurbs - Временная математическая Nurbs-кривая
Синтаксис Automation:
```
LPDISPATCH Nurbs( BOOL Closed,
long Degree,
VARIANT Points,
VARIANT Weights,
VARIANT Knots );
```
Синтаксис COM:
```
HRESULT Nurbs( BOOL Closed,
long Degree,
VARIANT Points,
VARIANT Weights,
VARIANT Knots,
ICurve2D ** Result );
Входные параметры:
Closed - признак замкнутости кривой,
Degree - порядок кривой,
Points - массив SAFEARRAY VT_R8 координат точек кривой,
Weight - массив SAFEARRAY VT_R8 весов точек,
Knots - массив SAFEARRAY VT_R8 узлов сплайна.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
В англоязычной специализированной литературе, документациях и различных API для систем автоматизированного проектирования (САПР) можно встретить использование термина degree для обозначения степени сплайна, а термина order — для обозначения порядка сплайна. Соответственно, order = degree + 1. Обратите внимание на то, что в интерфейсах КОМПАС-3D API термин degree используется для обозначения порядка сплайна (степень + 1).
```
Примечание:
Метод позволяет создать временную математическую Nurbs-кривую.
## PointsDistance - Расстояние между двумя точками
Синтаксис Automation:
```
double PointsDistance( double X1, double Y1, double X2, double Y2 );
```
Синтаксис COM:
```
HRESULT PointsDistance( double X1, double Y1, double X2, double Y2, double * Result );
Возвращаемое значение:
- Растояние.
Входные параметры:
X1, Y1 - первая точка,
X2, Y2 - вторая точка.
КOMPAS v24
```
## PolyLine - Временная математическая полилиния
Синтаксис Automation:
```
LPDISPATCH PolyLine( VARIANT Points,
BOOL Closed );
```
Синтаксис COM:
```
HRESULT PolyLine( VARIANT Points,
BOOL Closed,
ICurve2D ** Result );
Входные параметры:
Points - массив SAFEARRAY VT_R8 координат точек полилинии,
Closed - признак замкнутости кривой.
Возвращаемое значение:
- указатель на интерфейс математической кривой ICurve2D.
```
Примечание:
Метод позволяет создать временную математическую полилинию.
## Rotate - Повернуть точку на угол
Синтаксис Automation:
```
BOOL Rotate( double * X,
double * Y,
double Xc,
double Yc,
double Angle );
```
Синтаксис COM:
```
HRESULT Rotate( double * X,
double * Y,
double Xc,
double Yc,
double Angle,
BOOL * Result );
Входные параметры:
X, Y - координаты точки, которую нужно повернуть,
Xс, Yс - координаты центра поворота,
Angle - угол поворота.
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
```
Примечание:
Метод позволяет повернуть точку на угол.
## Symmetry - Симметрия точки относительно оси
Синтаксис Automation:
```
BOOL Symmetry( double * X,
double * Y,
LPDISPATCH Curve );
```
Синтаксис COM:
```
HRESULT Symmetry( double * X,
double * Y,
ICurve2D * Curve,
BOOL * Result );
Входные параметры:
X, Y - координаты точки,
Curve - ось (математическая прямая или отрезок).
Возвращаемое значение:
TRUE - в случае успешного завершения,
FALSE - в случае неудачи.
```
Примечание:
Метод позволяет получить координаты точки, симметричной относительно заданной оси.