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

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

Інтерфейс ksBossEvolutionDefinition повністю аналогічний інтерфейсу ksBaseEvolutionDefinition (див главу 66)

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

const

pTop_Part = -1

o3d_planeXOZ = 2

o3d_planeYOZ = 3

o3d_sketch  = 5

o3d_planeOffset = 14

o3d_baseExtrusion = 24

o3d_bossEvolution = 46

dtReverse = 1

etBlind = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntitySketch1, EntitySketch2,EntitySketch3: ksEntity EntityPlaneYOZ,EntityPlaneXOZ:ksEntity

EntityPlaneOffset: ksEntity EntityBossEvolution,EntityExtrusion: ksEntity

EntityCollection: ksEntityCollection SketchDefinition: ksSketchDefinition Document2D : ksDocument2D PlaneOffsetDefinition: ksPlaneOffsetDefinition ExtrusionDefinition: ksBaseExtrusionDefinition

BossEvolutionDefinition: ksBossEvolutionDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

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

EntityPlaneYOZ:=ksEntity(PartGetDefaultEntity(o3d_planeYOZ))

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

EntityPlaneXOZ:=ksEntity(PartGetDefaultEntity(o3d_planeXOZ))

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

/ / Ескіз 1

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

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

EntitySketch1:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch1GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneYOZ)

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

EntitySketch1Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(-20,-20,20,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:= ksEntity(PartNewEntity(o3d_baseExtrusion))

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

ExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

/ / Зворотній напрямок

ExtrusionDefinitiondirectionType:=dtReverse

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

ExtrusionDefinitionSetSideParam(FALSE,etBlind,30,0,TRUE)

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

ExtrusionDefinitionSetSketch(EntitySketch1)

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

EntityExtrusionCreate()

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

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

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

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

EntityPlaneOffset:=ksEntity(PartNewEntity(o3d_planeOffset))

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffsetGetDefinition())

/ / Зворотній напрямок

PlaneOffsetDefinitiondirection:=FALSE

/ / Зміщення

PlaneOffsetDefinitionoffset:=30

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

PlaneOffsetDefinitionSetPlane(EntityPlaneYOZ)

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

EntityPlaneOffsetCreate()

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

/ / Ескіз 2 (перетин)

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

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

EntitySketch2:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch2GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneOffset)

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

EntitySketch2Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(-20,-20,20,1)

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

SketchDefinitionEndEdit()

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

/ / Ескіз 3 (траєкторія)

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

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

EntitySketch3:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch3GetDefinition())

/ / Встановлюємо площину ескізу SketchDefinitionSetPlane (EntityPlaneXOZ)

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

EntitySketch3Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

/ / Будуємо траєкторію

Document2DksArcByPoint(30,-40,20,30,-20,50,-40,-1,1)

Document2DksLineSeg(50,-40,50,-80,1)

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

SketchDefinitionEndEdit()

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

/ / Кінематична операція приклеювання

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

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

EntityBossEvolution:=ksEntity(PartNewEntity(o3d_bossEvolution))

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

BossEvolutionDefinition:=ksBossEvolutionDefinition(EntityBossEvolutionGetDefinition())

/ / Тип руху

BossEvolutionDefinitionsketchShiftType:=1

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

BossEvolutionDefinitionSetSketch(EntitySketch2)

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

EntityCollection:=ksEntityCollection(BossEvolutionDefinitionPathPartArray()) EntityCollectionClear()

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

EntityCollectionAdd(EntitySketch3)

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

EntityBossEvolutionCreate()

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>

*

*