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

0

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

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:=2;    //У первой выносной линии стрелка снаружи DimDrawingParam.pt2:=2;    //У второй выносной линии стрелка снаружи 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:=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? Реально мы изменили только значения свойств pt1 и pt2 интерфейса ksDimDrawingParam. В примере 1 они принимали значение 1, что говорило о том, что стрелки в соответствующих точках расположены внутри. Теперь же мы присваиваем им значение 2, которое говорит о том, что стрелки в соответствующих точках расположены снаружи. Как видите: все до не приличия просто. Результат работы этой программы представлен на рисунке ниже.

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

По теме:

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