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

0

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

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:=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:=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. В чем между ними различия? Если внимательно присмотреться то немного:

1)                                            Изменился измеряемый отрезок, точнее изменилась лишь одна его точка, вторая точка (с координатами [100;100]) осталась без изменения. Вслед за этим изменились значения свойств x2 и y2 интерфейса ksLDimSourceParam. Значения этих свойств определяют новые координаты второй точки измеряемого отрезка.

2)                                            Значение свойства ps интерфейса ksLDimSourceParam теперь равно единице, что говорит системе КОМПАС о том, что размерную надпись следует  располагать  вертикально  (в  случае  горизонтального  размера  мы

задавали значение этого свойства равным нулю).

3)                                            Изменились значения свойств dx и dy того же интерфейса. В примере 1 мы задавали значение свойства dy, а значение свойства dx приравнивали к нулю. Теперь же мы поступаем наоборот: dy = 0, а dx ≠ 0. Это связано с тем, что при изменении значения свойства ps интерфейса ksLDimSourceParam изменилась и интерпретация этих свойств1.

Вот и все, что нужно было изменить.

Обратите внимание на то, что при «трансформации» линейного размера из горизонтального в вертикальное, нам потребовалось изменить свойства всего одного интерфейса (ksLDimSourceParam). Все остальные интерфейсы остались без изменения.

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

1 Подробнее смотри в разделе «Параметры привязки линейного размера (ksLDimSourceParam)» этой главы

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

По теме:

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