Скруглення – КОМПАС в DELPHI

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

radius – Радіус скруглення

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

Метод у інтерфейсу ksFilletDefinition всього один

array_()1 – повертає інтерфейс ksEntityCollection (див главу 63) масиву скругляются граней або ребер

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_face = 6

o3d_baseExtrusion = 24

o3d_fillet = 34

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntitySketch, EntityPlaneXOY, EntityExtrusion: ksEntity

EntityFillet: ksEntity EntityCollectionFillet,EntityCollectionPart:ksEntityCollection SketchDefinition: ksSketchDefinition

Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition

FilletDefinition: ksFilletDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

1 У документації КОМПАС даний метод описується як array () (без знака підкреслення на кінці), але в модулі ksTLB він описаний як array_ () (зі знаком підкреслення на кінці)

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

EntityPlaneXOY:=ksEntity(PartGetDefaultEntity(o3d_planeXOY))

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

/ / Ескіз

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

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneXOY)

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

EntitySketchCreate()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,15,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

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

BaseExtrusionDefinitionSetSideParam(TRUE,etBlind,50,0,TRUE)

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

BaseExtrusionDefinitionSetSketch(EntitySketch)

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

EntityExtrusionCreate()

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

/ / Скруглення

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

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

EntityFillet:=ksEntity(PartNewEntity(o3d_fillet))

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

FilletDefinition:=ksFilletDefinition(EntityFilletGetDefinition())

/ / Радіус скруглення

FilletDefinitionradius:=5

/ / Чи не продовжувати по дотичних ребрах

FilletDefinitiontangent:=FALSE

/ / Отримуємо масив граней деталі

EntityCollectionPart:=ksEntityCollection(PartEntityCollection(o3d_face))

/ / Отримуємо масив скругляются граней

EntityCollectionFillet:=ksEntityCollection(FilletDefinitionarray_()) EntityCollectionFilletClear()

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

EntityCollectionFilletAdd(EntityCollectionPartGetByIndex(2))

/ / Створюємо зкруглення

EntityFilletCreate()

end

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

Document3DdrawMode:=vm_Shaded

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

Document3DshadedWireframe:=TRUE

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

kompasVisible:=true

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

У попередньому прикладі ми показали, як побудувати зкруглення, використовуючи інформацію про наявні гранях деталі Тепер подивимося, як зробити те ж саме, використовуючи інформацію про наявні ребрах деталі

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_edge = 7

o3d_baseExtrusion = 24

o3d_fillet = 34

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntitySketch, EntityPlaneXOY, EntityExtrusion: ksEntity

EntityFillet: ksEntity EntityCollectionFillet,EntityCollectionPart:ksEntityCollection SketchDefinition: ksSketchDefinition

Document2D : ksDocument2D

ExtrusionDefinition: ksBaseExtrusionDefinition

FilletDefinition: ksFilletDefinition

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

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(0,0,15,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

ExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

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

ExtrusionDefinitionSetSideParam(TRUE,etBlind,50,0,TRUE)

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

ExtrusionDefinitionSetSketch(EntitySketch)

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

EntityExtrusionCreate()

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

/ / Скруглення

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

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

EntityFillet:=ksEntity(PartNewEntity(o3d_fillet))

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

FilletDefinition:=ksFilletDefinition(EntityFilletGetDefinition())

/ / Радіус скруглення

FilletDefinitionradius:=5

/ / Чи не продовжувати по дотичних ребрах

FilletDefinitiontangent:=FALSE

/ / Отримуємо масив ребер деталі

EntityCollectionPart:=ksEntityCollection(PartEntityCollection(o3d_edge))

/ / Отримуємо масив скругляются ребер

EntityCollectionFillet:=ksEntityCollection(FilletDefinitionarray_()) EntityCollectionFilletClear()

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

EntityCollectionFilletAdd(EntityCollectionPartGetByIndex(0))

/ / Створюємо зкруглення

EntityFilletCreate()

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

Document3DdrawMode:=vm_Shaded

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

end

Document3DshadedWireframe:=TRUE

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

kompasVisible:=true

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

Результат роботи програми в прикладі 2 ні чим не відрізняється від результату роботи програми в прикладі 1

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

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


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

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

Ваш отзыв

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

*

*