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

0

 

При простановке больших размеров часто прибегают к такой хитрости: вместо того, чтобы ставить весь размер обозначают только одну из его крайних частей, а вторую опускают. Такой  размер называют размером с обрывом, на рисунке ниже представлен пример такого размера:

Вообще-то в системе КОМПАС для таких размеров предусмотрены отдельные интерфейсы, и мы их подробно рассмотрим в следующей главе. Но это не значит, что данный размер нельзя поставить с помощью интерфейсов, обсуждавшихся в этой главе. Можно. Как?

Ниже приводится код программы (основанный на примере 4 данной главы) реализующей простановку такого размера.

var

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

LDimParam: ksLDimParam; DimDrawingParam: ksDimDrawingParam; LDimSourceParam: ksLDimSourceParam; DimTextParam: ksDimTextParam

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

Begin

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

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

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

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

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

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

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

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

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

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

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

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

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

//Вектор направления размерной надписи LDimSourceParam.dx:=10; LDimSourceParam.dy:=0;

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

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

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

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

LDimSourceParam.x2:=100;

LDimSourceParam.y2:=130;

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

DimTextParam:=ksDimTextParam(LDimParam.GetTPar);

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

DimTextParam.bitFlag:=0; //выводим только номинал

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);

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

end;

Что мы изменили? Вот что:

1)                                            Свойству pl1 интерфейса ksDimDrawingParam присвоено значение true, которое говорит системе КОМПАС, что отрисовывать первую выносную линию не надо.

2)                                            Свойству pt1 интерфейса ksDimDrawingParam присвоено значение 0, которое говорит о том, что у первой выносной линии стрелки нет.

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

в линейный размер с обрывом.

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

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

По теме:

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