Дзеркальне відображення деталі щодо площини – КОМПАС в DELPHI

Згідно документації КОМПАС параметри дзеркального відображення відносно площини описуються інтерфейсом ksMirrorAllDefinition Однак в модулі ksTLBpas його немає Замість нього в цьому модулі описаний інтерфейс ksMirrorCopyAllDefinition з тим же прототипом У більш нових версіях КОМПАС (11 і 13) дана помилка виправлена

Властивостей у інтерфейсу ksMirrorCopyAllDefinition немає Тому відразу перейдемо до розгляду його методів

SetPlane – Відповідно до документації встановлює площину відображення Але, як показує експеримент, для правильного виконання операції

відображення тут повинна бути вказана не площину, а грань, через яку проходить площину відображення Створена копія деталі «приклеюється» до зазначеної межі вихідної деталі Інтерфейс грані (ksEntity) передається в якості єдиного параметра даного методу У разі успіху метод повертає значення TRUE

GetPlane() – Повертає інтерфейс (ksEntity) площині (грані), встановленої методом SetPlane

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_sketch  = 5

o3d_face =  6

o3d_baseExtrusion = 24

o3d_mirrorAllOperation = 49

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityCollection: ksEntityCollection EntitySketch,EntityPlane: ksEntity

EntityExtrusion, EntityMirror: ksEntity SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition MirrorAllDefinition: ksMirrorCopyAllDefinition

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

Document3D:=ksDocument3D(kompasDocument3D())

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

Document3DCreate(FALSE,true)

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

Part:= ksPart(Document3DGetPart(pTop_Part))

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

EntityPlane:=ksEntity(PartGetDefaultEntity(o3d_planeXOY))

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

/ / Ескіз

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

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

EntitySketch:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntitySketchGetDefinition())

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

SketchDefinitionSetPlane(EntityPlane)

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

EntitySketchCreate()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(20,20,20,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

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

BaseExtrusionDefinitionSetSideParam(TRUE,etBlind,20,30,TRUE)

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

BaseExtrusionDefinitionSetSketch(EntitySketch)

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

EntityExtrusionCreate()

/ / Отримуємо масив граней деталі EntityCollection: = ksEntityCollection (PartEntityCollection (o3d_face))

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

/ / Дзеркальне відображення відносно площини

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

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

EntityMirror:=ksEntity(PartNewEntity(o3d_mirrorAllOperation))

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

MirrorAllDefinition:=ksMirrorCopyAllDefinition(EntityMirrorGetDefinition())

/ / Встановлюємо грань

MirrorAllDefinitionSetPlane(EntityCollectionGetByIndex(1))

/ / Створюємо дзеркальне відображення

EntityMirrorCreate()

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>

*

*