Операція «приклеювання по перетинах» – КОМПАС в DELPHI

Параметри операції «приклеювання по перетинах» описуються інтерфейсом ksBossLoftDefinition Його повертає метод GetDefinition () інтерфейсу ksEntity, що описує дану операцію

Інтерфейс ksBossLoftDefinition повністю аналогічний інтерфейсу ksBaseLoftDefinition (див главу 63)

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_planeOffset = 14

o3d_baseExtrusion = 24

o3d_bossLoft = 31

dtNormal = 0

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntitySketch1,EntitySketch2,EntitySketch3,EntitySketch4:ksEntity EntityPlaneXOY: ksEntity

EntityPlaneOffset1,EntityPlaneOffset2,EntityPlaneOffset3:ksEntity EntityBaseExtrusion,EntityBossLoft: ksEntity

EntityCollection: ksEntityCollection

SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition PlaneOffsetDefinition: ksPlaneOffsetDefinition BossLoftDefinition: ksBossLoftDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

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

EntityPlaneXOY:=ksEntity(PartGetDefaultEntity(o3d_planeXOY))

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

/ / Ескіз 1

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

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

EntitySketch1:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch1GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneXOY)

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

EntitySketch1Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,30,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityBaseExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityBaseExtrusionGetDefinition())

/ / Напрямок пряме

BaseExtrusionDefinitiondirectionType:=dtNormal

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

BaseExtrusionDefinitionSetSideParam(TRUE,etBlind,20,0,TRUE)

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

BaseExtrusionDefinitionSetSketch(EntitySketch1)

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

EntityBaseExtrusionCreate()

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

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

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

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

EntityPlaneOffset1:=ksEntity(PartNewEntity(o3d_planeOffset))

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset1GetDefinition())

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

PlaneOffsetDefinitiondirection:=TRUE

/ / Зміщення

PlaneOffsetDefinitionoffset := 20

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

PlaneOffsetDefinitionSetPlane(EntityPlaneXOY)

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

EntityPlaneOffset1Create()

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

/ / Ескіз 2

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

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

EntitySketch2:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch2GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset1)

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

EntitySketch2Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,30,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityPlaneOffset2:=ksEntity(PartNewEntity(o3d_planeOffset))

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset2GetDefinition())

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

PlaneOffsetDefinitiondirection := TRUE

/ / Зміщення

PlaneOffsetDefinitionoffset := 40

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

PlaneOffsetDefinitionSetPlane(EntityPlaneXOY)

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

EntityPlaneOffset2Create()

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

/ / Ескіз 3

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

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

EntitySketch3:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch3GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset2)

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

EntitySketch3Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,20,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityPlaneOffset3:=ksEntity(PartNewEntity(o3d_planeOffset))

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset3GetDefinition())

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

PlaneOffsetDefinitiondirection := TRUE

/ / Зміщення

PlaneOffsetDefinitionoffset := 60

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

PlaneOffsetDefinitionSetPlane(EntityPlaneXOY)

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

EntityPlaneOffset3Create()

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

/ / Ескіз 4

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

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

EntitySketch4:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch4GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset3)

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

EntitySketch4Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,25,1)

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

SketchDefinitionEndEdit()

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

/ / Операція приклеювання по перетинах

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

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

EntityBossLoft := ksEntity(PartNewEntity(o3d_bossLoft))

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

BossLoftDefinition:=ksBossLoftDefinition(EntityBossLoftGetDefinition())

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

BossLoftDefinitionSetLoftParam(FALSE,TRUE,TRUE)

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

EntityCollection:=ksEntityCollection(BossLoftDefinitionSketchs())

/ / Очищаємо масив обєктів

EntityCollectionClear()

/ / Додаємо в масив створені раніше ескізи

EntityCollectionAdd(EntitySketch2)

EntityCollectionAdd(EntitySketch3) EntityCollectionAdd(EntitySketch4)

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

EntityBossLoftCreate()

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>

*

*