Штрихування. Спосіб перший – КОМПАС в DELPHI

Побудова штрихування здійснюється в три етапи:

1)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Здійснюється ініціювання процесу побудови штрихування Для цього викликається метод ksHatch інтерфейсу ksDocument2D На цьому етапі визначаються основні параметри штрихування (стиль, крок, кут нахилу штрихових ліній)

2)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Позначаються кордону заштриховуєш області

3)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Здійснюється зупинка процесу побудови штрихування Для цього викликається метод 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(kompasGetParamStruct(ko_RectangleParam)) RectangleParamx:=100

RectangleParamy:=100 RectangleParamang:=0

RectangleParamheight:=10 RectangleParamwidth:=10 RectangleParamstyle:=1 Document2DksRectangle(RectangleParam, 0)

/ / Починаємо будувати штрихування

Document2DksHatch(15,45,1,0, 101, 101)

/ / Визначаємо область, яку потрібно заштрихувати

Document2DksRectangle(RectangleParam, 0)

/ / Зупиняємо побудова області

Document2DksEndObj()

kompasVisible:=true

end

На малюнку нижче представлений результат роботи цієї програми

Зверніть увагу, що в даній програмі ми двічі будуємо прямокутник Перший раз (до виклику методу ksHatch) ми будуємо сам прямокутник, який і будемо заштриховувати Другий раз (після виклику методу ksHatch) ми вказуємо його як заштриховуєш області, при цьому сам прямокутник не будується Тобто, якщо з програми прибрати перший виклик методу ksRectangle (саме він відповідальний за побудову прямокутника) те, на кінцевому кресленні ви побачите тільки штрихування А прямокутника на ньому не буде

Джерело: Норсеев Сергій, «розробка програм під КОМПАС У DELPHI»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*