e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
66 lines
2.6 KiB
Markdown
66 lines
2.6 KiB
Markdown
---
|
|
title: "Bezier - Создать кривую Безье"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, bezier]
|
|
sources:
|
|
- bezier.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с графическим документом > Создание графических объектов > Кривые Безье, Nurbs, ломаные *
|
|
|
|
|
|
## Bezier - Создать кривую Безье
|
|
|
|
Пример...
|
|
Аналог данной функции при использовании Automation - метод ksDocument2D::ksBezier.
|
|
Синтаксис:
|
|
```
|
|
int Bezier (int closed, unsigned int style);
|
|
Входные параметры:
|
|
closed - признак замыкания сплайна: 0 - незамкнутый, 1 - замкнутый,
|
|
style стиль линии.
|
|
Системные стили линий...
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. Характерные точки кривой Безье задаются функциями Point (если не надо задавать производные в узлах) или BezierPoint (при необходимости задания производных) до вызова EndObj.
|
|
2. Объект создается в текущем слое текущего вида.
|
|
3. В качестве стиля линии можно задавать номер системного или пользовательского стиля линии.
|
|
4. Функция EndObj возвращает указатель на созданный объект Кривая Безье.
|
|
|
|
|
|
## Bezier, _Bezier - пример использования
|
|
|
|
void Bezier_Example (void)
|
|
{
|
|
double x[5]={15, 35, 55, 75, 95 };
|
|
double y[5]={15, 75, 25, 95, 15 };
|
|
Bezier (1, 0); // определение кривой
|
|
Point (10, 10, 1);
|
|
Point (30, 70, 1);
|
|
Point (50, 20, 1);
|
|
Point (70, 90, 1);
|
|
Point (90, 10, 1);
|
|
EndObj (); // закончить формирование кривой
|
|
// задание производных в узлах
|
|
BezierPointParam par;
|
|
double x[] = { 0, 20, 50, 70, 100, 50 };
|
|
double y[] = { 0, 20, 10, 20, 0, -50 };
|
|
double ang[] = { 0, 30, 40, 45, -45, -30 };
|
|
double left[] = { 1, 1, 2, 3, 1, 1 };
|
|
double right[]= { 2, 2, 1, 1, 3, 4 };
|
|
reference p = Bezier (0, 1);
|
|
for (int i=0; i<5; i)
|
|
{
|
|
par.x = x[i]; par.y = y[i];
|
|
par.ang = ang[i];
|
|
par.left = left[i]; par.right = right[i];
|
|
BezierPoint(&par);
|
|
}
|
|
EndObj(); // закончить формирование кривой
|
|
_Bezier (&par, 6, 0, 1);
|
|
};
|