---
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    - в случае неудачи.
```
Примечание:
Метод позволяет получить координаты точки, симметричной относительно заданной оси.
