Главная » Delphi, OLE, САПР » Кривая Безье – КОМПАС в DELPHI

0

Точка кривой Безье (ksBezierPointParam)

Точки кривой Безье выводятся не так, как обычные точки (методом ksPoint). Это связано с тем, что для построения кривой одних координат точек недостаточно. Каждая точка кривой описывается интерфейсом ksBezierPointParam. Получить данный интерфейс можно с помощью метода GetParamStruct интерфейса KompasObject. Для этого его надо вызвать с параметром ko_BezierPointParam. Рассмотрим некоторые свойства этого интерфейса:

ang – угол наклона касательной к кривой в этой точке; left – расстояние от базовой точки до левой точки узла;

right – расстояние от базовой точки до правой точки узла; x, y – координаты точки.

Для лучшего понимания назначения параметров left и right рекомендую посмотреть алгоритм построения данной кривой.

Метод у данного интерфейса всего один – Init(). Он сбрасывает параметры точки.

Для непосредственного построения точки кривой используется метод ksBezierPoint интерфейса ksDocument2D. Вот прототип этого метода:

ksBezierPoint(

const par: IDispatch //интерфейс KsBezierPointParam

): Integer;

нуль.

В случае успеха данный метод возвращает единицу, а в случае ошибки

Построение кривой Безье

Процесс построения кривой Безье похож на процесс построения ломаной линии, рассмотренный нами в предыдущей главе. Процесс построения кривой Безье запускается методом ksBezier интерфейса ksDocument2D. Вот прототип этого метода:

ksBezier(

closed: Smallint; //Признак замкнутости

style: Integer  //Стиль линии

): Integer;

Если параметр closed равен нулю, то строится незамкнутая кривая, если же он равен единице, то строится замкнутая кривая.

В случае успеха данный метод возвращает единицу, а в случае ошибки

нуль.

Для остановки процесса построения кривой используется метод ksEndObj, который мы рассматривали в прошлой главе, когда говорили о ломаной линии.

Что ж посмотрим, как это выглядит на практике:

var

kompas: KompasObject; Document2D: ksDocument2D;

BezierPointParam: ksBezierPointParam;

……

begin

……

//Получаем интерфейс параметров точки кривой Безье

BezierPointParam:=ksBezierPointParam(kompas.GetParamStruct(ko_BezierPointParam)); BezierPointParam.Init();

//Запускаем процесс построения кривой

Document2D.ksBezier(0,1);

//1-я точка кривой BezierPointParam.x:=100; BezierPointParam.y:=100;

BezierPointParam.ang:=45; Document2D.ksBezierPoint(BezierPointParam);

//2-я точка кривой BezierPointParam.x:=110; BezierPointParam.y:=110;

BezierPointParam.ang:=0; Document2D.ksBezierPoint(BezierPointParam);

//3-я точка кривой BezierPointParam.x:=120; BezierPointParam.y:=90;

BezierPointParam.ang:=0; Document2D.ksBezierPoint(BezierPointParam);

//4-я точка кривой BezierPointParam.x:=130; BezierPointParam.y:=110;

BezierPointParam.ang:=0; Document2D.ksBezierPoint(BezierPointParam);

//Останавливаем процесс построения кривой

Document2D.ksEndObj();

……

В   результате   работы   этой   программы   будет   построена   кривая представленная ниже:

Источник: Норсеев Сергей, «РАЗРАБОТКА ПРИЛОЖЕНИЙ ПОД КОМПАС В DELPHI»

По теме:

  • Комментарии