Копіювання елементів деталі по концентричній сітці – КОМПАС в DELPHI

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

count1 – Кількість копій в радіальному напрямку

count2 – Кількість копій в кільцевому напрямку

factor1 – Вказує на те як слід інтерпретувати значення властивості step1 Якщо значення властивості factor1 одно TRUE, то властивість step1 встановлює відстань між крайніми копіями в радіальному напрямку Якщо ж значення властивості factor2 одно FALSE, то властивість step1 встановлює відстань між двома сусідніми копіями в радіальному напрямку

factor2 – Аналогічно властивості factor1 але, стосовно до властивості step2 в кільцевому напрямку Відстані в цьому напрямку вказуються в градусах

geomArray – Вказує потрібно перебудовувати копії Якщо значення цієї властивості дорівнює TRUE, то копій не перебудовуються Це призводить до прискорення виконання операції, але у випадку копіювання скруглений і фасок можливо поява помилок Якщо ж значення властивості geomArray одно FALSE, то всі копії перебудовуються заново

inverce – Вказує напрямок копіювання Якщо значення цієї властивості дорівнює TRUE, то копіювання здійснюється в зворотному напрямку Якщо ж значення цієї властивості одно FALSE, то копіювання

здійснюється в прямому напрямку

step1 – Залежить від значення властивості factor1

step2 – Залежить від значення властивості factor2

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

SetAxis – Встановлює вісь операції В якості єдиного параметра приймає інтерфейс ksEntity, що описує встановлювану вісь У разі успіху метод повертає значення TRUE

GetAxis() – Повертає інтерфейс ksEntity, що описує вісь, встановлену методом SetAxis

GetOperationArray()1 – Повертає інтерфейс ksEntityCollection (див главу 63) масиву елементів підлягають копіюванню Кожен елемент в цьому масиві описується інтерфейсом ksEntity

SetCopyParamAlongDir – Встановлює параметри копіювання в кільцевому напрямку Цей метод використовується для установки значень

1 У документації КОМПАС даний метод описаний як OerationArray (), проте в модулі ksTLBpas він представлений саме як GetOperationArray ()

деяких властивостей інтерфейсу ksCircularCopyDefinition Нижче представлений прототип цього методу

SetCopyParamAlongDir(

count: Integer / / Властивість count2 step: Double / / Властивість step2 factor: WordBool / / Властивість factor2 dir: WordBool / / властивість inverce

): WordBool

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

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_planeXOZ = 2

o3d_planeYOZ = 3

o3d_sketch  = 5

o3d_axis2Planes = 9

o3d_planeOffset = 14

o3d_baseExtrusion = 24

o3d_bossExtrusion = 25

o3d_circularCopy = 36

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityCollection: ksEntityCollection

EntityPlaneXOY,EntityPlaneXOZ,EntityPlaneYOZ:ksEntity EntitySketch,EntityPlaneOffset,EntityAxis: ksEntity

EntityExtrusion,EntityBossExtrusion,EntityCircularCopy: ksEntity

SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition PlaneOffsetDefinition: ksPlaneOffsetDefinition BossExtrusionDefinition: ksBossExtrusionDefinition

Axis2PlanesDefinition: ksAxis2PlanesDefinition CircularCopyDefinition: ksCircularCopyDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

/ / Створюємо документ-модель

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

/ / Отримуємо інтерфейс обєкта площину XOY

EntityPlaneXOY:=ksEntity(PartGetDefaultEntity(o3d_planeXOY))

/ / Отримуємо інтерфейс обєкта площину XOZ

EntityPlaneXOZ:=ksEntity(PartGetDefaultEntity(o3d_planeXOZ))

/ / Отримуємо інтерфейс обєкта площину YOZ

EntityPlaneYOZ:=ksEntity(PartGetDefaultEntity(o3d_planeYOZ))

///////////////////////////////////////////////

/ / Ескіз для операції видавлювання

///////////////////////////////////////////////

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

/ / Встановлюємо площину XOY базовою для ескізу

SketchDefinitionSetPlane(EntityPlaneXOY)

/ / Створюємо ескіз

EntitySketchCreate()

/ / Входимо в режим редагування ескізу

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

/ / Будуємо окружність

Document2DksCircle(0,0,50,1)

/ / Виходимо з режиму редагування ескізу

SketchDefinitionEndEdit()

///////////////////////////////////////////////

/ / Операція видавлювання

//////////////////////////////////////////////

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

/ / Встановлюємо параметри операції видавлювання

BaseExtrusionDefinitionSetSideParam(TRUE,etBlind,10,0,TRUE)

/ / Встановлюємо ескіз операції видавлювання

BaseExtrusionDefinitionSetSketch(EntitySketch)

/ / Створюємо операцію видавлювання

EntityExtrusionCreate()

//////////////////////////////////////////////

/ / Зміщена площину

/////////////////////////////////////////////

/ / Отримуємо інтерфейс обєкта зміщена площину

EntityPlaneOffset:=ksEntity(PartNewEntity(o3d_planeOffset))

/ / Отримуємо інтерфейс параметрів зміщеною площині

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffsetGetDefinition())

/ / Напрямок зміщення – пряме

PlaneOffsetDefinitiondirection:=TRUE

/ / Зміщення

PlaneOffsetDefinitionoffset := 10

/ / Встановлюємо базову площину

PlaneOffsetDefinitionSetPlane(EntityPlaneXOY)

/ / Створюємо зміщену площину

EntityPlaneOffsetCreate()

//////////////////////////////////////////////

/ / Ескіз для операції приклеювання видавлюванням

/////////////////////////////////////////////

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

/ / Встановлюємо зміщену площину базової для ескізу

SketchDefinitionSetPlane(EntityPlaneOffset)

/ / Створюємо ескіз

EntitySketchCreate()

/ / Входимо в режим редагування ескізу

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

/ / Будуємо окружність Document2DksCircle (-30, -30,5,1)

/ / Виходимо з режиму редагування ескізу

SketchDefinitionEndEdit()

////////////////////////////////////////////

/ / Приклеювання видавлюванням

///////////////////////////////////////////

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

EntityBossExtrusion:=ksEntity(PartNewEntity(o3d_bossExtrusion))

/ / Отримуємо інтерфейс параметрів операції приклеювання видавлюванням BossExtrusionDefinition: = KsBossExtrusionDefinition (EntityBossExtrusionGetDefinition ())

/ / Встановлюємо параметри операції приклеювання видавлюванням

BossExtrusionDefinitionSetSideParam(TRUE, etBlind,50,0,TRUE)

/ / Встановлюємо ескіз для операції приклеювання видавлюванням

BossExtrusionDefinitionSetSketch(EntitySketch)

/ / Cоздан операцію приклеювання видавлюванням

EntityBossExtrusionCreate()

/////////////////////////////////////////////

/ / Вісь на перетині двох площин

/////////////////////////////////////////////

/ / Отримуємо інтерфейс обєкта вісь

EntityAxis:=ksEntity(PartNewEntity(o3d_axis2Planes))

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

Axis2PlanesDefinition:=ksAxis2PlanesDefinition(EntityAxisGetDefinition())

/ / Встановлюємо площині

Axis2PlanesDefinitionSetPlane(1,EntityPlaneXOZ) Axis2PlanesDefinitionSetPlane(2,EntityPlaneYOZ)

/ / Створюємо вісь

EntityAxisCreate()

/////////////////////////////////////////////

/ / Операція копіювання по концентричній сітці

/////////////////////////////////////////////

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

EntityCircularCopy:=ksEntity(PartNewEntity(o3d_circularCopy))

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

CircularCopyDefinition:=ksCircularCopyDefinition(EntityCircularCopyGetDefinition())

/ / Кількість копій в радіальному напрямку

CircularCopyDefinitioncount1:=1

/ / Встановлюємо вісь операції

CircularCopyDefinitionSetAxis(EntityAxis)

/ / Встановлюємо параметри копіювання

CircularCopyDefinitionSetCopyParamAlongDir(8,45,FALSE,FALSE)

/ / Отримуємо масив копійованих елементів

EntityCollection:=ksEntityCollection(CircularCopyDefinitionGetOperationArray())

EntityCollectionClear()

/ / Заповнюємо масив копіруеми елементів

EntityCollectionAdd(EntityBossExtrusion)

/ / Створюємо операцію

EntityCircularCopyCreate()

end

/ / Робимо площині невидимими Document3DhideAllPlanes: = TRUE

/ / Робимо осі невидимими

Document3DhideAllAxis:=TRUE

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

Document3DdrawMode:=vm_Shaded

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

Document3DshadedWireframe:=TRUE

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

kompasVisible:=true

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

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

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


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

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

Ваш отзыв

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

*

*