Главная » Delphi, OLE, САПР » Линия-выноска – КОМПАС в DELPHI

0

Составная строка (ksTextLineParam)

Интерфейс ksTextLineParam служит для описания строки, состоящей из строковых элементов. Получить этот интерфейс можно с помощью метода GetParamStruct интерфейса KompasObject, для этого в качестве единственного параметра данному методу нужно передать значение константы ko_TextLineParam. Рассмотрим свойства интерфейса ksTextLineParam.

style – номер системного стиля текста. Допустимые номера системных стилей текстов приводились в главе 22. Для линии выноски отдельного системного стиля текста не предусмотрено, поэтому мы в качестве значения данного свойства будем указывать значение нуль. Это говорит о том, что для данного объекта следует использовать ситсемный стиль текста, предусмотренный для него по умолчанию.

Теперь рассмотрим методы интерфейса ksTextLineParam.

GetTextItemArr() – возвращает интерфейс динамического массива ksDynamicArray (см. главу 22) компонентов строки ksTextItemParam (см. главу 5).

SetTextItemArr – устанавливает новый массив компонентов строки. Интерфейс устанавливаемого  массива (ksDynamicArray) принимается в качестве единственного параметра метода. В случае успеха метод возвращает значение TRUE.

Init() – выполняет инициализацию (обнуление) всех свойств данного метода. В случае успеха возвращает значение TRUE.

Параметры линии-выноски (ksLeaderParam)

Интерфейс ksLeaderParam описывает параметры линии-выноски. Получить этот интерфейс можно с помощью метода GetParamStruct интерфейса KompasObject. Для этого в качестве единстенного параметра ему нужно предать значение константы ko_LeaderParam. Рассмотрим свойства интерфейса lsLeaderParam.

around – обозначает наличие на линии-выноске знака обработки по контуру. Если значение этого свойства равно нулю, то знака нет. Если же

значение этого свойства равно единице, то знак обработки по контуру присутствует. На рисунке ниже две линии-выноски без знака обработки по контуру (слева) и со знаком обработки по контуру (справа).

arrowType   –    тип    указателя    линии-выноски.    В   таблице   ниже представлены допустимые значения данного свойства.

Значение

Описание

Вид линии-выноски

0

Нет указателя

1

В виде точки

2

В виде стрелки

3

В виде верхней половины стрелки

4

В виде нижней половины стрелки

cText0  –  количество  строк  над  полкой  линии-выноски.  Где  и  как задаются эти строки, будет рассказано ниже.

cText1 – количество строк под полкой линии-выноски.

cText2  –  количество  строк  над  «ножкой»  линии-выноски  (не  более одной).

cText3  –  количество  строк  под  «ножкой» линии-выноски  (не  более одной).

dirX    –    направление    полки    линии-выноски.    В    таблице    ниже представлены допустимые значения этого свойства.

Значение

Описание

Вид линии-выноски

0

полка ориентирована вправо1

-1

полка ориентирована влево

1

полка ориентирована вправо

2

полка ориентирована вверх

3

полка ориентирована вниз

signType  –  тип  знака  на  «ножке»  линии-выноски.  В  таблице  ниже представлены допустимые значения этого свойства.

1 Согласно документации при dirX равном нулю полки нет. Однако, на практике, полка ориентирована вправо

Значение

Описание

Вид линии-выноски

0

нет никакого знака

1

знак склеивания

2

знак пайки

3

знак сшивания

4

знак соединения внахлестку металлическими скобами

5

знак углового соединения металлическими скобами

6

знак монтажного шва

x  и  y  –  координаты  точки  начала  полки,  точка  ее  соединения  с

«ножкой».

Теперь рассмотрим методы интерфейса ksLeaderParam.

GetpPolyline() – возвращает интерфейс массива «ножек» линии- выноски. Массив задается в виде интерфейса ksDynamicArray (см. главу 22). Каждая «ножка» представляет собой ломанную. На рисунке ниже показан пример такой ломаной «ножки».

Элементами массива, возвращаемого методом GetpPolyline, являются массивы ksDynamicArray математических точек ksMathPointParam (см. главу 29).

То есть, по факту метод GetpPolyline возвращает двумерный динамический массив точек.

Каждый дочерний массив описывает отдельную «ножку» линии- выноски. Каждая «ножка» строится от базовой точки линии-выноски (ее координаты определяются значениями свойств x и y, и в массиве не указываются) по точкам, указанным в массиве, в порядке их следования.

SetpPolyline – устанавливает новый массив «ножек» линии-выноски. Интерфейс нового массива ksDynamicArray принимается в качестве единственного параметра метода. В случае успеха данный метод возвращает значение TRUE.

GetpTextline() – возвращает динамический массив ksDynamicArray строк текста ksTextLineParam. Строки в этом массиве следуют в следующем порядке: строки над полкой (их количество задается свойством cText0); строки под полкой (их количество задается свойством cText1); строки над

«ножкой» (их количество задается свойством cText2); строки под «ножкой» (их количество задается свойством cText3).

Строки над (под) полкой образуют одну строку. Для большей ясности на рисунке ниже показана линия выноски, в которой выводится две строки над полкой и две строки под полкой.

Строк над (под) «ножкой» не может быть более одной.

SetpTextline – устанавливает новый массив строк. Новый массив задается интерфейсом ksDynamicArray (см. главу 22). В случае успеха метод возвращает значение TRUE.

Init() – выполняет инициализацию (обнуление) значений свойств данного интерфейса и пересоздает динамические массивы.

Построение линии-выноски

Для построения линии-выноски используется метод ksLeader интерфейса ksDocument2D. В качестве единственного параметра данный метод принимает интерфейс параметров линии-выноски ksLeaderParam.

В случае успеха метод ksLeader возвращает числовой идентификатор построенной линии-выноски. А в случае ошибки – значение нуль.

Пример 1. Простая линия-выноска

Ниже приводится ключевой фрагмент исходного текста программы, в которой демонстрируется построение простой линии-выноски.

var

kompas: KompasObject; Document2D: ksDocument2D; LeaderParam: ksLeaderParam;

DynamicArray, DynamicArray2: ksDynamicArray; MathPointParam: ksMathPointParam; TextLineParam: ksTextLineParam; TextItemParam: ksTextItemParam;

……………………………………

Begin

……………………………………

//Получаем интерфейс параметров линии выноски LeaderParam:=ksLeaderParam(kompas.GetParamStruct(ko_LeaderParam)); LeaderParam.around := 0; //Без значка по кругу

LeaderParam.arrowType := 0; //Без указателя LeaderParam.cText0 := 1; //над полкой линии-выноски LeaderParam.cText1 := 0; //под полкой линии-выноски LeaderParam.cText2 := 0; //над ножкой LeaderParam.cText3 := 0; //под ножкой LeaderParam.dirX  := 1; //полка вправо LeaderParam.signType := 0; //без знака на полке

//Координаты базовой точки

LeaderParam.x := 110;

LeaderParam.y := 110;

//Получаем массив "ножек" DynamicArray:=ksDynamicArray(LeaderParam.GetpPolyline()); DynamicArray.ksClearArray();

//Подготавливаем массив точек

DynamicArray2:=ksDynamicArray(kompas.GetDynamicArray(2));

DynamicArray2.ksClearArray();

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

MathPointParam := ksMathPointParam(kompas.GetParamStruct(ko_MathPointParam)); MathPointParam.x := 100;

MathPointParam.y := 100;

//Добавляем точку в массив точек

DynamicArray2.ksAddArrayItem(-1,MathPointParam);

//Добавляем массив точек в массив "ножек"

DynamicArray.ksAddArrayItem(-1,DynamicArray2);

//Получаем массив элементов ksTextLineParam

DynamicArray := ksDynamicArray(LeaderParam.GetpTextline()); DynamicArray.ksClearArray();

//Получаем интерфейс ksTextLineParam

TextLineParam := ksTextLineParam(kompas.GetParamStruct(ko_TextLineParam));

TextLineParam.style:=0; //Стиль текста по умолчанию

//Получаем массив элементов ksTextItemParam

DynamicArray2 := ksDynamicArray(TextLineParam.GetTextItemArr()); DynamicArray2.ksClearArray();

//Получаем интерфейс ksTextItemParam

TextItemParam := ksTextItemParam(kompas.GetParamStruct(ko_TextItemParam)); TextItemParam.type_:=0; //строка

TextItemParam.s := ‘1’; //сама строка

//Добавляем интерфейс ksTextItemParam в соответствующий массив

DynamicArray2.ksAddArrayItem(-1,TextItemParam);

//Добавляем интерфейс ksTextLineParam в соответствующий массив

DynamicArray.ksAddArrayItem(-1, TextLineParam);

//Строим саму линию-выноску Document2D.ksLeader(LeaderParam); kompas.Visible:=true;

end;

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

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

По теме:

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