Главная » Delphi, OLE, САПР » Линия разреза/сечения – КОМПАС в DELPHI

0

Параметры линии разреза/сечения (ksCutLineParam)

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

right – определяет направление стрелок в обозначении линии разреза/сечения. Принимает одно из двух допустимых значений: либо нуль, либо единица.

str – строка с текстом в обозначении линии разреза/сечения. Как показывает опыт, значение этого свойства игнорируется и система КОМПАС сама проставляет обозначение линии в порядке А, Б, В, Г и так далее.

style – номер системного стиля текста. Допустимые номера системных

стилей текстов приводились в главе 22. Здесь лишь напомню, что для линии разреза/сечения предусмотрен системный стиль текста с номером 11.

type_1 – определяет способ задания текстового обозначения. Если значение этого свойства равно нулю, то текстовое обозначение задается в виде значения свойства str. Если же значение это свойства (type_) равно единице, то текстовое обозначение задается в виде массива строк. Мы будем задавать обозначение через значение свойства str. Задание текстового обозначения в виде массива строк мы рассматривать не будем.

x1,y1 и x2,y2 – согласно документации задают расположение текстовых обозначений у линии разреза/сечения. На практике же система КОМПАС игнорирует значения этих полей и сама определяет расположение соответствующих текстовых обозначений.

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

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

Сам массив описывается интерфейсом ksDynamicArray (его мы рассматривали в главе 22). Элементами массива являются интерфейсы параметров математической точки ksMathPointParam (его мы рассматривали в главе 29).

SetpMathPoint - устанавливает новый массив точек линии разреза/сечения. Интерфейс устанавливаемого массива точек принимается в

1 В документации данное свойство описывается как type (без знака пордчеркивания на конце). Однако в заголовочных файлах оно преставлено как type_ (со знаком подчеркивания на конце).

качестве единственного параметра. В случае успеха метод возвращает значение TRUE.

GetpTextline()  –   возвращает  интерфейс  массива  строк   текстового обозначения  линии  разреза/сечения.  Данный  массив  строк  используется,

когда значение свойства type_ равно 1. Мы данную возможность рассматривать не будем. Замечу лишь, что сам массив строк описывается интерфейсом ksDynamicArray (см. главу 22), а строки – элементы этого массива интерфейсом ksTextItemParam.

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

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

Построение линии разреза/сечения

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

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

Пример 1. Простой разрез/сечение

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

var

kompas: KompasObject; Document2D: ksDocument2D; CutLineParam: ksCutLineParam; DynamicArray: ksDynamicArray;

MathPointParam: ksMathPointParam;

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

Begin

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

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

CutLineParam:=ksCutLineParam(kompas.GetParamStruct(ko_CutLineParam));

CutLineParam.right:=1;   //направление стрелок

CutLineParam.str := ‘А'; CutLineParam.style := 11; //стиль текста

CutLineParam.type_ := 0; //текст в виде одной строки

CutLineParam.x1 := 90;

CutLineParam.y1 := 90;

CutLineParam.x2 := 135;

CutLineParam.y2 := 90;

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

DynamicArray:=ksDynamicArray(CutLineParam.GetpMathPoint());

DynamicArray.ksClearArray();

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

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

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

MathPointParam.x := 100;

MathPointParam.y := 100; DynamicArray.ksAddArrayItem(-1,MathPointParam);

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

MathPointParam.x := 130;

MathPointParam.y := 100; DynamicArray.ksAddArrayItem(-1,MathPointParam);

//Строим линию разреза/сечения

Document2D.ksCutLine(CutLineParam); kompas.Visible:=true;

end;

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

Пример 2. Сложный разрез/сечение

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

var

kompas: KompasObject; Document2D: ksDocument2D; CutLineParam: ksCutLineParam; DynamicArray: ksDynamicArray;

MathPointParam: ksMathPointParam;

……………………………

Begin

……………………………

//Получаем интерфейс параметров линии разреза/сечения CutLineParam:=ksCutLineParam(kompas.GetParamStruct(ko_CutLineParam)); CutLineParam.right:=1;    //направление стрелок

CutLineParam.str := ‘А'; CutLineParam.style := 11; //стиль текста

CutLineParam.type_ := 0; //текст в виде одной строки

CutLineParam.x1 := 90;

CutLineParam.y1 := 90;

CutLineParam.x2 := 135;

CutLineParam.y2 := 90;

//Получаем интерфейс массива точек DynamicArray:=ksDynamicArray(CutLineParam.GetpMathPoint()); DynamicArray.ksClearArray();

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

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

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

MathPointParam.x := 100;

MathPointParam.y := 100; DynamicArray.ksAddArrayItem(-1,MathPointParam);

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

MathPointParam.x := 115;

MathPointParam.y := 100; DynamicArray.ksAddArrayItem(-1,MathPointParam);

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

MathPointParam.x := 115;

MathPointParam.y := 130;

DynamicArray.ksAddArrayItem(-1,MathPointParam);

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

MathPointParam.x := 130;

MathPointParam.y := 130; DynamicArray.ksAddArrayItem(-1,MathPointParam);

//Строим линию разреза/сечения Document2D.ksCutLine(CutLineParam); kompas.Visible:=true;

end;

Что мы изменили по сравнению с предыдущим примером. На самом деле изменилось только одно – количество точек в массиве точек. На рисунке ниже показан результат работы этой программы.

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

По теме:

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