Главная » Delphi, OLE, САПР » Обозначение допуска формы и расположения поверхностей – КОМПАС в DELPHI

0

Параметры «ножки» обозначения допуска формы и расположения поверхностей (ksToleranceBranch)

Интерфейс   ksToleranceBranch   служит   для   описания   параметров

«ножки» (опоры) обозначения допуска формы и расположения. Получить этот интерфейс можно с помощью метода GetParamStruct интерфейса KompasObject. Для этого в качестве единственного параметра данному методу нужно передать значение константы ko_ToleranceBranch. Рассмотрим свойства интерфейса ksToleranceBranch.

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

Значение

Описание

Внешний вид

0

«ножки» нет

1

«ножка» в виде треугольника

2

«ножка» в виде стрелки

tCorner – обозначает расположение точки пересечения «ножки» со знаком обозначения допуска формы и расположения. Возможные значения данного свойства представлены на рисунке ниже (взят из документации КОМПАС).

Что такое базовая точка будет объяснено позже.

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

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

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

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

Параметры обозначения допуска формы и расположения поверхностей (ksToleranceParam)

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

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

tBase – определяет положение базовой точки. Возможные значения данного свойства идентичны возможным значениям свойства tCorner интерфейса ksToleranceBranch (см. выше). Базовая точка – это точка, от которой начинается построение обозначения допуска формы и расположения поверхностей. Фактически свойство tBase определяет ориентацию обозначения допуска формы и расположения поверхностей относительно базовой точки.

type_1 – ориентация обозначения допуска форы и расположения поверхностей. Если значение этого свойства равно нулю, тогда обозначение располагается горизонтально. Если же значение этого свойства равно единице, тогда обозначение располагается вертикально. Других возможных значений этого свойства не предусмотрено.

x и y – координаты базовой точки.

Теперь рассмотрим методы интерфейса ksToleranceParam. GetBranchArr() – возвращает интерфейс массива ksDynamicArray (см.

главу   22)   «ножек».   Каждая   «ножка»   в   этом   массиве   описывается интерфейсом ksToleranceBranch (см. выше).

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

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

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

Обозначение допуска формы и расположения поверхностей представляет собой таблицу размером 10 на 10. Каждая ячейка в этой таблице имеет свой уникальный номер. Нумерация ячеек представлена на рисунке ниже.

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

Полное построение обозначения допуска формы и расположения поверхностей состоит из трех этапов: 1) построение пустого обозначения и начало заполнения таблицы; 2) заполнение таблицы; 3) явное завершение заполнения таблицы. Рассмотрим эти этапы более подробно.

Построение пустого обозначения и начало заполнения таблицы осуществляется методом ksTolerance интерфейса ksDocument2D. Данный метод в качестве единственного параметра принимает интерфейс параметров обозначения допуска формы и расположения поверхностей ksToleranceParam (см. выше).

Согласно документации метод ksTolerance в случае успеха возвращает числовой идентификатор построенного обозначения. На самом же деле, как показывает эксперимент, данный метод, в случае успеха возвращает единицу, а в случае ошибки – значение нуль.

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

поверхностей. Пример такого «пустого» обозначения представлен на рисунке ниже.

Теперь о том, как заполнить таблицу. Для этого используется два метода интерфейса ksDocument2D: ksColumnNumber и ksTextLine.

Первый (ksColumnNumber) служит для изменения текущей ячейки. Он

аналогичен одноименному методу интерфейса ksStamp, который мы рассматривали в главе 5. В качестве единственного параметра он принимает номер ячейки, которую следует сделать текущей.

Второй метод (ksTextLine) мы рассматривали в главе 45. Он служит для вывода строки в текущую ячейку таблицы.

После того, как таблица заполнена (заполнять ее полностью совсем не необязательно, да и не нужно) мы должны явным образом остановить ее редактирование.

Для этого используется метод ksEndObj() интерфейса ksDocument2D. Данный метод не имеет входных параметров. Именно этот метод, в случае упеха,  и  возвращает  числовой  идентификатор  построенного  обозначения

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

Теперь посмотрим как это все выглядит на практике.


Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D;

ToleranceParam: ksToleranceParam;

DynamicArray1, DynamicArray2: ksDynamicArray; ToleranceBranch: ksToleranceBranch; MathPointParam: ksMathPointParam;

TextItemParam: ksTextitemParam;

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

Begin

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

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

ToleranceParam:=ksToleranceParam(kompas.GetParamStruct(ko_ToleranceParam)); ToleranceParam.style:=0;//Стиль текста ToleranceParam.tBase:=1;//Положение базовой точки ToleranceParam.type_:=0;//Горизонтально

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

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

DynamicArray1:=ksDynamicArray(ToleranceParam.GetBranchArr());

DynamicArray1.ksClearArray();

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

ToleranceBranch:=ksToleranceBranch(kompas.GetParamStruct(ko_ToleranceBranch)); ToleranceBranch.arrowType:=2;//"ножка" в виде стрелки

//Расположение точки пересечения "ножки" и обозначения допуска

ToleranceBranch.tCorner:=1;

//Получаем массив точек "ножки" DynamicArray2:=ksDynamicArray(ToleranceBranch.GetpMathPoint()); DynamicArray2.ksClearArray();

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

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

MathPointParam.y:=100;

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

DynamicArray2.ksAddArrayItem(-1,MathPointParam);

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

DynamicArray1.ksAddArrayItem(-1,ToleranceBranch);

//Запускаем построение обозначения допуска формы и расположения

Document2D.ksTolerance(ToleranceParam);

//Заполнение таблицы обозначения допуска формы и расположения

TextItemParam:=ksTextItemParam(kompas.GetParamStruct(ko_TextItemParam)); TextItemParam.type_:=17; //SPECIAL_SYMBOL

TextItemParam.iSNumb:= 71;//Перпендикулярность TextItemParam.s:=”;

//Заполняем ячейку № 1

Document2D.ksColumnNumber(1); Document2D.ksTextLine(TextItemParam); TextItemParam.type_:=0; TextItemParam.iSNumb:=0;

//Запоняем ячейку № 2

TextItemParam.s := ‘0.04’; Document2D.ksColumnNumber(2); Document2D.ksTextLine(TextItemParam);

//Заполняем ячейку № 3 TextItemParam.s := ‘А'; Document2D.ksColumnNumber(3);

Document2D.ksTextLine(TextItemParam);

//Закрываем таблицу Document2D.ksEndObj(); kompas.Visible:=true;

end;

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

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

По теме:

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