Копіювання елементів деталі уздовж кривої – КОМПАС в DELPHI

Згідно документації КОМПАС параметри копіювання елементів деталі уздовж кривої задаються за допомогою інтерфейсу ksCopyCurveDefinition Однак, в модулі ksTLBpas такого інтерфейсу немає Замість нього там описаний інтерфейс ksCurveCopyDefinition з точно таким же прототипом У КОМПАС

13 дане невідповідність усунуто Розглянемо властивості інтерфейсу ksCurveCopyDefinition

count – Кількість копій

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

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

geomArray – Вказує чи потрібно перебудовувати копії Якщо значення

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

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

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

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

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

CurveArray() – Повертає інтерфейс ksEntityCollection (див главу 63) масиву кривих, що утворюють траєкторію копіювання Як показує експеримент, як елемент цього масиву може бути використаний інтерфейс ksEntity, що описує ескіз, що містить траєкторію копіювання

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

63) масиву елементів деталі, що підлягають копіюванню Кожен елемент описується інтерфейсом ksEntity

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_planeOffset = 14

o3d_baseExtrusion = 24

o3d_bossExtrusion = 25

o3d_curveCopy = 37

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityCollection: ksEntityCollection EntitySketch,EntityPlaneXOY, EntityPlaneOffset: ksEntity EntityExtrusion,EntityBossExtrusion,EntityCurveCopy: ksEntity SketchDefinition: ksSketchDefinition

Document2D : ksDocument2D

RectangleParam: ksRectangleParam BaseExtrusionDefinition: ksBaseExtrusionDefinition PlaneOffsetDefinition: ksPlaneOffsetDefinition BossExtrusionDefinition: ksBossExtrusionDefinition CurveCopyDefinition: ksCurveCopyDefinition

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()

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

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

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

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset)

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

EntitySketchCreate()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

/ / Будуємо ескіз

Document2DksLineSeg(-40,-40,40,-40,1) Document2DksLineSeg(40,-40,40,40,1)

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

SketchDefinitionEndEdit()

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

/ / Операція копіювання уздовж кривої

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

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

EntityCurveCopy:=ksEntity(PartNewEntity(o3d_curveCopy))

/ / Порлучаем інтерфейс параметрів операції

CurveCopyDefinition:=ksCurveCopyDefinition(EntityCurveCopyGetDefinition())

/ / Кількість копій

CurveCopyDefinitioncount:=5

/ / Уздовж всієї кривої

CurveCopyDefinitionfullCurve:=TRUE

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

EntityCollection:=ksEntityCollection(CurveCopyDefinitionOperationArray()) EntityCollectionClear()

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

EntityCollectionAdd(EntityBossExtrusion)

/ / Отримуємо масив кривих

EntityCollection:=ksEntityCollection(CurveCopyDefinitionCurveArray()) EntityCollectionClear()

/ / Заповнюємо масив кривих

EntityCollectionAdd(EntitySketch)

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

EntityCurveCopyCreate()

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>

*

*