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

0

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

Построение штриховки осуществляется в три этапа:

1)                                               Осуществляется инициация процесса построения штриховки. Для этого вызывается метод ksHatch интерфейса ksDocument2D. На этом этапе определяются основные параметры штриховки (стиль, шаг, угол наклона штриховых линий).

2)                                               Обозначаются границы заштриховываемой области.

3)                                               Осуществляется остановка процесса построения штриховки. Для этого вызывается метод ksEndObj() интерфейса ksDocument2D.

Рассмотрим эти этапы более подробно.

Вначале вызывается метод ksHatch интерфейса ksDocument2D. Этим самым говорим системе КОМПАС, что начинаем строить заштрихованную область. Ниже приводится прототип этого метода:

ksHatch(

style: Integer; //Стиль штриховки

angle: Double; //Угол наклона штриховых линий к горизонтали

step: Double;  //Шаг штриховых линий

width: Double; x0: Double;

y0: Double

): Integer;

В таблице ниже представлены допустимые стили штриховки с их описаниями.

Номер стиля

Материал

Изображение

0

металл

1

неметалл

2

дерево

3

камень естественный

4

керамика

5

бетон

6

стекло

7

жидкость

8

естественный грунт

9

насыпной грунт

10

камень искусственный

11

железобетон

12

напряженный железобетон

13

дерево в продольном сечении

14

песок

С параметрами angle и step думаю все ясно. Это угол наклона штриховых линий к горизонтали и шаг штриховки (то есть расстояние между ближайшими параллельными штриховыми линиями) соответственно. А вот с последними тремя параметрами не все так ясно и просто.

В документации КОМПАС про параметр width сказано буквально следующее: «ширина полосы штрихования вдоль границы штриховки». То есть, получается, что он определяет – на какое расстояние по горизонтали нужно штриховать. Однако все мои попытки добиться какой-либо реакции системы КОМПАС на значение этого параметра не увенчались успехом (вне зависимости от того какая область заштриховывалась: замкнутая или незамкнутая). Поэтому о точном назначении этого параметра остается только гадать.

Параметры x0 и y0 согласно той же документации представляют собой

«координаты начальной точки штриховки». Однако, как и в случае с параметром width мне так и не удалось добиться какой-либо реакции системы КОМПАС на изменение значения этого параметра. Поэтому сказать точно, зачем нужны эти два параметра я не могу. В нашем примере в следующем разделе мы будем указывать в них координаты произвольной точки, лежащей внутри заштриховываемой области.

Метод ksHatch в случае успеха возвращает значение 1 (единица), а в случае ошибки – нуль.

После того  как мы вызовом метода ksHatch инициировали процесс построения штриховки, мы должны определить саму заштриховываемую область. Делается путем вызова методов интерфейса ksDocument2D, ответственных за обычные геометрические построения.

То есть, если вы после вызова метода ksHatch построите, например, три отрезка, то система КОМПАС проинтерпретирует их как границы области, которую вы хотите заштриховать. При этом сами отрезки построены не будут.

Для остановки процесса построения области нужно вызвать метод ksEndObj() интерфейса ksDocument2D. Данный интерфейс не имеет входных параметров. Все, что он делает – это говорит системе КОМПАС о том, что вы построили нужную вам область. Только после этого система КОМПАС заштрихует указанную вами область в соответствии с теми параметрами, которые вы ей указали при вызове метода ksHatch.

Метод ksEndObj() возвращает числовой идентификатор построенной штриховки, или нуль (в случае ошибки).

Теперь по поводу замкнутости области. В документации КОМПАС нигде явно не указано должна область для штриховки быть замкнутой или нет. Однако, как показывает практика работы в этой системе, ее поведение в случае попытки заштриховать незамкнутую область является трудно предсказуемым.  Поэтому  лучше  работать  с  замкнутыми  областями.  Тем

более что практически на всех реальных чертежах заштриховываются именно замкнутые области.


Пример

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

var

kompas: KompasObject; Document2D: ksDocument2D;

RectangleParam: ksRectangleParam;

……………………

Begin

……………………

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

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

RectangleParam.y:=100; RectangleParam.ang:=0;

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

//Начинаем строить штриховку

Document2D.ksHatch(15,45,1,0, 101, 101);

//Определяем область, которую нужно заштриховать

Document2D.ksRectangle(RectangleParam, 0);

//Останавливаем построение области

Document2D.ksEndObj();

kompas.Visible:=true;

end;

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

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

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

По теме:

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