Операція «перетин площиною» – КОМПАС в DELPHI

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

direction – Задає напрямок відсікання Якщо значення цієї властивості

одно TRUE, то має місце прямий напрямок Якщо ж значення цієї властивості одно FALSE, то має місце зворотний напрямок

ksChooseType1 – область застосування операції У таблиці нижче представлені допустимі значення даної властивості

Область прімененія2

Значення

Опис

ksChBodiesAndParts

1

компоненти і тіла

ksChParts

2

компоненти

ksChBodies

3

всі компоненти

Тепер розглянемо методи інтерфейсу ksCutByPlaneDefinition

GetPlane() – Повертає інтерфейс ksEntity, що описує січну площину

SetPlane – Встановлює нову січну площину В якості єдиного параметра даний метод приймає інтерфейс ksEntity, що описує нову січну площину У разі успіху даний метод повертає значення TRUE

У нових версіях компаси (11 і 13) до цих двох методів додався ще один – ChooseBodies () У КОМПАС 8 його немає Тому розглядати даний метод ми не будемо

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

const

pTop_Part = -1

o3d_planeXOY = 1

o3d_planeYOZ = 3

o3d_sketch  = 5

o3d_axis2Planes = 9

o3d_planeAngle = 15

o3d_baseExtrusion = 24

1 Дана властивість зявилося в нових версіях компас У КОМПАС 11 і 13 воно є А ось в КОМПАС 8 у інтерфейсу ksCutByPLaneDefinition немає такої властивості

2 На жаль, в модулі ksConstTLB дані константи не описані, тому тут я наводжу їх чисельні значення

o3d_cutByPlane = 50

dtNormal = 0

etBlind  = 0

vm_Shaded = 3

var

kompas: KompasObject Document3D: ksDocument3D Part: ksPart

EntityPlaneXOY,EntityPlaneYOZ,EntityPlaneAngle:ksEntity

EntityDraw: ksEntity EntityExtrusion,EntityCutByPlane: ksEntity

EntityAxis: ksEntity SketchDefinition: ksSketchDefinition Document2D : ksDocument2D

BaseExtrusionDefinition: ksBaseExtrusionDefinition Axis2PlanesDefinition: ksAxis2PlanesDefinition

PlaneAngleDefinition: ksPlaneAngleDefinition CutByPlaneDefinition: ksCutByPlaneDefinition

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

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

/ / Ескіз

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

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

EntityDraw:=ksEntity(PartNewEntity(o3d_sketch))

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

SketchDefinition:=ksSketchDefinition(EntityDrawGetDefinition())

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

SketchDefinitionSetPlane(EntityPlaneXOY)

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

EntityDrawCreate()

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

Document2D:=ksDocument2D(SketchDefinitionBeginEdit())

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

Document2DksCircle(20,20,20,1)

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

SketchDefinitionEndEdit()

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

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

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

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

EntityExtrusion:=ksEntity(PartNewEntity(o3d_baseExtrusion))

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusionGetDefinition())

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

BaseExtrusionDefinitiondirectionType:=dtNormal

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

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

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

BaseExtrusionDefinitionSetSketch(EntityDraw)

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

EntityExtrusionCreate()

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

/ / Вісь на перетині двох площин

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

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

EntityAxis:=ksEntity(PartNewEntity(o3d_axis2Planes))

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

Axis2PlanesDefinition:=ksAxis2PlanesDefinition(EntityAxisGetDefinition())

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

Axis2PlanesDefinitionSetPlane(1,EntityPlaneXOY)

Axis2PlanesDefinitionSetPlane(2,EntityPlaneYOZ)

/ / Створюємо вісь

EntityAxisCreate()

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

/ / Нахилена площину

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

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

EntityPlaneAngle:=ksEntity(PartNewEntity(o3d_planeAngle))

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

PlaneAngleDefinition:=ksPlaneAngleDefinition(EntityPlaneAngleGetDefinition())

/ / Кут нахилу

PlaneAngleDefinitionangle:=60

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

PlaneAngleDefinitionSetAxis(EntityAxis)

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

PlaneAngleDefinitionSetPlane(EntityPlaneXOY)

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

EntityPlaneAngleCreate()

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

/ / Операція перетин площиною

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

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

EntityCutByPlane:=ksEntity(PartNewEntity(o3d_cutByPlane))

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

CutByPlaneDefinition:=ksCutByPlaneDefinition(EntityCutByPlaneGetDefinition())

/ / Напрямок – зворотне

CutByPlaneDefinitiondirection := FALSE

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

CutByPlaneDefinitionSetPlane(EntityPlaneAngle)

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

EntityCutByPlaneCreate()

end

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

Document3DhideAllPlanes:=TRUE

/ / Робимо все осі невидимими

Document3DhideAllAxis:=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>

*

*