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

0

Параметры отрисовки размера с обрывом (ksBreakDimDrawing)

Параметры отрисовки размера c обрывом описываются с помощью интерфейса ksBreakDimDrawing. Это интерфейс очень похож на рассмотренный в прошлой главе интерфейс ksDimDrawingParam. Рассмотрим свойства ksBreakDimDrawing.

angle – угол наклона «ножки» выносной полки.

length – длина «ножки» выносной полки.

pl – нужно ли отрисовывать выносную линию. Если значение данного свойства равно true, то выносная линия не отрисовывается. Если же оно равно false, то отрисовывается.

pt – тип стрелки у выносной линии. Аналогичен свойствам pt1 и pt2 интерфейса ksDimDrawingParam.

shelfDir – аналогичен одноименному свойству ksDimDrawingParam.

textPos – положение текста. Если значение этого свойства равно нуль, то размер размещается автоматически, в противном случае он задает расстояние между выносной линией и размерной надписью.

Метод у данного интерфейса всего один Init(). Он обнуляет все свойства данного интерфейса и, в случае успеха, возвращает значение true.

Как видите интерфейс ksBreakDimDrawing очень похож на рассмотренный ранее ksDimDrawingParam. Единственная разница между ними в том, что первый задает параметры отображения всего одной выносной линии, а второй – двух. Это и понятно: ведь в размере с обрывом она всего одна, а в обычном линейном размере их две.

Параметры привязки линейного размера с обрывом (ksLBreakDimSource)

Интерфейс KsLBreakDimSource определяет параметры расположения и ориентации размера. Рассмотрим его свойства.

x1, y1 – координаты точки измеряемого отрезка, от которой строится выносная линия размера.

x2, y2 – координаты первой точки мнимой прямой, по которой строится размерная линия.

x3, y3 – координаты второй точки мнимой прямой, по которой строится размерная линия.

Теперь подробнее. Выносная линия строится от точки (x1;y1) перпендикулярно воображаемой прямой, проходящей через точки (x2;y2) и (x3;y3). Сама размерная линия строится перпендикулярно выносной линии так, что размерная линия принадлежит воображаемой прямой, проходящей через точки (x2;y2) и (x3;y3). Размерная линия ориентируется от точки (x3;y3) к точке (x2;y2). Для большей ясности на рисунке ниже представлены

все три точки (они отмечены кружочками и подписаны соответствующими номерами) и линейный размер с обрывом, построенный на их основе.

Метод у данного интерфейса всего один Init(). Он сбрасывает в нуль все свойства данного интерфейса и в случае успеха возвращает значение нуль.

Обращаю ваше внимание на то, что с помощью интерфейса KsLBreakDimSource вы можете задавать размеры выносной линии и ориентацию размерной линии, но определять размеры последней – нет. Система КОМПАС делает это сама.

Параметры линейного размера с обрывом (ksLBreakDimParam)

Проучить интерфейс ksLBreakDimParam можно с помощью метода GetParamStruct интерфейса KompasObject, для этого в качестве единственного параметра данному методу нужно передать значение ko_LBreakDimParam. Свойств у данного интерфейса (ksLBreakDimParam) нет, поэтому сразу переходим к рассмотрению его методов.

GetDPar() – возвращает интерфейс параметров отрисовки ksBreakDimDrawing.

GetSPar() – возвращает интерфейс  параметров привязки размера ksLBreakDimSource.

GetTPer() – возвращает интерфейс параметров размерной надписи ksDimTextParam (подробно рассматривался в предыдущей главе).

SetDpar – устанавливает новый интерфейс ksBreakDimDrawing, передаваемый ему в качестве  единственного параметра. В случае успеха возвращает значение True.

SetSPar - устанавливает новый интерфейс ksLBreakDimSource, передаваемый ему в качестве  единственного параметра. В случае успеха возвращает значение True.

SetTPar        -    устанавливает    новый    интерфейс    ksDimTextParam,

передаваемый ему в  качестве единственного параметра.  В  случае  успеха возвращает значение True.

Построение линейного размера с обрывом

Для непосредственного построения линейного размера с обрывом используется метод ksLinBreakDimension интерфейса ksDocument2D. В качестве единственного параметра данный метод принимает интерфейс ksLBreakDimParam.

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

Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D;

LBreakDimParam: ksLBreakDimParam; BreakDimDrawing: ksBreakDimDrawing; LBreakDimSource: ksLBreakDimSource; Char255: ksChar255;

DynamicArray: ksDynamicArray;

DimTextParam: ksDimTextParam;

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

Begin

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

//Строим отрезок, размер к которому мы будем ставить

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

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

LBreakDimParam:=ksLBreakDimParam(kompas.GetParamStruct(ko_LBreakDimParam));

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

BreakDimDrawing:=ksBreakDimDrawing(LBreakDimParam.GetDPar()); BreakDimDrawing.angle:=0;//угол наклона "ножки" выносной полки BreakDimDrawing.length:=0;//длина "ножки" выносной полки BreakDimDrawing.pl:=false;//Отрисовываем выносную линию BreakDimDrawing.pt:=1; //стрелка изнутри BreakDimDrawing.shelfDir:=0;//выносной полки у нас нет BreakDimDrawing.textPos:=0;//Автоматическое размещение текста

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

LBreakDimSource:=ksLBreakDimSource(LBreakDimParam.GetSPar());

//Точка отрезка от которой будем строить выносную линию

LBreakDimSource.x1:=100; LBreakDimSource.y1:=100;

//Первая точка прямой размерной линии LBreakDimSource.x2:=100; LBreakDimSource.y2:=110;

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

LBreakDimSource.x3:=120; LBreakDimSource.y3:=110;

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

DimTextParam:=ksDimTextParam(LBreakDimParam.GetTPar()); DimTextParam.bitFlag:=0;//Выводим только номинал DimTextParam.sign:=0;//Значка нет DimTextParam.stringFlag:=false; DimTextParam.style:=3;//Текст размерной надписи

//Получаем интерфейс ksDynamicArray DynamicArray:=ksDynamicArray(DimTextParam.GetTextArr()); DynamicArray.ksClearArray(); //Очищаем массив

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

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

Char255.str:=’20′; //Строка с номиналом

//Добавляем строку с номиналом в массив

DynamicArray.ksAddArrayItem(-1, Char255);

//Строим сам размер с обрывом

Document2D.ksLinBreakDimension(LBreakDimParam);

kompas.Visible:=true;

end;

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

В этой программе мы строим горизонтальный размер. Если вам нужен вертикальный или произвольно наклоненный размер, то все, что вам нужно это должным образом изменить значения свойств x2, y2, x3 и y3 интерфейса ksLBreakDimSource.

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

По теме:

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