Види Системи координат КОМПАС в DELPHI

У середовищі КОМПАС існує два різновиди систем координат (далі скорочено СК): СК листа і СК виду У чому між ними різниця Перш ніж відповісти на це питання зробимо невеличке зауваження з приводу напрямки координатних осей

Більшість програмістів, що займаються програмуванням компютерної графіки, напевно, вже звикли до того, що точка початку координат знаходиться в лівому верхньому кутку екрану, а вісь ординат спрямована вниз При розробці додатків під КОМПАС їм доведеться назад звикати до традиційної системи координат, тобто до такої, початок якої розташоване в лівому нижньому кутку, а вісь ординат спрямована вгору

Строго кажучи, створювати види зовсім необовязково і ви легко

можете обійтися без них В умовах відсутності видів все побудови здійснюються в СК листа Початок координат цієї СК розташоване в лівому нижньому куті аркуша При цьому крапка з координатами (20,5) буде відповідати лівого нижнього кута рамки

Однак якщо ви створили один або декілька видів, то ви вже будете працювати в СК виду При цьому розташування початку координат буде залежати від тих параметрів, з якими був створений даний вид

Якщо ви працюєте з кількома видами, то вам потрібно бути подвійно уважними: по-перше, для того щоб стежити за тим в СК якого виду ви зараз перебуваєте, а по-друге, намагатися не допустити перетину цих видів

Для перерахунку координат передбачено два методи інтерфейсу

ksDocument2D: ksSheetToView і ksViewToSheet Почнемо з першого Він призначений для перерахунку координат з СК листа в СК поточного виду Ось прототип цього методу:

ksSheetToView(

x: Double / / Координата x, яку потрібно перерахувати

y: Double //Координата y, яку потрібно перерахувати

var outX: Double / / Сюди буде записано перелічене

/ / Значення координати x

var outY: Double / / Сюди буде записано перелічене

/ / Значення координати y

): Integer

нуль

У разі успіху даний метод повертає одиницю, а в разі помилки

Другий метод дуже схожий на перший Він виконує зворотний

перерахунок з СК поточного виду в СК листа Ось його прототип:

ksViewToSheet(

x: Double / / Координата x, яку потрібно перерахувати

y: Double //Координата y, яку потрібно перерахувати

var outX: Double / / Сюди буде записано перелічене

/ / Значення координати x

var outY: Double / / Сюди буде записано перелічене

/ / Значення координати y

): Integer

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

Ну і наостанок приведу приклад виклику одного з цих двох методів (другий буде викликатися аналогічним чином):

var

………

begin

………

………

Document2D: ksDocument2D x, y: double

Document2DksSheetToView(50,100, x,y)

Що ж, думаю тут все зрозуміло

Процес створення нового виду можна розділити на три кроки:

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 отримання інтерфейсу ksViewParam параметрів виду

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 заповнення властивостей цього інтерфейсу

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 створення нового виду

Тепер докладно про кожен з цих кроків Отримати інтерфейс ksViewParam можна за допомогою вже добре відомого нам методу GetParamStruct інтерфейсу KompasObject, для цього методу як параметр треба передати константу ko_ViewParam Тепер розглянемо властивості цього інтерфейсу:

angle – кут нахилу виду в СК листа name – рядок з імям виду

scale_ – масштаб виду

x – координата x точки початку координат виду y – координата y точки початку координат виду

Метод у інтерфейсу ksViewParam всього один це метод Init, який скидає всі налаштування виду

Залишився останній крок – це створення самого виду Робиться це за допомогою методу ksCreateSheetView інтерфейсу ksDocument2D Ось прототип даного методу:

ksCreateSheetView(

const par: IDispatch / / Інтерфейс ksViewParam

var number: Integer  / / Номер створюваного виду

): Integer

З приводу номера виду потрібно пояснити У виду є дві характеристики: номер і посилання на нього Посилання на вид в разі успіху повертає дана функція (а в разі помилки нуль) Впливати на посилання ви ніяк не можете

А ось номер виду ви можете встановлювати самі за допомогою параметра number цього методу При цьому система КОМПАС спробує створити вид з таким номером, якщо це неможливо, то відбудеться помилка і вид створений не буде Якщо ж як значення параметра number ви передасте значення нуль, то система КОМПАС створить вид з наступним порядковим номером по відношенню до попереднього створеному увазі (1,2,3,4, …) А в

значення параметра number запише номер створеного виду

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

var

……

Begin

……

……

Kompas: KompasObject Document2D: ksDocument2D ViewParam: ksViewParam ViewNumber: Integer

/ / Отримуємо інтерфейс параметрів виду

ViewParam:=ksViewParam(kompasGetParamStruct(ko_ViewParam))

/ / Встановлюємо параметри нового виду ViewParamname: = Головний вид; ViewParamx: = 30

ViewParamy:=30

ViewNumber:=0

/ / Створюємо новий вид

Document2DksCreateSheetView(ViewParam,ViewNumber)

/ / Тепер у змінній ViewNumber номер створеного виду

При цьому якщо все правильно зроблено ви отримаєте приблизно таку картину:

При роботі з декількома видами неминуче постає завдання перемикання між ними Для вирішення цього завдання нам знадобляться номера видів, про які ми говорили в попередньому розділі даної глави

Коли ви створюєте новий вид, він автоматично стає поточним І ви вже працюєте в СК цього виду Для того щоб зробити якийсь вид поточним використовується метод ksOpenView інтерфейсу ksDocument2D Ось прототип цього методу:

ksOpenView(number: Integer): Integer

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

Після того як новий вид став поточним ви відразу ж починаєте працювати в СК цього виду

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

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


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

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

Ваш отзыв

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

*

*