Операція «вирізування видавлюванням» – КОМПАС в DELPHI

Параметри операції «вирізування видавлюванням» (ksCutExtrusionDefinition)

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

Інтерфейс ksCutExtrusionDefinition практично повністю ідентичний інтерфейсу ksBaseExtrusionDefinition, який ми розглядали в главі 54

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

cut – Визначає характер операції видавлювання Якщо значення цієї властивості дорівнює TRUE, то має місце віднімання елементів (класичне вирізання) Якщо ж значення цієї властивості одно FALSE, то має місце перетин елементів

У всьому іншому інтерфейс ksCutExtrusionDefinition аналогічний інтерфейсу ksBaseExtrusionDefinition

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

Порядок побудови цього склянки буде наступним

1)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp У площині XOY створюється ескіз, що представляє собою коло радіусом 15 мм (30/2)

2)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Виконується операція витискування на висоту 20 мм

3)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Створюється зміщена площину, розташована паралельно площині XOY та віддалена від неї на відстань 20 мм (Глибина видавлювання на попередньому кроці)

4)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp У зміщеною площині створюється ескіз, що представляє собою коло радіусом 10 мм (20/2)

5)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Виконується операція вирізання видавлюванням на глибину 15 Нижче наводиться ключовий фрагмент вихідного тексту програми,

яка демонструє побудову даного склянки по вищеописаного алгоритму

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_planeOffset  = 14

o3d_baseExtrusion = 24

o3d_cutExtrusion = 26

dtNormal = 0

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityPlaneXOY, EntityPlaneOffset: ksEntity

EntitySketch1, EntitySketch2: ksEntity EntityExtrusion, EntityCutExtrusion: ksEntity

SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition PlaneOffsetDefinition: ksPlaneOffsetDefinition CutExtrusionDefinition: ksCutExtrusionDefinition

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,15,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

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

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

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

BaseExtrusionDefinitionSetSketch(EntitySketch1)

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

EntityExtrusionCreate()

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

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

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

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

EntityPlaneOffset:=ksEntity(PartNewEntity(o3d_planeOffset))

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffsetGetDefinition())

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

PlaneOffsetDefinitiondirection:=TRUE

/ / Зміщення

PlaneOffsetDefinitionoffset := 20

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

PlaneOffsetDefinitionSetPlane(EntityPlaneXOY)

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

EntityPlaneOffsetCreate()

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

/ / Ескіз 2

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

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

EntitySketch2:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch2GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset)

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

EntitySketch2Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,10,1)

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

SketchDefinitionEndEdit()

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

/ / Вирізання видавлюванням

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

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

EntityCutExtrusion:=ksEntity(PartNewEntity(o3d_CutExtrusion))

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

CutExtrusionDefinition:=ksCutExtrusionDefinition(EntityCutExtrusionGetDefinition())

/ / Віднімання елементів

CutExtrusionDefinitioncut:=TRUE

/ / Пряме напрямок

CutExtrusionDefinitiondirectionType:=dtNormal

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

CutExtrusionDefinitionSetSideParam(TRUE,etBlind,15,0,FALSE)

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

CutExtrusionDefinitionSetSketch(EntitySketch2)

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

EntityCutExtrusionCreate()

end

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

Document3DhideAllPlanes:=TRUE

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

Document3DdrawMode:=vm_Shaded

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

Document3DshadedWireframe:=TRUE

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

kompasVisible:=true

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

На малюнку нижче показаний результат роботи цієї ж програми але, у разі, перетину елементів (властивість cut інтерфейсу ksCutExtrusionDefinition приймає значення FALSE)

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

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


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

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

Ваш отзыв

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

*

*