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

0

Параметры отрисовки диаметрального и радиального размеров (ksRDimDrawingParam)

Интерфейс ksRDimDrawingParam служит для задания параметров отрисовки диаметрального  и  радиального  размеров. Рассмотрим свойства этого интерфейса.

ang – угол наклона размерной линии;

pt1 – тип стрелки1 у первой концевой точки размерной линии; pt22 – тип стрелки у второй концевой точки размерной линии; shelfDir – наличие и ориентация выносной полки3;

textPos –  если строится размер с выносной полкой, тогда задает длину

«ножки» выносной полки. Если же размер строится без выносной полки, тогда это свойство определяет расположение текста размерной надписи: если нуль, то автоматическое расположение текста (обычно по середине), в противном случае задает расстояние между концевой точкой размерной линии и текстом размерной надписи.

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

Параметры привязки диаметрального и радиального размеров (ksRDimSourceParam)

Интерфейс ksRDimSourceParam служит для задания параметров привязки диаметрального и радиального размеров. Рассмотрим свойства этого интерфейса.

rad – радиус дуги (если мы проставляем радиальный размер) или окружности (если мы проставляем диаметральный размер).

xc, yc – координаты центра дуги или окружности, размер которой мы проставляем.

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

1      Смотри описание интерфейса ksDimDrawingParam в главе 22.

2      В том случае, если интерфейс ksRDimDrawingParam используется для простановки радиального размера, данное свойство игнорируется.

3      Про возможные значения данного свойства и их интерпретацию смотри описание интерфейса ksDimDrawingParam в главе 22 (тут все аналогично). Про особенности построения диаметрального размера с выносной полкой смотри пример в этой главе.


Параметры диаметрального размера (ksRDimParam)

Интерфейс ksRDimParam не имеет свойств, поэтому переходим сразу к его методам.

GetDPar() – возвращает интерфейс параметров отрисовки диаметрального и радиального размеров ksRDimDrawingParam.

GetSPar() – возвращает интерфейс параметров привязки диаметрального и радиального размеров ksRDimSourceParam.

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

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

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

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

Получить интерфейс ksRDimParam можно с помощью метода GetParamStruct интерфейса KompasObject для этого в качестве единственного параметра данному методу нужно передать константу ko_RDimParam.

Построение диаметрального размера

Для построения самого диаметрального размера нужно вызвать метод ksDiamDimension интерфейса ksDocument2D. В качестве единственного параметра данный метод принимает интерфейс ksRDimParam, который описывает диаметральный размер, который нужно построить.

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

Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D; RDimParam: ksRDimParam;

RDimDrawingParam: ksRDimDrawingParam;

RDimSourceParam: ksRDimSourceParam; DimTextParam: ksDimTextParam;

DynamicArray: ksDynamicArray;

………………………

Begin

………………………

//Строим окружность, диаметр которой будем измерять

Document2D.ksCircle(100,100,15,1);

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

RDimParam:=ksRDimParam(kompas.GetParamStruct(ko_RDimParam));

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

RDimDrawingParam:=ksRDimDrawingParam(RDimParam.GetDPar());

RDimDrawingParam.ang:=30; //Угол наклона размерной линии RDimDrawingParam.pt1:=1; //Первая стрелка изнутри RDimDrawingParam.pt2:=1; //Вторая стрелка изнутри RDimDrawingParam.shelfDir:=0; //Выносной полки нет RDimDrawingParam.textPos:=0;//Автоматическое размещение текста

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

RDimSourceParam := ksRDimSourceParam(RDimParam.GetSPar());

//Координаты центра измеряемой окружности RDimSourceParam.xc:=100; RDimSourceParam.yc:=100;

//Радиус измеряемой окружности

RDimSourceParam.rad:=15;

//Получаем интерфейс ksDimTextParam DimTextParam:=ksDimTextParam(RDimParam.GetTPar()); DimTextParam.bitFlag:=1;//Автоматическая простановка размера

DimTextParam.sign:=1;//Значок диаметра DimTextParam.stringFlag:=false; DimTextParam.style:=3;//Текст размерной надписи

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

DynamicArray:=ksDynamicArray(DimTextParam.GetTextArr());

DynamicArray.ksClearArray(); //Очищаем массив

//Строим диаметральный размер Document2D.ksDiamDimension(RDimParam); kompas.Visible:=true;

end;

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

Теперь поговорим о выносной полке. При построении диаметрального размера выносную полку нельзя расположить как угодно, как это в случае с линейным размером. В случае диаметрального размера выносная полка всегда располагается так, что ее «ножка» как бы  продолжает размерную линию.

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

1)                                Значение свойства shelfDir интерфейса ksRDimDrawingParam установим равное единице, что говорит о том, что у нас есть выносная полка и что она ориентирована вправо.

2)                                Значение свойства textPos того же интерфейса установим равным 10.

При значении свойства shelfDir отличном от нуля, данное значение интерпретируется как длина «ножки» выносной полки.

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

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

По теме:

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