Лінія-виноска – КОМПАС в DELPHI

Інтерфейс ksTextLineParam служить для опису рядка, що складається із строкових елементів Отримати цей інтерфейс можна за допомогою методу GetParamStruct інтерфейсу KompasObject, для цього в якості єдиного параметра даному методу потрібно передати значення константи ko_TextLineParam Розглянемо властивості інтерфейсу ksTextLineParam

style – Номер системного стилю тексту Допустимі номера системних стилів текстів наводилися в главі 22 Для лінії виноски окремого системного стилю тексту не передбачено, тому ми як значення даної властивості будемо вказувати значення нуль Це говорить про те, що для даного обєкта слід використовувати сітсемний стиль тексту, передбачений для нього за замовчуванням

Тепер розглянемо методи інтерфейсу ksTextLineParam

GetTextItemArr() – Повертає інтерфейс динамічного масиву ksDynamicArray (див главу 22) компонентів рядки ksTextItemParam (див главу 5)

SetTextItemArr – Встановлює новий масив компонентів рядка Інтерфейс встановлюваного масиву (ksDynamicArray) приймається в якості єдиного параметра методу У разі успіху метод повертає значення TRUE

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

Інтерфейс ksLeaderParam описує параметри лінії-винесення Отримати цей інтерфейс можна за допомогою методу GetParamStruct інтерфейсу KompasObject Для цього в якості едінстенного параметр йому потрібно зрадити значення константи ko_LeaderParam Розглянемо властивості інтерфейсу lsLeaderParam

around – Позначає наявність на лінії-виносці знака обробки по контуру Якщо значення цієї властивості дорівнює нулю, то знака немає Якщо ж

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

arrowType   – Тип покажчика лінії-винесення У таблиці нижче представлені допустимі значення даної властивості

Значення

Опис

Вид лінії-винесення

0

Ні покажчика

1

У вигляді точки

2

У вигляді стрілки

3

У вигляді верхньої половини стрілки

4

У вигляді нижньої половини стрілки

cText0  – Кількість рядків над полицею лінії-винесення Де і як задаються ці рядки, буде розказано нижче

cText1 – Кількість рядків під полицею лінії-винесення

cText2  – Кількість рядків над «ніжкою» лінії-винесення (не більше однієї)

cText3  – Кількість рядків під «ніжкою» лінії-винесення (не більше однієї)

dirX    – Напрям полки лінії-винесення У таблиці нижче представлені допустимі значення цієї властивості

Значення

Опис

Вид лінії-винесення

0

полку орієнтована вправо1

-1

полку орієнтована вліво

1

полку орієнтована вправо

2

полку орієнтована вгору

3

полку орієнтована вниз

signType  – Тип знака на «ніжці» лінії-винесення У таблиці нижче представлені допустимі значення цієї властивості

1 Згідно документації при dirX рівному нулю полки немає Однак, на практиці, полку орієнтована вправо

Значення

Опис

Вид лінії-винесення

0

немає ніякого знака

1

знак склеювання

2

знак пайки

3

знак зшивання

4

знак зєднання внахлестку металевими скобами

5

знак кутового зєднання металевими скобами

6

знак монтажного шва

x  іy  – Координати точки початку полки, точка її зєднання з

«Ніжкою»

Тепер розглянемо методи інтерфейсу ksLeaderParam

GetpPolyline() – Повертає інтерфейс масиву «ніжок» лінії-винесення Масив задається у вигляді інтерфейсу ksDynamicArray (див главу 22) Кожна «ніжка» являє собою ламану На малюнку нижче показаний приклад такої ламаної «Ніжки»

Елементами масиву, що повертається методом GetpPolyline, є масиви ksDynamicArray математичних точок ksMathPointParam (див главу 29)

Тобто, за фактом метод GetpPolyline повертає двовимірний динамічний масив точок

Кожен дочірній масив описує окрему «ніжку» лінії-винесення Кожна «ніжка» будується від базової точки лінії-винесення (її координати визначаються значеннями властивостей x і y, і в масиві не вказуються) по точках, зазначеним у масиві, в порядку їх слідування

SetpPolyline – Встановлює новий масив «ніжок» лінії-винесення Інтерфейс нового масиву ksDynamicArray приймається в якості єдиного параметра методу У разі успіху даний метод повертає значення TRUE

GetpTextline() – Повертає динамічний масив ksDynamicArray рядків тексту ksTextLineParam Рядки в цьому масиві слідують в наступному порядку: рядки над полицею (їх кількість задається властивістю cText0) рядки під полицею (Їх кількість задається властивістю cText1) рядка над

«Ніжкою» (їх кількість задається властивістю cText2) рядки під «ніжкою» (їх кількість задається властивістю cText3)

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

Рядків над (під) «ніжкою» не може бути більше однієї

SetpTextline – Встановлює новий масив рядків Новий масив задається інтерфейсом ksDynamicArray (див главу 22) У разі успіху метод повертає значення TRUE

Init() – Виконує ініціалізацію (обнуління) значень властивостей даного інтерфейсу і перестворює динамічні масиви

Для побудови лінії-винесення використовується метод ksLeader інтерфейсу ksDocument2D В якості єдиного параметра даний метод приймає інтерфейс параметрів лінії-винесення ksLeaderParam

У разі успіху метод ksLeader повертає числовий ідентифікатор побудованої лінії-винесення А в разі помилки – значення нуль

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

var

kompas: KompasObject Document2D: ksDocument2D LeaderParam: ksLeaderParam

DynamicArray, DynamicArray2: ksDynamicArray MathPointParam: ksMathPointParam TextLineParam: ksTextLineParam TextItemParam: ksTextItemParam

……………………………………

Begin

……………………………………

/ / Отримуємо інтерфейс параметрів лінії виноски LeaderParam:=ksLeaderParam(kompasGetParamStruct(ko_LeaderParam)) LeaderParamaround := 0 / / Без значка по колу

LeaderParamarrowType := 0 / / Без покажчика LeaderParamcText0 := 1 / / Над полицею лінії-виноски LeaderParamcText1 := 0 / / Під полицею лінії-виноски LeaderParamcText2 := 0 / / Над ніжкою LeaderParamcText3 := 0 / / Під ніжкою LeaderParamdirX  := 1 / / Полку вправо LeaderParamsignType := 0 / / Без знаку на полиці

/ / Координати базової точки

LeaderParamx := 110

LeaderParamy := 110

/ / Отримуємо масив ніжок DynamicArray:=ksDynamicArray(LeaderParamGetpPolyline()) DynamicArrayksClearArray()

/ / Підготовляємо масив точок

DynamicArray2:=ksDynamicArray(kompasGetDynamicArray(2))

DynamicArray2ksClearArray()

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

MathPointParam := ksMathPointParam(kompasGetParamStruct(ko_MathPointParam)) MathPointParamx := 100

MathPointParamy := 100

/ / Додаємо крапку в масив точок

DynamicArray2ksAddArrayItem(-1,MathPointParam)

/ / Додаємо масив точок у масив ніжок

DynamicArrayksAddArrayItem(-1,DynamicArray2)

/ / Отримуємо масив елементів ksTextLineParam

DynamicArray := ksDynamicArray(LeaderParamGetpTextline()) DynamicArrayksClearArray()

/ / Отримуємо інтерфейс ksTextLineParam

TextLineParam := ksTextLineParam(kompasGetParamStruct(ko_TextLineParam))

TextLineParamstyle:=0 / / Стиль тексту за замовчуванням

/ / Отримуємо масив елементів ksTextItemParam

DynamicArray2 := ksDynamicArray(TextLineParamGetTextItemArr()) DynamicArray2ksClearArray()

/ / Отримуємо інтерфейс ksTextItemParam

TextItemParam := ksTextItemParam(kompasGetParamStruct(ko_TextItemParam)) TextItemParamtype_:=0 / / Рядок

TextItemParams := 1; / / Сама рядок

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

DynamicArray2ksAddArrayItem(-1,TextItemParam)

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

DynamicArrayksAddArrayItem(-1, TextLineParam)

/ / Будуємо саму лінію-виноску Document2DksLeader(LeaderParam) kompasVisible:=true

end

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

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

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


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

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

Ваш отзыв

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

*

*