---
title: "ksNurbsKnot - Создать узел NURBS-кривой"
type: guide
api: [api7]
tags: [guide, api7, ksnurbsknot]
sources:
  - ksnurbsknot.html
---

*API экспортных функций > Функции работы с графическим документом  > Создание графических объектов  > Кривые Безье, Nurbs, ломаные *


## ksNurbsKnot - Создать узел NURBS-кривой

Пример...
Аналог данной функции при использовании Automation - метод ksDocument2D::ksNurbsKnot.
Синтаксис:
```
int ksNurbsKnot (double knot);
Входной параметр:
knot    - узел кривой NURBS.
Возвращаемое значение:
1    - в случае успешного завершения,
0    - в случае неудачи.
```
Примечание:
Функция предназначена для считывания форматов обмена, в частности, DXF.
Для создания NURBS-кривой массив узлов (узловой вектор) задавать не обязательно. Но если он задан, то должен подчиняться следующим правилам:
1. Узловой вектор не должен быть убывающим.
2. Количество узлов (knotCount) должно быть:
– для разомкнутого сплайна knotCount= degree + pointCount;
– для замкнутого сплайна knotCount= degree + pointCount + ( degree -1 );
где:
– degree - степень сплайна,
– pointCount - количество точек.


## ksNurbsKnot - пример использования

static NurbsPointParam par[]= {{ 0,0,1}, {20,20,1}, {50,10,1}, {70,20,1} };
static double knotArr []= { 0, 0 ,0 ,1 ,2 ,2 ,2 };
//---------------------------------------------------------------------------------
// Создать Nurbs - сплайн
//---------------------------------------------------------------------------------
void DrawNurbs() {
//построить Nurbs сплайн как составной объект
Nurbs(3, 0, 1);
//ввод точек
for (int i=0; i<4; i) {
NurbsPoint(&par[i]);
}
//ввод узлов - для разомкнутого сплайна и степени 3 должно быть 7 узлов
for (int i=0; i<7; i) {
ksNurbsKnot(knotArr[i]);
}
reference p = EndObj();
LightObj(p, 1);
Message("NURBS");
LightObj(p, 0);
}
