--- 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). ```