Главная » Delphi, OLE, САПР » Штриховка. Способ второй – КОМПАС в DELPHI

0

 

Получение идентификатора замкнутого контура

В данном способе построения штриховки заштриховываемая область задается иначе. Здесь эта область должна реально существовать на чертеже, и она должна быть замкнута. Для получения числового идентификатора области используется метод ksMakeEncloseContours интерфейса ksDocument2D. Вот прототип этого метода:

ksMakeEncloseContours(

gr: Integer;        //Идентификатор группы

x: Double; y: Double //Координаты точки внутри контура

): Integer;

С параметрами x и y вопросов не возникает. Они задают координаты произвольной точки внутри замкнутого контура, идентификатор которого мы хотим получить. А вот назначение параметра gr не так очевидно.

Метод ksMakeEncloseContours возвращает числовой идентификатор не какого-то одного отдельно взятого геометрического объекта, а целой группы геометрических объектов, составляющих замкнутый контур. Параметр gr определяет числовой  идентификатор группы  геометрических объектов, подмножеством которой должны являться объекты группы, идентификатор

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

Если в этом параметре передается нуль, тогда система КОМПАС ничем не ограничивается в своем поиске объектов для замкнутого контура, кроме объектов, принадлежащих текущему виду.

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

Параметры штриховки (ksHatchParam)

Интерфейс ksHatchParam используется для задания параметров штриховки. Получить его можно с помощью метода GetParamStruct интерфейса KompasObject для этого в качестве единственного параметра ему нужно передать константу ko_HatchParam. Рассмотрим свойства этого интерфейса.

ang – угол наклон линий штриховки к горизонтали.

ksMakeEncloseContours интерфейса ksDocument2D.

сolor – цвет линий штриховки в формате BGR1. Цвет прдставляется в виде комбинации трех цветов синего, зеленого и красного. То есть значение этого свойства $0000FF дает красный цвет линий штриховок, $00FF00 – зеленый, $FF0000 – синий.

sheeting – согласно документации «тип угла штриховки». Но на практике игнорируется.

step – шаг штриховки. То есть минимальное расстояние между штриховыми линиями.

style – стиль штриховки. Обсуждался в предыдущей главе.

width – согласно документации «ширина полосы штриховки». Но на практике игнорируется.

x и y – согласно документации «координаты базовой точки штриховки». Но на практике игнорируется. По аналогии  с предыдущей главой мы, в качестве значений этих свойств будем указывать координаты произвольной точки, принадлежащей заштриховываемой области.

Метод у интерфейса ksHatchParam всего один – Init(). Данный метод не имеет входных параметров. Все что он делает – это обнуляет все свойства

данного интерфейса и, в случае успеха, возвращает значение true.

Построение штриховки

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

Пример

Ниже приводится исходный код программы, демонстрирующей построение штриховки данным метод.

var

kompas: KompasObject; Document2D: ksDocument2D;

RectangleParam: ksRectangleParam;

HatchParam: ksHatchParam; GroupID: integer;

…………………

Begin

…………………

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

RectangleParam:=ksRectangleParam(kompas.GetParamStruct(ko_RectangleParam)); RectangleParam.x:=100;

RectangleParam.y:=100;

1 Обратите внимание, BGR а не привычный RGB.

RectangleParam.ang:=0; RectangleParam.height:=10; RectangleParam.width:=10; RectangleParam.style:=1; Document2D.ksRectangle(RectangleParam, 0);

//Получаем идентификатор контура, который будем заштриховывать

GroupID:=Document2D.ksMakeEncloseContours(0,101,101);

//Получаем интерфейс параметров штриховки HatchParam:=ksHatchParam(kompas.GetParamStruct(ko_HatchParam)); HatchParam.ang := 45;

HatchParam.boundaries := GroupID;

HatchParam.color := $000000; //цвет линий – черный

HatchParam.sheeting:= 0; HatchParam.step:=1; HatchParam.style:=0; //металл HatchParam.width:=0; HatchParam.x:=101; HatchParam.y:=101;

//Строим саму штриховку

Document2D.ksHatchByParam(HatchParam); kompas.Visible:=true;

end;

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

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

Какой способ лучше

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

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

Но, если вам нужно заштриховать какую-то сложную область (состоящую, например, из нескольких десятков геометрических объектов) то

строить их минимум два раза (первый – само построение этих объектов и, второй – для задания области штриховки) нецелесообразно. В этом случае лучше подходит второй способ.

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

По теме:

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