Главная » Delphi, OLE, САПР » Угловой размер – КОМПАС в DELPHI

0

 

Параметры привязки углового размера (ksADimSourceParam)

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

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

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

x2, y2 – координаты точки начала второй выносной линии. Для того чтобы было более понятно, что это за точки такие взгляните на рисунок ниже (эти точки обведены в кружки).

ang1 – угол наклона к горизонтали первой выносной линии.

ang2 – угол наклона к горизонтали второй выносной линии.

dir – направление отрисовки размерной дуги. Если значение этого свойства равно единице, то размерная дуга отрисовывается против часовой стрелки. Если же значение этого свойства равно -1 (минус единице), тогда размерная дуга отрисовывается по часовой стрелке.

rad – радиус размерной дуги.

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


Параметры углового размера (ksADimParam)

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

Свойств у интерфейса ksADimParam нет, поэтому рассмотрим его методы.

GetDPar() – возвращает интерфейс параметров отрисовки размера ksDimDrawingParam. Этот интерфейс мы подробно рассматривали в главе 22, когда говорили о простом линейном размере.

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

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

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

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

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

Построение углового размера

Для непосредственного построения углового размера используется метод ksAngDimension интерфейса ksDocument2D. В качестве единственного параметра этому методу передается интерфейс параметров углового размера ksADimParam.

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

Пример

Напишем небольшую программу, осуществляющую простановку углового размера. Ее код с комментариями приведен ниже.

var

kompas: KompasObject; Document2D: ksDocument2D; ADimParam: ksADimParam;

DimDrawingParam: ksDimDrawingParam; ADimSourceParam: ksADimSourceParam; DynamicArray: ksDynamicArray;

DimTextParam: ksDimTextParam;

……………………………

Begin

……………………………

//Строим первый отрезок, образующий угол, который мы будем измерять

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

//Строим второй отрезок, образующий угол, который мы будем измерять

Document2D.ksLineSeg(100, 100, 120,100+trunc(20*tan(pi/3)) , 1);

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

ADimParam:=ksADimParam(kompas.GetParamStruct(ko_ADimParam));

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

DimDrawingParam:=ksDimDrawingParam(ADimParam.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;//Автоматическое размещение текста

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

ADimSourceParam:=ksADimSourceParam(ADimParam.GetSPar());

//Координаты центра размерной дуги ADimSourceParam.xc:=100; ADimSourceParam.yc:=100;

//Координаты точки первой выносной линии ADimSourceParam.x1:=100; ADimSourceParam.y1:=100;

//Координаты точки второй выносной линии

ADimSourceParam.x2:=100;

ADimSourceParam.y2:=100;

//Начальный и конечный угол размерной дуги ADimSourceParam.ang1:=0; ADimSourceParam.ang2:=60; ADimSourceParam.dir:=1; //против часовой стрелки

ADimSourceParam.rad:= 15;//радиус размерной дуги

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

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

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

//Строим сам угловой размер Document2D.ksAngDimension(ADimParam); kompas.Visible:=true;

end;

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

Обратите внимание на то, что в этом примере мы впервые применили автоматическую простановку размера системой КОМПАС. Для этого в свойстве    bitFlag    интерфейса    ksDimTextParam    мы    установили    флаг

_AUTONOMINAL(1). При работе с угловым размером это скорее вынужденная необходимость, чем демонстрация существующей возможности.

Дело в том, что при прямом указании номинала система КОМПАС не указывает единицу измерения, в результате получается угловой размер как на рисунке ниже (без значка градуса).

Если же попытаться прямым текстом передать этот значок. Либо прямо указать его в строке с номиналом, либо в отдельной строке с единицей измерения (для этого надо будет установить флаг _UNIT в свойстве bitFlag). То тогда система КОМПАС не сможет правильно отобразить его и получится размер как на рисунке ниже.

Скорее  всего,  данная  проблема  вызвана  различными  кодировками символов между Delphi и КОМПАС.

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

По теме:

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