---
title: "Измерение расстояния и угла между двумя примитивами (Интерфейсы ksMeasurer, IMeasurer)"
type: interface
api: [api7]
domain: [assembly, feature]
tags: [interface, api7, assembly, feature, ksmeasurer]
sources:
  - ksmeasurer.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D )  > Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart  > Объект Дерева построения (Интерфейсы ksFeature, IFeature) *


## Измерение расстояния и угла между двумя примитивами (Интерфейсы ksMeasurer, IMeasurer)

Интерфейс для измерений расстояния и угла между двумя примитивами.
| ksMeasurer | - интерфейс Automation |
| --- | --- |
| IMeasurer | - интерфейс COM |
Примечание:
1. Интерфейс применим для граней, ребер, вершин.
2. Данный интерфейс может быть получен с использованием метода интерфейса ksPart::GetMeasurer.


## angle - Угол между объектами

Интерфейс..
Тип данных: double
Синтаксис Automation:
```
angle = iMeasurer.angle    Получить свойство (* )
angle = iMeasurer.GetAngle()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## Calc - Произвести вычисления

Интерфейс..
Синтаксис Automation:
```
BOOL Calc();
```
Синтаксис COM:
```
BOOL Calc();
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```


## distance - Расстояние между объектами

Интерфейс..
Тип данных: double
Синтаксис Automation:
```
distance = iMeasurer.distance    Получить свойство (* )
distance = iMeasurer.GetDistance()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## extendObject1 - Признак вычисления за пределами первого объекта

Интерфейс..
Тип данных: BOOL
Синтаксис Automation:
```
extendObject1 = iMeasurer.extendObject1    Получить свойство (* )
iMeasurer.extendObject1 = extendObject1    Установить свойство (* )
extendObject1 = iMeasurer.GetExtendObject1()    Получить свойство (**)
iMeasurer.SetExtendObject1( extendObject1)    Установить свойство (**)
```
Примечание:
Если значение свойства равно TRUE, то следует вычислять за пределами второго объекта.


## extendObject2 - Признак вычисления за пределами второго объекта

Интерфейс..
Тип данных: BOOL
Синтаксис Automation:
```
extendObject2 = iMeasurer.extendObject2    Получить свойство (* )
iMeasurer.extendObject2 = extendObject2    Установить свойство (* )
extendObject2 = iMeasurer.GetExtendObject2()    Получить свойство (**)
iMeasurer.SetExtendObject2( extendObject2)    Установить свойство (**)
```
Примечание:
Если значение свойства равно TRUE, то следует вычислять за пределами первого объекта.


## GetMaxPoint1 - Получить первую точку отрезка максимального расстояния

Интерфейс..
Синтаксис Automation:
```
BOOL GetMaxPoint1 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetMaxPoint1 (double *x,
double *y,
double *z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetMaxPoint2 - Получить вторую точку отрезка максимального расстояния

Интерфейс..
Синтаксис Automation:
```
BOOL GetMaxPoint2 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetMaxPoint2 (double *x,
double *y,
double *z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetMinPoint1 - Получить первую точку отрезка минимального расстояния

Интерфейс..
Синтаксис Automation:
```
BOOL GetMinPoint1 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetMinPoint1 (double *x,
double *y,
double *z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetMinPoint12 - Получить вторую точку отрезка минимального расстояния

Интерфейс..
Синтаксис Automation:
```
BOOL GetMinPoint2 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetMinPoint2 (double *x,
double *y,
double *z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetNormalPoint1 - Получить первую точку отрезка расстояния по нормали

Интерфейс..
Синтаксис Automation:
```
BOOL GetNormalPoint1 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetNormalPoint1 (double *x,
double*y,
double*z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetNormalPoint2 - Получить вторую точку отрезка расстояния по нормали

Интерфейс..
Синтаксис Automation:
```
BOOL GetNormalPoint2 (double *x,
double *y,
double *z);
```
Синтаксис COM:
```
BOOL GetNormalPoint2 (double *x,
double *y,
double *z);
Выходные параметры:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## GetObject1 - Получить первый объект

Интерфейс..
Синтаксис Automation:
```
LPDISPATCH GetObject1();
```
Синтаксис COM:
```
LPUNKNOWN GetObject1();
Возвращаемое значение:
- указатель на интерфейс IDispatch или IUnknown первого объекта.
```
Примечание:
Возвращаемым значением может быть указатель на интерфейс грани, ребра, вершины. Зная тип объекта, можно привеcти его интерфейс к конечному 3D интерфейсу.


## GetObject2 - Получить второй объект

Интерфейс..
Синтаксис Automation:
```
LPDISPATCH GetObject2();
```
Синтаксис COM:
```
LPUNKNOWN GetObject2();
Возвращаемое значение:
- указатель на интерфейс IDispatch или IUnknown второго объекта.
```
Примечание:
Возвращаемым значением может быть указатель на интерфейс грани, ребра, вершины. Зная тип объекта, можно привести его интерфейс к конечному 3D интерфейсу.


## GetPoint1 - Получить ближайшую точку на первом объекте или на продолжении объекта

Интерфейс..
Синтаксис Automation:
```
BOOL GetPoint1 (double *x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetPoint1 (double *x, double *y, double *z);
Входной параметр:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Значения x, y, z возвращаются в системе координат компонента.


## GetPoint2 - Получить ближайшую точку на втором объекте или на продолжении объекта

Интерфейс..
Синтаксис Automation:
```
BOOL GetPoint2 (double *x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetPoint2 (double *x, double *y, double *z);
Входной параметр:
x, y, z    - координаты точки.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Значения x, y, z возвращаются в системе координат компонента.


## IsAngleValid - Определить применимость расчета угла

Интерфейс..
Синтаксис Automation:
```
BOOL IsAngleValid();
```
Синтаксис COM:
```
BOOL IsAngleValid();
Возвращаемое значение:
TRUE    - для данных объектов угол имеет смысл,
FALSE    - для данных объектов угол смысла не имеет.
```


## MaxDistance - Получить максимальное расстояние

Интерфейс..
Синтаксис Automation:
```
double MaxDistance();
```
Синтаксис COM:
```
double MaxDistance();
Возвращаемое значение:
- Максимальное расстояние между объектами (двумя гранями, гранью и ребром и т. п.)
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## MeasureResult - Получить результат измерения

Интерфейс..
Синтаксис Automation:
```
long MeasureResult();
```
Синтаксис COM:
```
ksMeasureResultEnum MeasureResult();
Возвращаемое значение:
- Результат измерения расстояния и угла между поверхностями из перечисления ksMeasureResultEnum.
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## MinDistance - Минимальное расстояние

Интерфейс..
Тип данных: double
Синтаксис Automation:
```
MinDistance = IMeasurer.MinDistance    Получить свойство (* )
MinDistance = IMeasurer.GetMinDistance()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## NormalDistance - Получить расстояние по нормали (межосевое или расстояние между гранями)

Интерфейс..
Синтаксис Automation:
```
double NormalDistance();
```
Синтаксис COM:
```
double NormalDistance();
Возвращаемое значение:
- Максимальное расстояние по нормали между объектами (двумя гранями, гранью и ребром и т. п.).
```
Примечание:
Метод доступен после вызова метода ksMeasurer::Calc (Automation) или IMeasurer::Calc (COM).


## SetObject1 - Задать первый объект

Интерфейс..
Синтаксис Automation:
```
BOOL SetObject1 (LPDISPATCH obj);
```
Синтаксис COM:
```
BOOL SetObject1 (LPUNKNOWN obj);
Входной параметр:
obj    - указатель на интерфейс IDispatch или IUnknown первого объекта.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Входным параметром может быть грань, ребро, вершина.


## SetObject2 - Задать второй объект

Интерфейс..
Синтаксис Automation:
```
BOOL SetObject2 (LPDISPATCH obj);
```
Синтаксис COM:
```
BOOL SetObject2 (LPUNKNOWN obj);
Входной параметр:
obj    - указатель на интерфейс IDispatch или IUnknown первого объекта.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Входным параметром может быть грань, ребро, вершина.


## unit - Единицы измерения

Интерфейс..
Тип данных: unsigned long
Синтаксис Automation:
```
unit = iMeasurer.unit    Получить свойство (* )
iMeasurer.unit = unit    Установить свойство (* )
unit = iMeasurer.GetUnit()    Получить свойство (**)
iMeasurer.SetUnit( unit )    Установить свойство (**)
```
Примечание:
Свойство находится в интервале [ST_MIX_MM..ST_MIX_M].
