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

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

Єдина відмінність інтерфейсу ksCutEvolutionDefinition від ksBaseEvolutionDefinition полягає в тому, що у першому зявилося одне

додаткова властивість порівняно з другим

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

У всьому іншому інтерфейси ksCutEvolutionDefinition і ksBaseEvolutionDefinition ідентичні один одному

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_planeXOZ = 2

o3d_planeYOZ = 3

o3d_sketch  = 5

o3d_baseExtrusion = 24

o3d_cutEvolution = 47

dtNormal = 0

etBlind = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

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

EntityCutEvolution: ksEntity EntityCollection: ksEntityCollection

SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

ExtrusionDefinition: ksBaseExtrusionDefinition CutEvolutionDefinition: ksCutEvolutionDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

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

EntityPlaneXOY:=ksEntity(PartGetDefaultEntity(o3d_planeXOY))

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

EntityPlaneYOZ:=ksEntity(PartGetDefaultEntity(o3d_planeYOZ))

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

EntityPlaneXOZ:=ksEntity(PartGetDefaultEntity(o3d_planeXOZ))

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

/ / Ескіз 1

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

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

EntitySketch1:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch1GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneXOY)

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

EntitySketch1Create()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(50,25,50,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

ExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

/ / Напрямок видавлювання пряме

ExtrusionDefinitiondirectionType:=dtNormal

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

ExtrusionDefinitionSetSideParam(TRUE,etBlind,80,0, TRUE)

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

ExtrusionDefinitionSetSketch(EntitySketch1)

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

EntityExtrusionCreate()

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

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

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

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

EntitySketch2:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketch2GetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneYOZ)

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

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

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

Document2DksLineSeg(0,-20,30,-20,1)

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

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

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

SketchDefinitionEndEdit()

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

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

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

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

EntityCutEvolution:=ksEntity(PartNewEntity(o3d_cutEvolution))

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

CutEvolutionDefinition:=ksCutEvolutionDefinition(EntityCutEvolutionGetDefinition())

/ / Віднімання обєктів

CutEvolutionDefinitioncut:=TRUE

/ / Тип руху

CutEvolutionDefinitionsketchShiftType:=1

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

CutEvolutionDefinitionSetSketch(EntitySketch2)

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

EntityCollection:=ksEntityCollection(CutEvolutionDefinitionPathPartArray()) EntityCollectionClear()

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

EntityCollectionAdd(EntitySketch3)

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

EntityCutEvolutionCreate()

end

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

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>

*

*