Крива Безьє – КОМПАС в DELPHI

Точка кривої Безьє (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(kompasGetParamStruct(ko_BezierPointParam)) BezierPointParamInit()

/ / Запускаємо процес побудови кривої

Document2DksBezier(0,1)

/ / 1-а точка кривої BezierPointParamx:=100 BezierPointParamy:=100

BezierPointParamang:=45 Document2DksBezierPoint(BezierPointParam)

/ / 2-а точка кривої BezierPointParamx:=110 BezierPointParamy:=110

BezierPointParamang:=0 Document2DksBezierPoint(BezierPointParam)

/ / 3-а точка кривої BezierPointParamx:=120 BezierPointParamy:=90

BezierPointParamang:=0 Document2DksBezierPoint(BezierPointParam)

/ / 4-а точка кривої BezierPointParamx:=130 BezierPointParamy:=110

BezierPointParamang:=0 Document2DksBezierPoint(BezierPointParam)

/ / Зупиняємо процес побудови кривої

Document2DksEndObj()

……

В результаті роботи цієї програми буде побудована крива представлена ​​нижче:

Джерело: Норсеев Сергій, «розробка програм під КОМПАС У DELPHI»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*