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

0

Параметры позиционной линии-выноски (ksPosLeaderParam)

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

arrowType – тип указателя линии-выноски. Данное свойство аналогично свойству arrowType интерфейса ksLeaderParam, который рассматривался в предыдущей главе.

dirX – определяет ориентацию полки по горизонтальной оси. Принимает одно из двух допустимых значений: -1 (полка  ориентирована влево) или 1 (полка ориентирована вправо).

dirY – в документации старых версий КОМПАС (например, 8) это свойство упомянуто, но не описано. В документации более новой версии КОМПАСа (11) утверждается, что данное свойство определяет ориентацию полки по вертикали. Проявляется данное свойство только в случае позиционной линии-выноски, состоящей из двух или более строк. В таблице ниже представлены возможные значения данного свойства и их описание.

Значение

Описание

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

-1

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

1

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

style – номер системного стиля текста. Данные номера приводились в главе 22. Несмотря на то, что для текста, расположенного над позиционной линией-выноской1 предусмотрен системный стиль текста с номером 5, попытка построить позиционную линию-выноску с этим стилем текста оканчивается неудачей. Поэтому мы будем вынуждены в качестве значения

1 Как вы увидите в дальнейшем для позиционной линии-выноски невозможно задать текст, расположенный под полкой или над (под) «ножкой», как это было возможно в случае с обычной линией-выноской.

этого свойства указывать значение нуль (использовать системный стиль текста по умолчанию для данного объекта).

x и y – координаты базовой точки. Базовая точка – это точка пересечения «ножки» и полки позиционной линии-выноски.

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

GetpPolyline()   –   возвращает   интерфейс   динамического   массива

«ножек». Массив описывается интерфейсом ksDynamicArray (см. главу 22). Каждая «ножка» представляет собой отдельный массив (ksDynamicArray) точек. Каждая точка в «ножке» описывается интерфейсом ksMathPointParam (см. главу 29).

Построение «ножек» в случае позиционной линии-выноски аналогично построению «ножек» в случае обычной линии-выноски (см. главу 40).

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

GetpTextline() – возвращает интерфейс динамического массива строк. Сам массив задается интерфейсом ksDynamicArray (см. главу 22), а строки в

этом массиве интерфейсом ksChar255 (см. главу 22).

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

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

Построение позиционной линии-выноски

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

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

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

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

var

kompas: KompasObject; Document2D: ksDocument2D;

PosLeaderParam: ksPosLeaderParam;

DynamicArray1,DynamicArray2: ksDynamicArray; MathPointParam: ksMathPointParam;

Char255: ksChar255;

……………………………

Begin

……………………………

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

PosLeaderParam:=ksPosLeaderParam(kompas.GetParamStruct(ko_PosLeaderParam)); PosLeaderParam.arrowType:= 0; //без указателя

PosLeaderParam.dirX:=1;      //вправо

PosLeaderParam.dirY:=1;       //вверх PosLeaderParam.style:=0;     //стиль текста по умолчанию

//Координаты базовой точки PosLeaderParam.x:=110; PosLeaderParam.y:=110;

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

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

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

DynamicArray2.ksClearArray();

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

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

MathPointParam.y:=100;

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

DynamicArray2.ksAddArrayItem(-1,MathPointParam);

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

DynamicArray1.ksAddArrayItem(-1,DynamicArray2);

//Получаем массив строк

DynamicArray1 := ksDynamicArray(PosLeaderParam.GetpTextline()); DynamicArray1.ksClearArray();

//Получаем интерфейс строки Char255:=ksChar255(kompas.GetParamStruct(ko_Char255)); Char255.str:=’1′;

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

DynamicArray1.ksAddArrayItem(-1,Char255);

//Строим позиционную линию-выноску Document2D.ksPositionLeader(PosLeaderParam); kompas.Visible:=true;

end;

На рисунке ниже показан результат работы этой программы.

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

По теме:

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