Лінія-виноска для позначення зміни – КОМПАС в DELPHI

&nbsp

Параметри лінії-винесення для позначення зміни (ksChangeLeaderParam) 1

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

LeaderLength – Визначає довжину «ніжок» Якщо значення даної властивості більше або дорівнює нулю, то воно визначає фіксовану довжину для всіх «ніжок» Якщо ж значення цієї властивості менше нуля, то довжина

«Ніжок» явно не визначена У цьому випадку кожна «ніжка» будується по точках, визначеним у масиві «ніжок» (про нього трохи нижче)

signHeight – Висота або діаметр значка зміни

signType – Задає вид значка зміни Допустимі значення даної властивості і їх опису представлені в таблиці нижче

Значення

Опис

Вид значка

0

квадрат

1

окружність

2

квадратні дужки

3

круглі дужки

1 Побудова лінії-винесення для позначення зміни засноване на інтерфейсі ksChangeLeaderParam Але, реалізований даний інтерфейс далеко не у всіх версіях КОМПАСА Наприклад, в 8 версії компаса він не реалізований А в 11 і 13 версіях реалізований На рахунок версій 9 і 10 точно сказати не можу, так як їх не було під рукою Тому використовуйте даний інтерфейс з обережністю

4

кутові дужки

style – Номер системного стилю тексту Допустимі номера системних стилів тексту наводилися в главі 22 Ми будемо вказувати значення нуль (стиль тексту за замовчуванням), так як для нашого обєкта не передбачено окремого стилю тексту

x і y – Координати центру значка зміни

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

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

Якщо значення властивості LeaderLength більше, або дорівнює нулю, довжина кожної «ніжки» жорстко фіксоване значенням цієї властивості Довжина

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

SetpPolyline – Встановлює новий масив «ніжок» Встановлюваний масив «ніжок» (інтерфейс ksDynamicArray) передається в якості єдиного параметра У разі успіху метод повертає значення TRUE GetpTextline() – Повертає інтерфейс ksDynamicArray (див главу 22) масиву рядків Кожен рядок в цьому масиві описується інтерфейсом

ksTextLineParam (див главу 40)

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

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

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

Для побудови лінії-винесення для позначення зміни використовується метод ksChangeLeader інтерфейсу ksDocument2D В якості єдиного параметра даний метод приймає інтерфейс ksChangeLeaderParam У разі успіху метод повертає числовий ідентифікатор побудованої лінії-винесення

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

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

var

kompas: KompasObject Document2D: ksDocument2D

ChangeLeaderParam: ksChangeLeaderParam DynamicArray1,DynamicArray2: ksDynamicArray MathPointParam: ksMathPointParam

TextLineParam: ksTextLineParam TextItemParam: ksTextItemParam

…………………………

Begin

…………………………

/ / Отримуємо інтерфейс параметрів лінії-винесення для позначення зміни

ChangeLeaderParam:=ksChangeLeaderParam(kompasGetParamStruct(ko_ChangeLeaderParam)) ChangeLeaderParamleaderLength:=-1 / / Ніжки будуються по точках ChangeLeaderParamsignHeight:=10 / / Діаметр значка ChangeLeaderParamsignType:=1 / / Значок у вигляді кола

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

/ / Координати точки центру значка зміни ChangeLeaderParamx:=110 ChangeLeaderParamy:=110

/ / Отримуємо масив ніжок

DynamicArray1:=ksDynamicArray(ChangeLeaderParamGetpPolyline()) DynamicArray1ksClearArray()

/ / Отримуємо масив точок DynamicArray2:=ksDynamicArray(kompasGetDynamicArray(2)) DynamicArray2ksClearArray()

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

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

MathPointParamy:=100

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

DynamicArray2ksAddArrayItem(-1,MathPointParam)

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

DynamicArray1ksAddArrayItem(-1,DynamicArray2)

/ / Отримуємо масив рядків

DynamicArray1:=ksDynamicArray(ChangeLeaderParamGetpTextline()) DynamicArray1ksClearArray()

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

TextLineParam:=ksTextLineParam(kompasGetParamStruct(ko_TextLineParam)) TextLineParamstyle:=0

/ / Отримуємо масив компонентів рядка DynamicArray2:=ksDynamicArray(TextLineParamGetTextItemArr()) DynamicArray2ksClearArray()

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

TextItemParam:=ksTextItemParam(kompasGetParamStruct(ko_TextItemParam)) TextItemParamtype_:=0  / / Стиль тексту за замовчуванням TextItemParamiSNumb:=0 / / Задаємо рядок

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

/ / Додаємо компоненту рядка в масив компонентів рядка

DynamicArray2ksAddArrayItem(-1,TextItemParam)

/ / Додаємо рядок в масив рядків

DynamicArray1ksAddArrayItem(-1,TextLineParam)

/ / Будуємо лінію-виноску позначення змін Document2DksChangeLeader(ChangeLeaderParam) 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>

*

*