---
title: "Интерфейсы ksSurface, ISurface"
type: interface
api: [api7]
domain: [assembly]
tags: [interface, api7, assembly, kssurface]
sources:
  - kssurface.html
---

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


## Интерфейсы ksSurface, ISurface

Интерфейс математической поверхности в трехмерном пространстве.
| ksSurface | - интерфейс Automation |
| --- | --- |
| ISurface | - интерфейс COM |
Примечание:
Данный интерфейс может быть получен с использованием методов интерфейсов ksPlaneAngleDefinition::GetSurface, ksPlaneMiddleDefinition::GetSurface, ksPlaneLineToPlaneDefinition::GetSurface, ksPlaneNormalToSurfaceDefinition::GetSurface, ksPlane3PointsDefinition::GetSurface ksPlanePerpendicularDefinition::GetSurface, ksPlaneTangentToSurfaceDefinition::GetSurface, ksSketchDefinition::GetSurface, ksPlaneEdgePointDefinition::GetSurface, ksPlaneLineToEdgeDefinition::GetSurface, ksPlaneParallelDefinition::GetSurface, ksPlaneOffsetDefinition::GetSurface, IDefaultObject::GetSurface, ksFaceDefinition::GetSurface.
Триангуляция (аппроксимирующая поверхность грани), Интерфейсы ksTessellation, ITessellation
Параметры сферы (Интерфейсы ksSphereParam, ISphereParam)
Параметры конической поверхности (Интерфейсы ksConeParam, IConeParam)
Параметры тора (Интерфейсы ksTorusParam, ITorusParam)
Параметры плоскости (Интерфейсы ksPlaneParam, IPlaneParam)
Параметры цилиндрической поверхности (Интерфейсы ksCylinderParam, ICylinderParam)
Параметры NURBS-поверхности (Интерфейсы ksNurbsSurfaceParam, INurbsSurfaceParam)
Параметры точки для трехмерных NURBS (Интерфейсы ksNurbsPoint3dCollCollection, INurbsPoint3dCollCollection)
Параметры точки для трехмерных NURBS(Интерфейсы ksNurbsPoint3dParam, INurbsPoint3dParam)
Параметры элемента вращения (Интерфейсы ksRotatedParam, IRotatedParam)


## BoundaryCount - Количество контуров, задающих границу поверхности

Тип данных: long
Синтаксис Automation:
```
BoundaryCount = Object.BoundaryCount    Получить свойство (* )
BoundaryCount = Object.GetBoundaryCount()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## CurveIntersection - Рассчитать пересечения с кривой

Синтаксис Automation:
```
BOOL CurveIntersection( LPDISPATCH curve, LPDISPATCH points, BOOL extSurf, BOOL extCurve );
```
Синтаксис COM:
```
BOOL CurveIntersection( LPCURVE3D curve, LPCOORDINATE3DCOLLECTION points, BOOL extSurf, BOOL extCurve );
Входные параметры:
curve    - указатель на интерфейс 3D кривой ksCurve3D,
extSurf    - TRUE - учитывать продолжение поверхности, - FALSE - не учитывать продолжение поверхности,
extCurve    - TRUE - учитывать продолжение кривой, - FALSE - не учитывать продолжение кривой.
Выходные параметры:
points    - Коллекция координат точек пересечений ksCoordinate3dCollection.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```
Примечание:
1. Координаты точек сортируются по параметру кривой t.
2. Параметр points является необязательным.
3. Заполняются только присланные коллекции.
4. Интерфейсы коллекций координат точек ksCoordinate3dCollection нужно получить с помощью функций ksDocument3D::GetInterface с параметром o3dType = o3d_coordinate3dCollection.


## GetArea - Получить площадь поверхности

Синтаксис Automation:
```
double GetArea (long bitVector);
```
Синтаксис COM:
```
double GetArea (unsigned long bitVector);
Входные параметры:
bitVector    - единицы измерения в интервале [ST_MIX_MM..ST_MIX_M].
Возвращаемое значение:
площадь поверхности    - в случае успешного завершения,
0    - в случае неудачи.
```


## GetAreaEx - Получить площадь грани (ST_MIX_MM..ST_MIX_M - единицы измерения)

Синтаксис Automation:
```
double GetAreaEx( long bitVector, double angleTolerance );
```
Синтаксис COM:
```
double GetAreaEx (unsigned long bitVector, double angleTolerance );
Входные параметры:
bitVector    - единицы измерения в интервале [ST_MIX_MM..ST_MIX_M],
angleTolerance    - ограничение углового отклонения при аппроксимации оболочки треугольными пластинами
Возвращаемое значение:
площадь грани    - в случае успешного завершения,
0    - в случае неудачи.
Версия Компас v21
```


## GetBoundaryUVNurbs - Получить параметры NURBS-представления границы поверхности

Синтаксис Automation:
```
BOOL GetBoundaryUVNurbs( BOOL uv,
BOOL unclamped,
long loopIndex,
long * degree,
long edgeIndex,
VARIANT * points,
VARIANT * weights,
VARIANT * knots,
double * tMin,
double * tMax );
```
Синтаксис COM:
```
BOOL GetBoundaryUVNurbs( BOOL uv,
BOOL unclamped,
long loopIndex,
long edgeIndex,
long * degree,
VARIANT * points,
VARIANT * weights,
VARIANT * knots,
double * tMin,
double * tMax );
Входные параметры:
uv    - TRUE - получить параметры границы поверхности в UV- параметрическом представлении исходной поверхности, - FALSE - получить параметры границы поверхности в 3D координатах,
unclamped    - TRUE - сомкнуть, если граница разомкнутая - FALSE - разомкнуть, если граница замкнутая,
loopIndex    - индекс цикла,
edgeIndex    индекс ребра в цикле (совпадает с индексом ребра в коллекции ориентированных ребер).
Выходные параметры:
degree    - порядок NURBS (степень полинома + 1), от 3 до 10,
points    - массив параметров UV или координат вершин - массив SafeArray вещественных чисел VT_ARRAY    VT_R8,
weights    - веса точек - массив SafeArray вещественных чисел VT_ARRAY    VT_R8,
knots    - узлы точек - массив SafeArray вещественных чисел VT_ARRAY    VT_R8,
tMin, tMax    - минимальный и максимальный параметры.
```
Примечание:
Если признак UV равен TRUE, то в массиве points возвращаются параметры UV для Nurbs-представления границы. Параметры в массиве лежат в следующей последовательности:
u0, v0, u1, v1, ... ui, vi.
Если признак UV равен FALSE, то в массиве points возвращаются координаты вершин Nurbs-представления границы. Координаты точек в полученном массиве лежат в следующей последовательности:
x0, y0, z0, x1, y1, z1, ...xi, yi, zi.
•Если индекс ребра равен -1, формируется Nurbs-представление контура границы.
•Если индекс >= 0, то формируется Nurbs-представление ребра, входящего в цикл, параметр unclamped при этом игнорируется.


## GetDerivativeU - Получить первую производную по U

Синтаксис Automation:
```
BOOL GetDerivativeU (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeU (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - первая производная по U.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeUU - Получить вторую производную по UU

Синтаксис Automation:
```
BOOL GetDerivativeUU (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeUU (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - вторая производная по UU.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeUUU - Получить третью производную по UUU

Синтаксис Automation:
```
BOOL GetDerivativeUUU (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeUUU (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - третья производная по UUU.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeUUV - Получить третью производную по UUV

Синтаксис Automation:
```
BOOL GetDerivativeUUV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeUUV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - третья производная по UUV.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeUV - Получить вторую производную по UV

Синтаксис Automation:
```
BOOL GetDerivativeUV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeUV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - вторая производная по UV.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeUVV - Получить третью производную по UVV

Синтаксис Automation:
```
BOOL GetDerivativeUVV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeUVV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - третья производная по UVV.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeV - Получить первую производную по V

Синтаксис Automation:
```
BOOL GetDerivativeV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - первая производная по V.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeVV - Получить вторую производную по VV

Синтаксис Automation:
```
BOOL GetDerivativeVV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeVV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - вторая производная по VV.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetDerivativeVVV - Получить третью производную по VVV

Синтаксис Automation:
```
BOOL GetDerivativeVVV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetDerivativeVVV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - третья производная по VVV.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetEdgesCount - Количество ребер в цикле

Количество ребер в цикле.
Синтаксис Automation:
```
long GetEdgesCount( long loopIndex );
```
Синтаксис COM:
```
long GetEdgesCount( long loopIndex );
```


## GetGabarit - Получить габаритный параллелепипед поверхности

Синтаксис Automation:
```
BOOL GetGabarit (double * x1, double *y1, double *z1, double * x2, double *y2, double *z2);
```
Синтаксис COM:
```
BOOL GetGabarit (double * x1, double *y1, double *z1, double * x2, double *y2, double *z2);
Выходные параметры:
x1, y1, z1, x2, y2, z2    - координаты вершин габаритного параллелепипеда.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Координаты вершин параллелепипеда возвращаются в системе координат компонента.


## GetNormal - Получить направление нормали

Синтаксис Automation:
```
BOOL GetNormal (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetNormal (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - вектор нормали.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetNurbsSurfaceParam - Получить NURBS-представление поверхности

Синтаксис Automation:
```
LPDISPATCH GetNurbsSurfaceParam();
```
Синтаксис COM:
```
LPNURBS3DPARAM GetNurbsSurfaceParam();
Возвращаемое значение:
- указатель на интерфейс ksNurbsSurfaceParam или INurbsSurfaceParam.
```
Примечание:
Метод позволяет получить параметры поверхности в NURBS-представлении. Для получения параметров поверхности в NURBS-представлении создается математическая Nurbs-поверхность, аналогичная заданной. Если заданная кривая является NURBS-поверхности, то возвращаются ее параметры без создания NURBS-представления.


## GetParamUMax - Получить конечное значение параметра U в параметрическом представлении поверхности

Синтаксис Automation:
```
double GetParamUMax();
```
Синтаксис COM:
```
double GetParamUMax();
Возвращаемое значение:
Значение параметра U    - в случае успеха,
0    - в случае неудачи.
```


## GetParamUMin - Получить начальное значение параметра U в параметрическом представлении поверхности

Синтаксис Automation:
```
double GetParamUMin();
```
Синтаксис COM:
```
double GetParamUMin();
Возвращаемое значение:
Значение параметра U.    - в случае успеха,
0    - в случае неудачи.
```


## GetParamVMax - Получить конечное значение параметра V в параметрическом представлении поверхности

Синтаксис Automation:
```
double GetParamVMax();
```
Синтаксис COM:
```
double GetParamVMax();
Возвращаемое значение:
Значение параметра V    - в случае успеха,
0    - в случае неудачи.
```


## GetParamVMin - Получить начальное значение параметра V в параметрическом представлении поверхности

Синтаксис Automation:
```
double GetParamVMin();
```
Синтаксис COM:
```
double GetParamVMin();
Возвращаемое значение:
Значение параметра V    - в случае успеха,
0    - в случае неудачи.
```


## GetPoint - Получить координаты точки на поверхности

Синтаксис Automation:
```
BOOL GetPoint (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetPoint (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - координаты точки на поверхности.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetSurfaceParam - Получить параметры плоскости, конуса, цилиндра, тора, сферы, NURBS или NULL

Синтаксис Automation:
```
LPDISPATCH GetSurfaceParam();
```
Синтаксис COM:
```
LPDISPATCH GetSurfaceParam();
Возвращаемое значение:
- указатель на интерфейс параметра поверхности.
```
Примечание:
В соответствии с типом объекта метод вернет указатель на интерфейс параметра:
| - плоскости | ksPlaneParam или IPlaneParam, |
| --- | --- |
| - конуса | ksConeParam или IConeParam, |
| - цилиндра | ksCylinderParam или ICylinderParam, |
| - тора | ksTorusParam или ITorusParam, |
| - сферы | ksSphereParam или ISphereParam, |
| - NURBS- поверхности | ksNurbsSurfaceParam или INurbsSurfaceParam. |
Зная тип объекта, можно базовый интерфейс привести к конечному (IDispatch или IUnknown). Для определения типа объекта можно воспользоваться методами IsPlane,
IsCone, IsCylinder, IsTorus, IsSphere, IsNurbsSurface.


## GetTangentVectorU - Получить направление касательного вектора по U

Синтаксис Automation:
```
BOOL GetTangentVectorU (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetTangentVectorU (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - касательный вектор по U.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## GetTangentVectorV - Получить направление касательного вектора по V

Синтаксис Automation:
```
BOOL GetTangentVectorV (double paramU, double paramV, double * x, double *y, double *z);
```
Синтаксис COM:
```
BOOL GetTangentVectorV (double paramU, double paramV, double * x, double *y, double *z);
Входные параметры:
paramU, paramV    - значения параметров U и V в параметрическом представлении поверхности.
Выходные параметры:
x, y, z    - касательный вектор по V.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Граничные значения параметров U и V получаются при помощи методов GetParamUMin и GetParamUMax и GetParamVMin и GetParamVMax. Координаты точки возвращаются в системе координат компонента.


## IsClosedU - Определить, является ли поверхность замкнутой по U

Синтаксис Automation:
```
BOOL IsClosedU();
```
Синтаксис COM:
```
BOOL IsClosedU();
Возвращаемое значение:
TRUE    - кривая замкнута,
FALSE    - кривая разомкнута.
```


## IsClosedV - Определить, является ли поверхность замкнутой по V

Синтаксис Automation:
```
BOOL IsClosedV();
```
Синтаксис COM:
```
BOOL IsClosedV();
Возвращаемое значение:
TRUE    - кривая замкнута,
FALSE    - кривая разомкнута.
```


## IsCone - Определить, является ли поверхность конической

Синтаксис Automation:
```
BOOL IsCone();
```
Синтаксис COM:
```
BOOL IsCone();
Возвращаемое значение:
TRUE    - поверхность является конической,
FALSE    - поверхность не является конической.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetSurfaceParam вернет указатель на интерфейс параметра конуса ksConeParam или IConeParam.


## IsCylinder - Определить, является ли поверхность цилиндрической

Синтаксис Automation:
```
BOOL IsCylinder();
```
Синтаксис COM:
```
BOOL IsCylinder();
Возвращаемое значение:
TRUE    - поверхность является цилиндрической,
FALSE    - поверхность не является цилиндрической.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetSurfaceParam вернет указатель на интерфейс параметра цилиндра ksCylinderParam или IPlaneCylinder.


## IsNurbsSurface - Определить, является ли поверхность NURBS

Синтаксис Automation:
```
BOOL IsNurbsSurface();
```
Синтаксис COM:
```
BOOL IsNurbsSurface();
Возвращаемое значение:
TRUE    - поверхность является NURBS,
FALSE    - поверхность не является NURBS.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра NURBS ksNurbsSurfaceParam или INurbsSurfaceParam.


## IsPlane - Определить, является ли грань плоской

Синтаксис Automation:
```
BOOL IsPlane();
```
Синтаксис COM:
```
BOOL IsPlane();
Возвращаемое значение:
TRUE    - поверхность является плоской,
FALSE    - поверхность не является плоской.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetSurfaceParam вернет указатель на интерфейс параметра плоскости ksPlaneParam или IPlaneParam.


## IsRevolved - Определить, является ли поверхность поверхностью вращения

Синтаксис Automation:
```
BOOL IsRevolved();
```
Синтаксис COM:
```
BOOL IsRevolved();
Возвращаемое значение:
TRUE    - поверхность является поверхностью вращения,
FALSE    - поверхность не является поверхностью вращения.
```


## IsSphere - Определить, является ли поверхность сферой

Синтаксис Automation:
```
BOOL IsSphere();
```
Синтаксис COM:
```
BOOL IsSphere();
Возвращаемое значение:
TRUE    - поверхность является сферической,
FALSE    - поверхность не является сферической.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetSurfaceParam вернет указатель на интерфейс параметра сферы ksSphereParam или ISphereParam.


## IsSwept - Определить, является ли поверхность поверхностью по траектории

Синтаксис Automation:
```
BOOL IsSwept();
```
Синтаксис COM:
```
BOOL IsSwept();
Возвращаемое значение:
TRUE    - поверхность является поверхностью по траектории,
FALSE    - поверхность не является поверхностью по траектории.
```


## IsTorus - Определить, является ли поверхность тором

Синтаксис Automation:
```
BOOL IsTorus();
```
Синтаксис COM:
```
BOOL IsTorus();
Возвращаемое значение:
TRUE    - поверхность является тороидальной,
FALSE    - поверхность не является тороидальной.
```
Примечание:
Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetSurfaceParam вернет указатель на интерфейс параметра тора ksTorusParam или ITorusParam.


## NearPointProjection - Получить ближайшую проекцию точки на поверхность

Синтаксис Automation:
```
BOOL NearPointProjection (double x, double y, double z, double * u, double * v, BOOL ext);
```
Синтаксис COM:
```
BOOL NearPointProjection (double x, double y, double z, double * u, double * v, BOOL ext);
Входные параметры:
x, y, z    - координаты исходной пространственной точки,
ext    - если проекция точки вне поверхности: - TRUE проецировать на продолжение поверхности, - FALSE найти ближайшую граничную точку поверхности. Если проекция точки внутри поверхности, значение этого параметра не учитывается.
Выходные параметры:
u, v    - параметрические координаты точки на поверхности.
Возвращаемое значение:
TRUE    - если проекция точки попала на саму поверхность или если ext равен TRUE,
FALSE    - если проекция точки не попала на саму поверхность.
```


## Tessellation - Получить указатель на интерфейс триангуляции

Синтаксис Automation:
```
LPDISPATCH GetTessellation();
```
Синтаксис COM:
```
LPTESSELLATION GetTessellation();
Возвращаемое значение:
- Указатель на интерфейс ksTessellation или ITessellation.
```
