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