Сполучення – КОМПАС в DELPHI

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

AddMateConstraint – створює нове сполучення Нижче представлений прототип цього методу

AddMateConstraint(

constraintType: Integer / / Тип сполучення

const obj1: IDispatch  / / Перший сопрягающей обєкт const obj2: IDispatch / / Другий сопрягающей обєкт direction: Smallint   / / Напрямок обєктів

fixed: Smallint       / / Фіксація деталей

val: Double            / / Параметр для обмежень

): WordBool

У таблиці нижче представлені типи сполучень, що задаються параметром constraintType

Тип сопряженія1

Значення

Опис

mc_Concidence

0

збіг обєктів

mc_Parallel

1

паралельність

mc_Perpendicular

2

перпендикулярність

mc_Tangency

3

дотичність

mc_Concentric

4

концентричність (співвісність)

mc_Distance

5

постійну відстань між обєктами

mc_Angle

6

постійний кут між обєктами

mc_InPalce

7

cоздание компонента «на місці»

Параметри obj1 і obj2 являють собою інтерфейси ksEntity, що описують спряжувані грані (o3d_face) першої та другої деталі відповідно

Параметр direction задає напрям сполучених обєктів У таблиці нижче представлені можливі значення даного параметра

Значення

Опис

1

обєкти односпрямовані

0

напрямок не враховується

-1

обєкти різноспрямовані

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

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

Значення

Опис

0

деталі не фіксуються

1

фіксується перша деталь

2

фіксується другий деталь

Параметр val використовується тільки при завданні сполучень типу mc_Dictance і mc_Angle Даний параметр задає відстань або кут між обєктами При завданні сполучень інших типів значення параметра val ігнорується

У разі успіху метод AddMateConstraint повертає значення TRUE Щоб видалити пару використовується метод RemoveMateConstraint

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

RemoveMateConstraint(

constraintType: Integer / / Тип сполучення

const obj1: IDispatch / / Перший сопрягающей обєкт

const obj2: IDispatch / / Другий сопрягающей обєкт

): WordBool

Параметр constraintType задає тип видаляється сполучення

Параметри obj1 і obj2 являють собою інтерфейси ksEntity, що описують грані (o3d_face) першої та другої деталі, встановлене сполучення між якими ми видаляємо

У разі успіху даний метод повертає значення TRUE

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

const

pTop_Part = -1

o3d_face = 6

mc_Concentric = 4

mc_Distance = 5

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityCollection: ksEntityCollection

EntityFaceConcentric1, EntityFaceConcentric2: ksEntity EntityFaceDistance1, EntityFaceDistance2: ksEntity

path: string

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

/ / Отримуємо інтерфейс документа-збірки

Document3D:=ksDocument3D(kompasDocument3D())

/ / Створюємо збірку

Document3DCreate(FALSE,FALSE)

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

Part:=ksPart(Document3DGetPart(pTop_Part))

/ / Додаємо першу модель в збірку path: = D: \ Study \ Деталь1m3d; Document3DSetPartFromFile (path, Part, TRUE)

/ / Додаємо другу модель в збірку path: = D: \ Study \ Деталь2m3d; Document3DSetPartFromFile (path, Part, TRUE)

/ / Отримуємо інтерфейси сполучених граней перший деталі

Part:=ksPart(Document3DGetPart(0)) EntityCollection:=ksEntityCollection(PartEntityCollection(o3d_face))

EntityFaceConcentric1:=ksEntity(EntityCollectionGetByIndex(2)) EntityFaceDistance1:=ksEntity(EntityCollectionGetByIndex(0))

/ / Отримуємо інтерфейси сполучених граней друге деталі

Part:=ksPart(Document3DGetPart(1)) EntityCollection:=ksEntityCollection(PartEntityCollection(o3d_face))

EntityFaceConcentric2:=ksEntity(EntityCollectionGetByIndex(1)) EntityFaceDistance2:=ksEntity(EntityCollectionGetByIndex(0))

/ / Встановлюємо пару співвісності

Document3DAddMateConstraint(mc_Concentric,EntityFaceConcentric1,EntityFaceConcentric2,-1,1,0)

/ / Встановлюємо сполучення відстань між обєктами

Document3DAddMateConstraint(mc_Distance,EntityFaceDistance1,EntityFaceDistance2,-1,1,-170)

/ / Перемальовувати збірку

Document3DRebuildDocument()

end

/ / Встановлюємо півтонове відображення

Document3DdrawMode:=vm_Shaded

/ / Вмикаємо відображення каркаса

Document3DshadedWireframe:=TRUE

/ / Робимо КОМПАС видимим

kompasVisible:=true

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

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

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


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

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

Ваш отзыв

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

*

*