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

Інтерфейс ksMeshCopyDefinition служить для завдання параметрів копіювання елементів деталі по параллелограммной сітці Його повертає метод GetDefinition () інтерфейсу ksEntity, що описує дану операцію копіювання елементів деталі Розглянемо властивості інтерфейсу ksMeshCopyDefinition

angle1 – Кут нахилу між першою віссю, вздовж якої відбувається копіювання елементів і віссю OX

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

count1 – Кількість копій вздовж першої осі

count2 – Кількість копій уздовж другої осі

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

factor2 – Аналогічно властивості factor1, але стосовно до другої осі і властивості step2

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

фасок Якщо ж значення цієї властивості одно FALSE, то при виконанні операції все копійовані елементи деталі сроятся заново

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

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

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

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

SetAxis1 – Встановлює першу вісь параллелограммной сітки В якості єдиного параметра приймає інтерфейс ksEntity,

описує встановлювану вісь Якщо перша вісь встановлюється за допомогою цього методу, то значення властивості angle1 ігнорується У разі успіху метод SetAxis1 повертає значення TRUE, а в разі помилки – Значення FALSE

SetAxis2 – Аналогічно методу SetAxis1 але, стосовно до другої осі параллелограммной сітки і властивості angle2

GetAxis1() – Повертає інтерфейс ksEntity, що описує вісь, встановлену методом SetAxis1, або NULL в тому випадку, якщо перша вісь

не встановлюється

GetAxis2() – Повертає інтерфейс ksEntity, що описує вісь, встановлену методом SetAxis2, або NULL в тому випадку, якщо друга вісь не встановлюється

OperationArray() – Повертає інтерфейс ksEntityCollection (див главу

63) масиву елементів деталі, які будуть скопійовані

SetCopyParamAlongAxis – Встановлює параметри копіювання елементів деталі уздовж осі Даний метод встановлює значення відповідних властивостей інтерфейсу ksMeshCopyDefinition Нижче представлений прототип методу SetCopyParamAlongAxis

SetCopyParamAlongAxis(

firstAxis: WordBool / / Ознака осі

angle: Double      / / Кут нахилу або розвороту count: Integer     / / Кількість копій уздовж осі step: Double       / / Залежить від параметра factor

factor: WordBool    / / Як інтерпретувати параметр step

): WordBool

Параметр firstAxis визначає: параметри копіювання уздовж якої осі ми задаємо Якщо його значення дорівнює TRUE, то ми задаємо параметри копіювання вздовж першої осі Якщо ж значення параметра firstAxis одно FALSE, то ми задаємо параметри копіювання уздовж другої осі

Параметр angle еквіваленті значень властивостей angle1 і angle2 залежно від значення параметра firstAxis

Параметр count еквівалентний значенням властивостей count1 і count2 залежно від значення параметра firstAxis

Параметр step еквівалентний значенням властивостей sep1 і step2 залежно від значення параметра firstAxis

Параметр factor еквівалентний значенням властивостей factor1 і factor2 залежно від значення параметра firstAxis

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

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_planeOffset = 14

o3d_baseExtrusion = 24

o3d_bossExtrusion = 25

o3d_meshCopy = 35

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityCollection: ksEntityCollection

EntitySketch,EntityPlaneXOY, EntityPlaneOffset: ksEntity EntityExtrusion,EntityBossExtrusion,EntityMeshCopy: ksEntity SketchDefinition: ksSketchDefinition

Document2D : ksDocument2D RectangleParam: ksRectangleParam

BaseExtrusionDefinition: ksBaseExtrusionDefinition PlaneOffsetDefinition: ksPlaneOffsetDefinition BossExtrusionDefinition: ksBossExtrusionDefinition

MeshCopyDefinition: ksMeshCopyDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

/ / Отримуємо інтерфейс обєкта площину XOY EntityPlaneXOY: = ksEntity (PartGetDefaultEntity (o3d_planeXOY))

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

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

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

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneXOY)

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

EntitySketchCreate()

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

RectangleParam:=ksRectangleParam(kompasGetParamStruct(ko_RectangleParam)) RectangleParamInit()

/ / Вказуємо параметри прямокутника

RectangleParamheight := 100

RectangleParamstyle := 1

RectangleParamwidth := 100

RectangleParamx := -50

RectangleParamy := -50

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

/ / Будуємо прямокутник

Document2DksRectangle(RectangleParam,0)

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

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(-40,-40,5,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityBossExtrusion:=ksEntity(PartNewEntity(o3d_bossExtrusion))

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

BossExtrusionDefinition:=KsBossExtrusionDefinition(EntityBossExtrusionGetDefinition())

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

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

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

BossExtrusionDefinitionSetSketch(EntitySketch)

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

EntityBossExtrusionCreate()

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

/ / Копіювання елементів по параллелограммной сітці

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

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

EntityMeshCopy:=ksEntity(PartNewEntity(o3d_meshCopy))

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

MeshCopyDefinition:=ksMeshCopyDefinition(EntityMeshCopyGetDefinition())

/ / Зберігати копії у всіх вузлах сітки

MeshCopyDefinitioninsideFlag:=TRUE

/ / Задаємо параметри копіювання вздовж першої осі

MeshCopyDefinitionSetCopyParamAlongAxis(TRUE, 0, 5,20,FALSE)

/ / Задаємо параметри копіювання уздовж другої осі

MeshCopyDefinitionSetCopyParamAlongAxis(FALSE,90,5,20,FALSE)

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

EntityCollection:=ksEntityCollection(MeshCopyDefinitionOperationArray()) EntityCollectionClear()

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

EntityCollectionAdd(EntityBossExtrusion)

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

EntityMeshCopyCreate()

end

/ / Робимо площині невидимими

Document3DhideAllPlanes:=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>

*

*