Побудова дуги кола дотичної до двом прямим Постановка завдання – КОМПАС в 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 вдатися до геометричних розрахунками і вручну обчислити параметри сопрягающей дуги

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 покласти всі геометричні розрахунки на систему КОМПАС і побудувати дугу кола по розрахованим нею параметрам

У цьому розділі ми обговоримо другий варіант вирішення даної задачі

Для вирішення поставленого завдання нам потрібно спочатку познайомитися з інтерфейсом ksCON Даний інтерфейс описує параметри дуг кіл сполучають дві прямих

Отримати його можна за допомогою методу GetParamStruct інтерфейсу

KompasObject Для цього потрібно цьому методу як параметр передати значення ko_CON

Властивостей у інтерфейсу ksCON немає, у нього є тільки методи Самі методи дуже схожі між собою: вони всі, крім одного, беруть всього один параметр – індекс сопрягающей дуги кола (про те, що це таке трохи нижче) Ось ці самі методи:

GetXc, GetYc – повертають координати центру сопрягающей дуги

дуги дуги

GetX1, GetY1 – повертають координати першої точки сопрягающей GetX2, GetY2 – повертають координати другої точки сопрягающей

Думаю, з ними все ясно Тепер про те, що таке індекс сопрягающей

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

Ні, це не гантеля Насправді, тут зображено 4 дуги кола однакового радіуса, які сполучають горизонтальну і вертикальну пряму (показані допоміжними прямими лініями)

Індекс сопрягающей дуги кола задає номер дуги, параметри якої ми хочемо отримати При цьому нумерація дуг ведеться з нуля

Кількість отриманих дуг можна дізнатися за допомогою методу GetCount інтерфейсу ksCON Даний метод викликається без параметрів

За здійснення математичних розрахунків відповідає інтерфейс ksMathematic2D Отримати його можна за допомогою методу GetMathematic2D інтерфейсу KompasObject Даний метод не має вхідних параметрів

Серед всіх властивостей і методів даного інтерфейсу нас цікавитиме лише один метод ksCouplingLineLine Ось прототип цього методу:

ksCouplingLineLine(

x1: Double y1: Double / / Координати точки на перший сопрягаемой прямий

angle1: Double        / / Кут нахилу першої сопрягаемой прямий

x2: Double y2: Double / / Координати точки на другий сопрягаемой прямий

angle2: Double        / / Кут нахилу другому сопрягаемой прямий

rad: Double           / / Радіус сопрягающей дуги кола

const param: IDispatch / / Інтерфейс ksCON, куди будуть записані результати

): WordBool

Параметри x1, y1, x2, y2 можуть задавати координати будь-якої точки, через яку проходить сполучається пряма

Кути angle1 і angle2 вимірюються між сопрягаемой прямий і

горизонтальної прямої

У разі успіху (знайдена хоча б одна сполучає, дуга) дана функція повертає значення true, а в разі помилки – false

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

Var

kompas: KompasObject Document2D: ksDocument2D Mathematic2D: ksMathematic2D CON : ksCON

………

Begin

………

/ / Отримуємо необхідні інтерфейси Mathematic2D:=ksMathematic2D(kompasGetMathematic2D()) CON:=ksCON(kompasGetParamStruct(ko_CON))

/ / Розраховуємо параметри сполучальних дуг

Mathematic2DksCouplingLineLine( 80, 110, 0, / / Горизонтальна

110, 90, 90, / / Вертикальна

10,         / / Радіус дуги

CON)

/ / Будуємо сопрягающую дугу

Document2DksArcByPoint(CONGetXc(1), CONGetYc(1),

10,

CONGetX1(1), CONGetY1(1),

CONGetX2(1), CONGetY2(1),

-1, 1)

/ / Будуємо спряжувані відрізки

Document2DksLineSeg(80, 110, CONGetX1(1), CONGetY1(1), 1)

Document2DksLineSeg(110, 90, CONGetX2(1), CONGetY2(1), 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>

*

*