Текстова напис Простий текст КОМПАС в DELPHI

Для написання текстів на аркуші креслення використовується метод ksText інтерфейсу ksDocument2D Ось його прототип:

function ksText(

x: Double        / / Координата x виведеного тексту y: Double      / / Координата y виведеного тексту ang: Double       / / Кут нахилу тексту

hStr: Double      / / Висота тексту

ksuStr: Double    / / Розтягнення тексту

bitVector: Integer / / Набір прапорів виведеного тексту

const s: WideString / / Виводиться рядок

): Integer

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

З параметрами x і y думаю все ясно Вони задають місце розташування тексту на кресленні

Параметр ang визначає кут, під яким пишеться текст (див рис Нижче)

Параметр hStr задає розмір шрифту, яким буде написаний текст Так що тут думаю теж все просто

Параметр ksuStr задає коефіцієнт розтягування тексту по горизонталі Для більшої ясності погляньте на малюнок нижче На ньому перший рядок відображена без розтягування, а друга – з подвійним (ksuStr = 2)

Параметр bitVector задає тип виведеного тексту Для звичайного тексту він повинен бути рівний нулю Роботу з цим параметром ми докладно розберемо в наступних розділах цієї глави

Тепер про возвращаемом значенні У разі успіху даний метод повертає покажчик на текст (просто кажучи деякий відмінне від нуля значення), а в разі помилки – нуль

Ну і наостанок невеликий приклад:

Var

………

Begin

………

………

Document2D: ksDocument2D

Document2DksText(100,100,

0, / / Без нахилу

5, / / Пятим шрифтом

0, / / Без розтягування

0, / / Звичайний текст

‘Виведений текст)

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

Так як текст уже виводиться похилим шрифтом, то для відключення нахилу параметр bitVector повинен бути встановлений в значення ITALIC_OFF (128) 1

Для виведення тексту напівжирним шрифтом використовується значення BOLD_ON (256), а в разі підкреслення UNDERLINE_ON (1024)

Дані значення можуть поєднуватися один з одним

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

Const

……

Var

……

Begin

……

ITALIC_OFF = 128

BOLD_ON = 256

UNDERLINE_ON = 1024

Document2D: ksDocument2D

Document2DksText (100, 100, 0,5,0,0, Звичайний шрифт)

Document2DksText (100, 90, 0,5,0, ITALIC_OFF, Шрифт без нахилу) Document2DksText (100, 80, 0,5,0, BOLD_ON, Жирний шрифт) Document2DksText (100, 70, 0,5,0, UNDERLINE_ON, Підкреслений шрифт)

……

Результат роботи даної програми представлений нижче:

1 Тут і далі в дужках вказується чисельне значення константи

Для виведення верхнього і нижнього відхилень передбачено два1 значення параметра bitVector: UPPER_DEVIAT (4), який говорить про те, що виводиться текст є верхнім відхиленням і LOWER_DEVIAT (5), яке говорить про те, що виводиться текст є нижнім відхиленням

Для того щоб було більш зрозуміло Розглянемо невеликий приклад:

Const

………

Var

………

Begin

……

UPPER_DEVIAT = 4

LOWER_DEVIAT = 5

Document2D: ksDocument2D

Document2DksText (100, 100, 0,5,0,0, Текст перед відхиленнями)

Document2DksText (175, 100, 0,5,0, UPPER_DEVIAT, Верхнє відхилення) Document2DksText (175, 100, 0,5,0, LOWER_DEVIAT, Нижня відхилення)

Document2DksText (225, 100, 0,5,0,0, Текст після відхилень)

………

У результаті таких нехитрих дій буде виведений текст види:

Звертаю вашу увагу на те, що при виведенні елементів даного тексту координата Y у них у всіх однакова (система КОМПАС сама розташовує відхиленнями на потрібній висоті відносно основного тексту) Змінюється тільки координата x

1 Насправді 4, але інші два ми опускаємо

Висновок дробу дуже схожий на висновок відхилень Різниця полягає тільки в тому, що використовуються інші константи: NUMERATOR (1) для чисельника і DENOMINATOR (2) для знаменника

Погляньмо на невеликий приклад:

Const

……

Var

……

Begin

……

NUMERATOR = 1

DENOMINATOR = 2

Document2D: ksDocument2D

Document2DksText (100, 100, 0,5,0,0, Текст перед дробом) Document2DksText (160, 100, 0,5,0, NUMERATOR, Чисельник)

Document2DksText (160, 100, 0,5,0, DENOMINATOR, Знаменник) Document2DksText (195, 100, 0,5,0,0, Текст після дробу)

……

В результаті роботи такої програми буде отриманий текст види:

У даному прикладі ми так само і у випадку з відхиленнями всі частини тексту мають однакову координату y

Все вище описане здається досить простим і зрозумілим Так воно і є Але ось висновок подстрок і надстрок – повна засада (мовою було інше слово) Мало того, що він, по всій видимості, реалізований не до кінця, або реалізований з помилками, так ще й документація з приводу нього нахабно бреше Але давайте по порядку Ось офіційна версія подій:

Для виведення подстрок і надстрок використовується три константи:

S_BASE (7) – виводиться рядок є рядком, у якої є надстрока і підрядок

S_UPPER_INDEX (8) – виводиться рядок є надстрокой S_LOWER_INDEX (9) – виводиться рядок є підрядком

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

параметра bitVector встановленого в значення нуль

По-друге, константа S_LOWER_INDEX чисельно дорівнює не 9, як це написано в документації, а 7

По-третє, константа S_UPPER_INDEX чисельно дорівнює не 8, як це написано в документації, а .. хрін знає чого Насправді мені так і не

вдалося визначити її вірне чисельне значення Тому у прикладі нижче ми будемо виводити тільки підрядок, з виведенням надстрок я так і не розібрався

Нижче наводиться приклад виведення підрядка:

Const

……

Var

……

Begin

……

S_LOWER_INDEX = 7

Document2D: ksDocument2D

Document2DksText (100, 100, 0,5,0,0, У мене є підрядок) Document2DksText (100, 100, 0,5,0, S_LOWER_INDEX, Підрядок)

………

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

Звертаю вашу увагу на те, що обидві рядки мають однакові координати

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

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


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

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

Ваш отзыв

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

*

*