---
title: "Интерфейс INurbsSurface"
type: interface
api: [api7]
tags: [interface, api7, inurbssurface]
sources:
  - inurbssurface.html
---

*API интерфейсов. Версия 7 > Документ 3D  > Поверхности  > Интерфейс ISurfaceContainer  > ISurfaceContainer - свойства *


## Интерфейс INurbsSurface

Интерфейс Nurbs-поверхности.
Иерархия:
IKompasAPIObject
IModelObject
INurbsSurface
Описание:
Интерфейс позволяет создать NURBS-поверхность по заданной поверхности или по параметрам NURBS-поверхности. Есть возможность ограничить поверхность набором контуров.
Примечание:
Интерфейс можно получить с помощью свойства INurbsSurfaces::NurbsSurface и метода INurbsSurfaces::Add.


## AddBoundary - Добавить границу для NURBS-поверхности

Синтаксис Automation:
```
BOOL AddBoundary( BOOL UV, BOOL Closed, long Degree, VARIANT Points, VARIANT Weights, VARIANT Knots, double TMin, double TMax );
```
Синтаксис COM:
```
HRESULT AddBoundary( BOOL UV, BOOL Closed, long Degree, VARIANT Points, VARIANT Weights, VARIANT Knots, double TMin, double TMax, BOOL * Res );
Выходные параметры:
UV    - TRUE параметры кривой заданы в UV координатах поверхности (2D-Nurbs), - FALSE параметры заданы 3D координатами (3D-Nurbs). При создании границы выполняется проецирование 3D кривой на поверхность,
Closed    - TRUE замкнутое представление - FALSE - разомкнутое представление,
Degree    - порядок NURBS (степень полинома + 1), от 3 до 10,
Points    - массив SafeArray точек VT_ARRAY    VT_R8,
Weights    - веса,
Knots    - массив SafeArray узлов точек VT_ARRAY    VT_R8,
TMin, TMax    - минимальный и максимальный параметры кривой.
Возвращаемое значение:
TRUE    - в случае удачи.
```
Примечание:
Позволяет добавить границу для поверхности.
Граница не должна пересекаться с другими границами данной поверхности.


## BoundaryCount - Количество циклов

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


## ClosedU - Признак замкнутости поверхности по U

Тип данных: BOOL
Синтаксис Automation:
```
ClosedU = Object.ClosedU    Получить свойство (* )
Object.ClosedU = ClosedU    Установить свойство (* )
ClosedU = Object.GetClosedU()    Получить свойство (**)
Object.SetClosedU( ClosedU )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_ClosedU( &ClosedU )    Получить свойство
Object.put_ClosedU( ClosedU )    Установить свойство
```
Примечание:
Свойство позволяет получить признак замкнутости поверхности по U.
Свойство позволяет также преобразовать представление поверхности из замкнутого по U представления в разомкнутое по U и наоборот, из разомкнутого представления в замкнутое. См также INurbsSurface::ClosedV.


## ClosedV - Признак замкнутости поверхности по V

Тип данных: BOOL
Синтаксис Automation:
```
ClosedV = Object.ClosedV    Получить свойство (* )
Object.ClosedV = ClosedV    Установить свойство (* )
ClosedV = Object.GetClosedV()    Получить свойство (**)
Object.SetClosedV( ClosedV )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_ClosedV( &ClosedV )    Получить свойство
Object.put_ClosedV( ClosedV )    Установить свойство
```
Примечание:
Свойство позволяет получить признак замкнутости поверхности по V.
Свойство позволяет также преобразовать представление поверхности из замкнутого по V представления в разомкнутое по V и наоборот, из разомкнутого представления в замкнутое. См. также INurbsSurface::ClosedU.


## DeleteBoundary - Удалить границу

Синтаксис Automation:
```
BOOL DeleteBoundary( long BoundaryIndex )
```
Синтаксис COM:
```
HRESULT DeleteBoundary( long BoundaryIndex, BOOL * Res );
Выходные параметры:
BoundaryIndex    - индекс цикла (индекс контура).
Возвращаемое значение:
TRUE    - в случае удачи.
```


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

Синтаксис Automation:
```
BOOL GetBoundary( BOOL UV, BOOL Closed, long BoundaryIndex, long * Degree,
VARIANT * Points, VARIANT * Weights, VARIANT * Knots,
double * TMin, double * TMax );
```
Синтаксис COM:
```
HRESULT GetBoundary( BOOL UV, BOOL Closed, long BoundaryIndex, long * Degree,
VARIANT * Points, VARIANT * Weights, VARIANT * Knots,
double * TMin, double * TMax, BOOL * Res );
Входные параметры:
UV    - TRUE параметры кривой заданы в UV координатах поверхности (2D-Nurbs), - FALSE параметры заданы 3D координатами (3D-Nurbs). При создании границы выполняется проецирование 3D кривой на поверхность.
Closed    - TRUE замкнутое представление, - FALSE - разомкнутое представление,
BoundaryIndex    - индекс цикла (индекс контура).
Выходные параметры:
Degree    - порядок NURBS (степень полинома + 1), от 3 до 10,
Points    - массив SafeArray точек VT_ARRAY    VT_R8,
Weights    - веса,
Knots    - массив SafeArray узлов точек VT_ARRAY    VT_R8,
TMin, TMax    - минимальный и максимальный параметры кривой.
Возвращаемое значение:
TRUE    - в случае удачи.
В англоязычной специализированной литературе, документациях и различных API для систем автоматизированного проектирования (САПР) можно встретить использование термина degree для обозначения степени сплайна, а термина order — для обозначения порядка сплайна. Соответственно, order = degree + 1. Обратите внимание на то, что в интерфейсах КОМПАС-3D API термин degree используется для обозначения порядка сплайна (степень + 1).
```


## GetNurbsParams - Получить параметры NURBS-поверхности

Синтаксис Automation:
```
BOOL GetNurbsParams( BOOL ClosedV, BOOL ClosedU,
long * DegreeV, long * DegreeU, long * NPV, long * NPU,
VARIANT * Points, VARIANT * Weights, VARIANT * KnotsV, VARIANT * KnotsU );
```
Синтаксис COM:
```
HRESULT GetNurbsParams( BOOL ClosedV, BOOL ClosedU,
long * DegreeV, long * DegreeU, long * NPV, long * NPU,
VARIANT * Points, VARIANT * Weights, VARIANT * KnotsV, VARIANT * KnotsU, BOOL * Res );
Входные параметры:
ClosedV    - TRUE - получение параметров для замкнутого по V представления, - FALSE - получение параметров для разомкнутого по V представления,
ClosedU    - TRUE - получение параметров для замкнутого по U представления, - FALSE - получение параметров для разомкнутого по U представления.
Выходные параметры:
DegreeV    - порядок NURBS по V (степень полинома + 1), от 3 до 10,
DegreeU    - порядок NURBS по U (степень полинома + 1), от 3 до 10,
NPV    - количество точек по V,
NPU    - количество точек по U,
Points    - массив SafeArray точек VT_ARRAY    VT_R8,
Weights    - веса,
KnotsV    - массив SafeArray узлов точек по V VT_ARRAY    VT_R8,
KnotsU    - массив SafeArray узлов точек по U VT_ARRAY    VT_R8.
Возвращаемое значение:
TRUE    - в случае удачи.
В англоязычной специализированной литературе, документациях и различных API для систем автоматизированного проектирования (САПР) можно встретить использование термина degree для обозначения степени сплайна, а термина order — для обозначения порядка сплайна. Соответственно, order = degree + 1. Обратите внимание на то, что в интерфейсах КОМПАС-3D API термин degree используется для обозначения порядка сплайна (степень + 1).
```


## InitParamByFace - Создать по объекту

Синтаксис Automation:
```
BOOL InitParamByFace( LPDISPATCH Face );
```
Синтаксис COM:
```
HRESULT InitParamByFace( IModelObject * Face, BOOL * Res );
Выходные параметры:
Face    - указатель на грань IModelObject.
Возвращаемое значение:
TRUE    - в случае удачи.
```


## SetNurbsParams - Установить параметры NURBS-поверхности

Синтаксис Automation:
```
BOOL SetNurbsParams( BOOL ClosedV, BOOL ClosedU,
long DegreeV, long DegreeU, long NPV, long NPU,
VARIANT Points, VARIANT Weights, VARIANT KnotsV, VARIANT KnotsU );
```
Синтаксис COM:
```
HRESULT SetNurbsParams( BOOL ClosedV, BOOL ClosedU,
long DegreeV, long DegreeU, long NPV, long NPU,
VARIANT Points, VARIANT Weights, VARIANT KnotsV, VARIANT KnotsU, BOOL * Res );
Входные параметры:
ClosedV    - признак замкнутости поверхности по V
ClosedU    - признак замкнутости поверхности по U
DegreeV    - порядок NURBS по V (степень полинома + 1), от 3 до 10,
DegreeU    - порядок NURBS по U (степень полинома + 1), от 3 до 10,
NPV    - количество точек по V,
NPU    - количество точек по U,
Points    - массив SafeArray точек VT_ARRAY    VT_R8,
Weights    - веса,
KnotsV    - массив SafeArray узлов точек по V VT_ARRAY    VT_R8,
KnotsU    - массив SafeArray узлов точек по U VT_ARRAY    VT_R8.
Возвращаемое значение:
TRUE    - в случае удачи.
В англоязычной специализированной литературе, документациях и различных API для систем автоматизированного проектирования (САПР) можно встретить использование термина degree для обозначения степени сплайна, а термина order — для обозначения порядка сплайна. Соответственно, order = degree + 1. Обратите внимание на то, что в интерфейсах КОМПАС-3D API термин degree используется для обозначения порядка сплайна (степень + 1).
```
