Симетрія Постановка завдання – КОМПАС в DELPHI

Припустимо, нам потрібно виконати креслення валу:

Так, звичайно його можна побудувати з двох прямокутників або з 7 відрізків Але це аж ніяк не саме гарне рішення Набагато красивіше, як мені здається, спочатку побудувати верхню частину валу, а потім отримати нижню частину шляхом симетричного відображення верхній частині щодо осі

Як це зробити

На першому кроці нам потрібно створити групи обєктів (відрізків, дуг), над якими буде виконуватися симетричне відображення Дл створення групи використовується два методи інтерфейсу ksDocument2D ksNewGroup і ksEndObj З другим ми вже стикалися, коли говорили про криві Подивимося на прототип першого:

ksNewGroup(

type_: Smallint / / Тип групи

): Integer

Всього існує два типи групи: модельна (type_ = 0) і тимчасова (type_ = 1) Елементи тимчасової групи на відміну від елементів модельної групи не потрапляють на креслення і знищуються відразу після завершення

якоїсь програми (або компаса або нашого застосування) Ми будемо працювати виключно з модельними групами

У разі успіху даний метод повертає посилання на створену групу А в разі помилки нуль

Сам процес створення групи дуже схоже на опис точок для кривої Спочатку методом ksNewGroup запускається процес створення групи, після чого будуються елементи, що входять в цю групу, а наприкінці методом ksEndObj побудова групи зупиняється

Після того як ми створили групу обєктів, ми можемо приступити до самого симетричного відображенню Здійснюється це шляхом ksSymmetryObj інтерфейсу ksDocument2D Ось прототип цього методу:

ksSymmetryObj(

ref: Integer / / Посилання на групу обєктів x1: Double y1: Double / / перший точка осі симетрії x2: Double y2: Double / / 2-а точка осі симетрії const copy: WideString / / режим копіювання

): Integer

Тепер докладніше

ref – посилання на групу, обєкти якої будуть піддані симетричному відображенню

x1, y1, x2, y2 – координати двох точок прямої лінії, щодо якої буде виконуватися симетричне відображення

copy1 – визначає як слід вчинити з вихідними обєктами після відображення Якщо він дорівнює 0 , то вихідні обєкти будуть видалені, якщо ж він дорівнює 1 , то вихідні обєкти залишаться без зміни

У разі успіху даний метод повертає покажчик на отриману в результаті відображення групу обєктів, а в разі помилки нуль

На цьому теорія закінчується, і ми можемо перейти до практики Нижче наводиться фрагмент програми, що виконує побудову вала шляхом симетричного відображення

var

Document2D: ksDocument2D GroupID: integer

………

begin

………

/ / Створюємо нову групу обєктів

GroupID:=Document2DksNewGroup(0)

/ / Створюємо обєкти нової групи обєктів

Document2DksLineSeg(100, 100, 100, 120,1)

Document2DksLineSeg(100, 120, 120, 120, 1)

Document2DksLineSeg(120,120,120,100,1) Document2DksLineSeg(120,110,160,110,1)

1 Звертаю вашу увагу на те, що це параметр строкового типу

Document2DksLineSeg(160,110,160,100,1)

/ / Завершуємо побудова нової групи

Document2DksEndObj()

/ / Виконуємо симетричне відображення створеної групи обєктів

Document2DksSymmetryObj(GroupID,100,100,110,100,1)

………

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

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


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

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

Ваш отзыв

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

*

*