Главная » Delphi, OLE, САПР » Дуга окружности Что мы будем строить – КОМПАС в DELPHI

0

В данной главе мы рассмотрим три метода построения дуг окружности. Для лучшей их демонстрации предлагаю использовать их для построения одной и той же дуги.

В качестве примера такой дуги возьмем полуокружность радиуса 10 с центром в точке с координатами (100,100).

Теперь перейдем непосредственно к самим методам.

По трем точкам

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

ksArcBy3Points(

x1: Double; y1: Double; //координаты начальной точки

x2: Double; y2: Double;  //координаты промежуточной точки x3: Double; y3: Double; //координаты конечной точки style: Integer           //стиль линии

): Integer;

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

Теперь посмотрим, как он может быть использован для построения нашей дуги. В качестве начальной точки может выступать точка A, в качестве конечной точка C, а в качестве промежуточной точка B.

Теперь определимся с их координатами. Из начальных условий задачи следует, что точка A имеет координаты (90,100), точка B (100, 110), а точка C (110,100). Теперь можем строить:

Var

………

Begin

………

Document2D: ksDocument2D;

Document2D.ksArcBy3Points(90 , 100, //точка A

100, 110, //точка B

110, 100, //точка C

1         // стиль линии

);

………

По центру и углам

Для построения дуги по центру и углам используется метод ksArcByAngle интерфейса ksDocument2D. Вот его прототип:

ksArcByAngle(

xc: Double; yc: Double; //координаты центра окружности дуги rad: Double;           //радиус дуги

f1: Double; f2: Double; //углы дуги

direction: Smallint;   //направление отрисовки

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

): Integer;

Теперь подробнее.

С параметрами xc, yc, rad и style думаю все ясно. С ними вопросов возникнуть не должно.

Параметры f1 и f2 задают углы между прямыми радиусами дуги в начальной и конечной точках дуги и горизонтальной прямой. Данные углы показаны на рисунке ниже

Обращаю ваше внимание на то, что построение ведется от угла f1 к углу f2.

Теперь по поводу параметра direction. Он задает направление, в котором следует отрисовывать дугу. Если он равен 1, то дуга отрисовывается против часовой стрелки, если же он равен -1, то по часовой стрелке. Например, дуга, изображенная на рисунке выше, отрисована против часовой стрелки, а на рисунке ниже представлена эта же самая дуга, но отрисованная уже по часовой стрелке.

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

Теперь вернемся к нашей дуге, которую нужно построить. Для ее отрисовки против часовой стрелки параметры должны быть заданы следующим образом: f1 = 0, f2 = 180. Для отрисовки этой же дуги но, по

часовой стрелке значения углов нужно поменять местами (т.е. f1=180, f2=0).

Код построения может выглядеть следующим образом:

Var

………

Begin

………

………

Document2D: ksDocument2D;

Document2D.ksArcByAngle(100,100, //координаты центра

10 ,    //радиус

0 , 180,//углы

1 ,    //против часовой стрелки

1      //основной стиль линии

);

По центру и конечным точкам

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

ksArcByPoint(

xc: Double; yc: Double; //координаты центра дуги

rad: Double;            //радиус дуги

x1: Double; y1: Double; //координаты первой точки x2: Double; y2: Double; //координаты второй точки direction: Smallint;    //направление отрисовки style: Integer          //стиль линии

): Integer;

Данный метод очень похож на рассмотренный ранее метод ksArcByAngle. Разница состоит только в том, что концевые точки задаются не углами, а координатами.

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

Теперь по поводу нашей дуги. Все необходимые параметры для ее построения у нас уже есть. В качестве первой и второй точек мы будем брать

точки A и C. Ниже приводится код построения такой дуги.

Var

………

Begin

………

Document2D: ksDocument2D;

Document2D.ksArcByPoint(100,100, //центр дуги

………

90 , 100, //точка A

1,       //против часовой стрелки

1        //основной стиль линии

);

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

По теме:

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