Главная » Delphi, OLE, САПР » Пример 2. Горизонтальный размер с квалитетом и отклонениями – КОМПАС в DELPHI

0

Давайте изменим рассмотренную в прошлом разделе программу так, чтобы она выводила квалитет и отклонения проставляемого размера. В этом случае ее код примет вид:

var

kompas: KompasObject; Document2D: ksDocument2D; Char255: ksChar255; DynamicArray: ksDynamicArray; LDimParam: ksLDimParam;

DimDrawingParam: ksDimDrawingParam;

LDimSourceParam: ksLDimSourceParam;

DimTextParam: ksDimTextParam;

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

Begin

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

//Отрезок, длину которого мы будем проставлять в размере

Document2D.ksLineSeg(100, 100, 130, 100, 1);

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

LDimParam:=ksLDimParam(kompas.GetParamStruct(ko_LDimParam));

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

DimDrawingParam:=ksDimDrawingParam(LDimParam.GetDPar());

//Устанавливаем параметры отрисовки размера DimDrawingParam.ang:=0;    //Угол наклона ножки выносной полки DimDrawingParam.lenght:=0; //Длина ножки выносной полки DimDrawingParam.pl1:=false; //Отрисовывать первую выносную линию

DimDrawingParam.pl2:=false; //Отрисовывать вторую выносную линию DimDrawingParam.pt1:=1;    //У первой выносной линии стрелка внутри DimDrawingParam.pt2:=1;    //У второй выносной линии стрелка внутри DimDrawingParam.shelfDir:=0;//Выносной полки нет DimDrawingParam.textBase:=0;//Текст размещается в центре DimDrawingParam.textPos:=0; //Автоматическое размещение текста

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

LDimSourceParam:=ksLDimSourceParam(LDimParam.GetSPar());

//Устанавливаем параметры привязки линейного размера

LDimSourceParam.basePoint:=1; //Рисуем от первой точки ко второй

//Вектор направления размерной надписи

LDimSourceParam.dx:=0;

LDimSourceParam.dy:=10;

LDimSourceParam.ps:=0; //Размерная линия размещена горизонтально

//Координаты первой точки измеряемого отрезка

LDimSourceParam.x1:=100; LDimSourceParam.y1:=100;

//Координаты второй точки измеряемого отрезка

LDimSourceParam.x2:=130; LDimSourceParam.y2:=100;

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

DimTextParam:=ksDimTextParam(LDimParam.GetTPar);

//Устанавливаем параметры размерной надписи DimTextParam.bitFlag:=$10 or $20; //выводим квалитет и отклонения DimTextParam.sign:=0; //Значка нет

DimTextParam.stringFlag:=false;

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

Char255 := ksChar255(kompas.GetParamStruct(ko_Char255));

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

DynamicArray := ksDynamicArray(DimTextParam.GetTextArr()); DynamicArray.ksClearArray();

//Строка с номиналом

Char255.str:=’30′; DynamicArray.ksAddArrayItem(-1, Char255);

//Строка с квалитетом Char255.str:=’h6′; DynamicArray.ksAddArrayItem(-1, Char255);

//Строим сам размер Document2D.ksLinDimension(LDimParam); kompas.Visible:=true;

end;

Что мы изменили по сравнению с примером 1?

1)                                            Значение свойства bitFlag интерфейса ksDimTextParam теперь устанавливается равным не нулю (как в примере 1), а сочетанию флагов: $10 (_TOLERANCE) и $20 (_DEVIATION). Так как в заголовочном файле ksConstTLB эти константы не описаны, мы вынуждены задавать их вручную.

2)                                            Массив DynamicArray теперь состоит не из одной строки (как в примере 1), а из двух: строка с номиналом (как и в примере 1, «30») и строка с квалитетом («h6»).

В результате работы этой программы будет отрисован размер как на рисунке ниже:

Обращаю ваше внимание на то, что сами отклонения мы нигде не указываем. Система КОМПАС сама находит их, основываясь на размере отрезка (номинале) и квалитете. Если отклонения вам не нужны, то есть, если вы хотите проставлять  только размер и квалитет то все что, вам нужно сделать, это убрать флаг _DEVIATION ($20) из значения свойства bitFlag интерфейса ksDimTextParam.

Также на что следует обратить внимание, это то, что в обоих примерах мы сами определяли значение номинала. Если вы хотите возложить эту задачу на систему КОМПАС, то в свойстве bitFlag вам нужно установить

флаг _AUTONOMINAL ($1). Если добавить этот флаг в наш пример, то для правильного отображения размера необходимо изменить количество строк в массиве DynamicArray. В нем должна быть должна быть всего одна строка – задающая квалитет, больше в нем ничего не должно быть.

Если вы не хотите выводить квалитет, отклонения, единицу измерения и прочие «украшательства», но при этом задаете флаг _AUTONOMINAL, тогда массив DynamicArray должен быть пустым.

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

По теме:

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