Кутовий розмір – КОМПАС в DELPHI

Інтерфейс ksADimSourceParam служить для опису параметрів того, як слід розташовувати кутовий розмір Розглянемо властивості цього інтерфейсу

xc, yc – Координати центру розмірної дуги Зазвичай він збігається з вершиною кута, розмір якого проставляється

x1, y1 – Координати точки початку першої виносної лінії

x2, y2 – Координати точки початку другої виносної лінії Для того щоб було більш зрозуміло, що це за точки такі погляньте на малюнок нижче (ці точки обведені в гуртки)

ang1 – Кут нахилу до горизонталі першої виносної лінії

ang2 – Кут нахилу до горизонталі другої виносної лінії

dir – напрям отрисовки розмірної дуги Якщо значення цієї властивості дорівнює одиниці, то розмірна дуга отрісовивается проти годинникової стрілки Якщо ж значення цієї властивості дорівнює -1 (мінус одиниці), тоді розмірна дуга отрісовивается за годинниковою стрілкою

rad – Радіус розмірної дуги

Метод у даного інтерфейсу всього один – Init () Цей метод служить для скидання всіх властивостей інтерфейсу в нульове значення У разі успіху він повертає значення true

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

Властивостей у інтерфейсу ksADimParam немає, тому розглянемо його методи

GetDPar() – Повертає інтерфейс параметрів отрисовки розміру ksDimDrawingParam Цей інтерфейс ми докладно розглядали в главі 22, коли говорили про просте лінійному розмірі

GetSPar() – Повертає інтерфейс параметрів привязки кутового розміру ksADimSourceParam (розглядався в попередньому розділі)

GetTPar() – Повертає інтерфейс параметрів розмірного напису ksDimTextParam (також розглядався в розділі 22)

SetDPar – Встановлює новий інтерфейс ksDimDrawingParam, що передається йому в якості єдиного параметра У разі успіху повертає значення true

SetSPar – Встановлює новий інтерфейс ksADimSourceParam, що передається йому в якості єдиного параметра У разі успіху повертає значення true

SetTPar – Встановлює новий інтерфейс ksDimTextParam, що передається йому в якості єдиного параметра У разі успіху повертає значення true

Для безпосередньої побудови кутового розміру використовується метод ksAngDimension інтерфейсу ksDocument2D В якості єдиного параметра цьому методу передається інтерфейс параметрів кутового розміру ksADimParam

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

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

var

kompas: KompasObject Document2D: ksDocument2D ADimParam: ksADimParam

DimDrawingParam: ksDimDrawingParam ADimSourceParam: ksADimSourceParam DynamicArray: ksDynamicArray

DimTextParam: ksDimTextParam

……………………………

Begin

……………………………

/ / Будуємо перший відрізок, який утворює кут, який ми будемо вимірювати

Document2DksLineSeg(100, 100, 120, 100, 1)

//Будуємо другий відрізок, який утворює кут, який ми будемо вимірювати

Document2DksLineSeg(100, 100, 120,100+trunc(20*tan(pi/3)) , 1)

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

ADimParam:=ksADimParam(kompasGetParamStruct(ko_ADimParam))

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

DimDrawingParam:=ksDimDrawingParam(ADimParamGetDPar())

DimDrawingParamang:=0 / / Кут нахилу ніжки внесений полки DimDrawingParamlenght:=0/ / Довжина ніжки внесений полки DimDrawingParampl1:=false/ / Отрісовиваємих першу виносну лінію DimDrawingParampl2:=false/ / Отрісовиваємих другий виносну лінію DimDrawingParampt1:=1 / / У першої виносної лінії стрілки зсередини DimDrawingParampt2:=1 / / У першої виносної лінії стрілки зсередини DimDrawingParamshelfDir:=0/ / Внесений полки у нас немає DimDrawingParamtextBase:=0/ / Розмірна напис у центрі DimDrawingParamtextPos:=0/ / Автоматичне розміщення тексту

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

ADimSourceParam:=ksADimSourceParam(ADimParamGetSPar())

/ / Координати центру розмірної дуги ADimSourceParamxc:=100 ADimSourceParamyc:=100

/ / Координати точки першої виносної лінії ADimSourceParamx1:=100 ADimSourceParamy1:=100

/ / Координати точки другої виносної лінії

ADimSourceParamx2:=100

ADimSourceParamy2:=100

/ / Початковий і кінцевий кут розмірної дуги ADimSourceParamang1:=0 ADimSourceParamang2:=60 ADimSourceParamdir:=1 / / Проти годинникової стрілки

ADimSourceParamrad:= 15/ / Радіус розмірної дуги

/ / Отримуємо інтерфейс ksDimTextParam DimTextParam:=ksDimTextParam(ADimParamGetTPar()) DimTextParambitFlag:=1/ / Автоматична простановка розміру DimTextParamsign:=0/ / Значка немає

DimTextParamstringFlag:=false DimTextParamstyle:=3/ / Текст розмірного напису

/ / Отримуємо інтерфейс ksDynamicArray DynamicArray:=ksDynamicArray(DimTextParamGetTextArr()) DynamicArrayksClearArray() / / Очищаємо масив

/ / Будуємо сам кутовий розмір Document2DksAngDimension(ADimParam) kompasVisible:=true

end

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

Зверніть увагу на те, що в цьому прикладі ми вперше застосували автоматичну простановку розміру системою КОМПАС Для цього у властивості bitFlag інтерфейсу ksDimTextParam ми встановили прапор

_AUTONOMINAL (1) При роботі з кутовим розміром це скоріше вимушена необхідність, ніж демонстрація існуючої можливості

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

Якщо ж спробувати прямим текстом передати цей значок Або прямо вказати його в рядку з номіналом, або в окремому рядку з одиницею виміру (для цього треба буде встановити прапор _UNIT у властивості bitFlag) То тоді система КОМПАС не зможе правильно відобразити його і вийде розмір як на малюнку нижче

Швидше за все, дана проблема викликана різними кодуваннями символів між Delphi і КОМПАС

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

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


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

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

Ваш отзыв

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

*

*