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