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

0

 

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

var

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

DimDrawingParam: ksDimDrawingParam;

LDimSourceParam: ksLDimSourceParam;

DimTextParam: ksDimTextParam;

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

Begin

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

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

Document2D.ksLineSeg(100, 100, 120, 130, 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:=2;//Размерная линия размещена параллельно отрезку

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

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

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

LDimSourceParam.x2:=120;

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)                                            Установить значение свойства ps интерфейса ksLDimSourceParam равным 2, что говорит системе КОМПАС о том, что размерную линию следует располагать параллельно измеряемому отрезку.

2)                                            Задали значение свойства dy1 того же интерфейса, которое определило размер и ориентацию выносных линий.

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

1 Вы в своих можете задавать значения свойства dx или обоих сразу. При ps=2 данные свойства определяют лишь направление отрисовки выносных линий (вверх или вниз, вправо или влево от измеряемого отрезка) и их длину, но никак не их строгую ориентацию на плоскости. Поэтому размерная линия всегда остается параллельной измеряемому отрезку, а выносные линии  перпендикулярными ему.

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

По теме:

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