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

0

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

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

arrowType – тип указателя на «ножке». Данное свойство аналогично свойству arrowType интерфейса ksLeaderParam (см. главу 40).

cText0 – количество строк в знаке маркировки (не более одной строки). cText1 – количество строк над «ножкой» (не более одной строки). cText2 – количество строк под «ножкой» (не более одной строки).

style1 – номер системного стиля текста в знаке маркировки. Допустимые системные стили текста и их номера приводились в главе 22. Для знака маркировки не предусмотрено отдельного системного стиля текста. Поэтому мы будем указывать значение 0 (использовать стиль текста по умолчанию для данного объекта).

style2 – номер системного стиля текста для строк у «ножки». Здесь допустимо использовать либо значение 7 (стиль текста на ответвлении линии-выноски), либо значение 0 (стиль текста по умолчанию для данного объекта).

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

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

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

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

GetpTextline() – возвращает интерфейс массива (ksDynamicArray) строк (ksChar255, см. главу 22). Количество строк зависит от значения свойств cText0, cText1 и cText2. Строки идут в таком порядке: строка в знаке маркировки  (если  есть),  строка  над  «ножкой»  (если  есть),  строка  под

«ножкой» (если есть).

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

1 Как вы увидите из описания этого интерфейса он полностью аналогичен интерфейсу ksBrandLeaderParam, обсуждавшемуся в предыдущей главе.

Init() – инициализирует нулями значения свойств интерфейса, а также пересоздает массив «ножек» и строк. В случае успеха возвращает значение TRUE.

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

Для построения линии-выноски для обозначения маркировки используется метод ksMarkerLeader интерфейса ksDocumnet2D. В качестве единственного параметра данный метод принимает интерфейс ksMarkerLeaderParam.

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

Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D;

MarkerLeaderParam: ksMarkerLeaderParam; DynamicArray1, DynamicArray2: ksDynamicArray; MathPointParam: ksMathPointParam;

Char255: ksChar255;

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

Begin

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

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

MarkerLeaderParam:=ksMarkerLeaderParam(kompas.GetParamStruct(ko_MarkerLeaderParam)); MarkerLeaderParam.arrowType:=0; //без указателя

MarkerLeaderParam.cText0  := 1;//количество строк в знаке маркировки MarkerLeaderParam.cText1  := 1;//количество строк над "ножкой" MarkerLeaderParam.cText2  := 0;//количество строк под "ножкой" MarkerLeaderParam.style1  := 0;//стиль текста в знаке маркировки MarkerLeaderParam.style2  := 7;//стиль текста у "ножки"

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

MarkerLeaderParam.x := 120;

MarkerLeaderParam.y := 120;

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

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

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

//Добавляем строку в массив строк DynamicArray1.ksAddArrayItem(-1, Char255); Char255.str:=’НУ';

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

DynamicArray1.ksAddArrayItem(-1, Char255);

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

end;

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

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

По теме:

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