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

0

 

Параметры линии-выноски для обозначения изменения (ksChangeLeaderParam)1

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

LeaderLength – определяет длину «ножек». Если значение данного свойства больше или равно нулю, то оно определяет фиксированную длину для всех «ножек». Если же значение этого свойства меньше нуля, то длина

«ножек» явно не определена. В этом случае каждая «ножка» строится по точкам, определенным в массиве «ножек» (о нем чуть ниже).

signHeight – высота или диаметр значка изменения.

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

Значение

Описание

Вид значка

0

квадрат

1

окружность

2

квадратные скобки

3

круглые скобки

1 Построение линии-выноски для обозначения изменения основано на интерфейсе ksChangeLeaderParam. Но, реализован данный интерфейс далеко не во всех версиях КОМПАСА. Например, в 8 версии КОМПАСа он не реализован. А в 11 и 13 версиях реализован. На счет версий 9 и 10 точно сказать не могу, так как их не было под рукой. Поэтому используйте данный интерфейс с осторожностью.


4

угловые скобки

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

x и y – координаты центра значка изменения.

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

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

Если значение свойства LeaderLength больше, либо равно нулю, длина каждой  «ножки»  жестко  фиксировано  значением  этого  свойства.  Длина

«ножки» измеряется от центра значка изменения. Если значение свойства LeaderLength меньше нуля, каждая «ножка» строится по точкам, заданным в массиве.

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

ksTextLineParam (см. главу 40).

Как показывает эксперимент, система КОМПАС игнорирует переданные вами строки и в качестве строки в значке изменения выводит последовательный номер данного объекта (1, 2, 3 и так далее). Однако так как в документации КОМПАС ничего не сказано про такое поведение системы, мы будем задавать строки в этом массиве.

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

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


Построение линии-выноски для обозначения изменения

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

Про возвращаемое методом значение в случае ошибки в документации ничего не сказано, но обычно это значение нуль.

Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D;

ChangeLeaderParam: ksChangeLeaderParam; DynamicArray1,DynamicArray2: ksDynamicArray; MathPointParam: ksMathPointParam;

TextLineParam: ksTextLineParam; TextItemParam: ksTextItemParam;

…………………………

Begin

…………………………

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

ChangeLeaderParam:=ksChangeLeaderParam(kompas.GetParamStruct(ko_ChangeLeaderParam)); ChangeLeaderParam.leaderLength:=-1; //"ножки" строятся по точкам ChangeLeaderParam.signHeight:=10; //диаметр значка ChangeLeaderParam.signType:=1; //значок в виде окружности

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

//Координаты точки центра значка изменения ChangeLeaderParam.x:=110; ChangeLeaderParam.y:=110;

//Получаем массив "ножек"

DynamicArray1:=ksDynamicArray(ChangeLeaderParam.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(ChangeLeaderParam.GetpTextline()); DynamicArray1.ksClearArray();

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

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

//Получаем массив компонентов строки DynamicArray2:=ksDynamicArray(TextLineParam.GetTextItemArr()); DynamicArray2.ksClearArray();

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

TextItemParam:=ksTextItemParam(kompas.GetParamStruct(ko_TextItemParam)); TextItemParam.type_:=0;  //Стиль текста по умолчанию TextItemParam.iSNumb:=0; //задаем строку

TextItemParam.s := ’35′; //Сама строка

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

DynamicArray2.ksAddArrayItem(-1,TextItemParam);

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

DynamicArray1.ksAddArrayItem(-1,TextLineParam);

//Строим линию-выноску обозначения изменений Document2D.ksChangeLeader(ChangeLeaderParam); kompas.Visible:=true;

end;

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

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

По теме:

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