Главная » Delphi, OLE, САПР » Кинематическая операция приклеивания – КОМПАС в DELPHI

0

Параметры кинематической операции приклеивания (ksBossEvolutionDefinition)

Параметры кинематической операции приклеивания задаются с помощью интерфейса 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(‘Kompas.Application.5′));

//Получаем интерфейс документа-модели

Document3D:=ksDocument3D(kompas.Document3D());

//Создаем документ-модель

Document3D.Create(FALSE,true);

//Получаем интерфейс компонента

Part:= ksPart(Document3D.GetPart(pTop_Part));

//Получаем интерфейс объекта "плоскость YOZ"

EntityPlaneYOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

//Получаем интерфейс объекта "плоскость XOZ"

EntityPlaneXOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeXOZ));

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

//Эскиз 1

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

//Получаем интерфейс объекта

EntitySketch1:=ksEntity(Part.NewEntity(o3d_sketch));

//Получаем интерфейс параметров объекта

SketchDefinition:=ksSketchDefinition(EntitySketch1.GetDefinition());

//Устанавливаем плоскость эскиза

SketchDefinition.SetPlane(EntityPlaneYOZ);

//Создаем эскиз

EntitySketch1.Create();

//Входим в режим редактирования эскиза

Document2D:=ksDocument2D(SketchDefinition.BeginEdit());

//Строим окружность

Document2D.ksCircle(-20,-20,20,1);

//Выходим из режима редактирования эскиза

SketchDefinition.EndEdit();

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

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

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

//Получаем интерфейс операции

EntityExtrusion:= ksEntity(Part.NewEntity(o3d_baseExtrusion));

//Получаем интерфейс параметров операции

ExtrusionDefinition:=ksBaseExtrusionDefinition(EntityExtrusion.GetDefinition());

//Обратное направление

ExtrusionDefinition.directionType:=dtReverse;

//Устанавливаем параметры операции

ExtrusionDefinition.SetSideParam(FALSE,etBlind,30,0,TRUE);

//Устанавливаем эскиз операции

ExtrusionDefinition.SetSketch(EntitySketch1);

//Создаем операцию

EntityExtrusion.Create();

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

//Смещенная плоскость

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

//Получаем интерфейс объекта

EntityPlaneOffset:=ksEntity(Part.NewEntity(o3d_planeOffset));

//Получаем интерфейс параметров объекта

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset.GetDefinition());

//Обратное направление

PlaneOffsetDefinition.direction:=FALSE;

//Смещение

PlaneOffsetDefinition.offset:=30;

//Устанавливаем базовую плоскость

PlaneOffsetDefinition.SetPlane(EntityPlaneYOZ);

//Создаем смещенную плоскость

EntityPlaneOffset.Create();

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

//Эскиз 2 (сечение)

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

//Получаем интерфейс объекта

EntitySketch2:=ksEntity(Part.NewEntity(o3d_sketch));

//Получаем интерфейс параметров объекта

SketchDefinition:=ksSketchDefinition(EntitySketch2.GetDefinition());

//Устанавливаем плоскость эскиза

SketchDefinition.SetPlane(EntityPlaneOffset);

//Создаем эскиз

EntitySketch2.Create();

//Входим в режим редактирования эскиза

Document2D:=ksDocument2D(SketchDefinition.BeginEdit());

//Строим окружность

Document2D.ksCircle(-20,-20,20,1);

//Выходим из режима редактирования эскиза

SketchDefinition.EndEdit();

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

//Эскиз 3 (траектория)

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

//Получаем интерфейс объекта

EntitySketch3:=ksEntity(Part.NewEntity(o3d_sketch));

//Получаем интерфейс параметров объекта

SketchDefinition:=ksSketchDefinition(EntitySketch3.GetDefinition());

//Устанавливаем плоскость эскиза SketchDefinition.SetPlane(EntityPlaneXOZ);

//Создаем эскиз

EntitySketch3.Create();

//Входим в режим редактирования эскиза

Document2D:=ksDocument2D(SketchDefinition.BeginEdit());

//Строим траекторию

Document2D.ksArcByPoint(30,-40,20,30,-20,50,-40,-1,1);

Document2D.ksLineSeg(50,-40,50,-80,1);

//Выходим из режима редактирования эскиза

SketchDefinition.EndEdit();

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

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

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

//Получаем интерфейс операции

EntityBossEvolution:=ksEntity(Part.NewEntity(o3d_bossEvolution));

//Получаем интерфейс параметров операции

BossEvolutionDefinition:=ksBossEvolutionDefinition(EntityBossEvolution.GetDefinition());

//Тип движения

BossEvolutionDefinition.sketchShiftType:=1;

//Устанавливаем эскиз сечения

BossEvolutionDefinition.SetSketch(EntitySketch2);

//Получаем массив объектов

EntityCollection:=ksEntityCollection(BossEvolutionDefinition.PathPartArray()); EntityCollection.Clear();

//Добавляем в массив эскиз с траекторией

EntityCollection.Add(EntitySketch3);

//Создаем операцию

EntityBossEvolution.Create();

end;

//Делаем плоскости невидимыми

Document3D.hideAllPlanes:=TRUE;

//Устанавливаем полутоновое изображение модели

Document3D.drawMode:=vm_Shaded;

//Включаем отображение каркаса

Document3D.shadedWireframe:=TRUE;

//Делаем КОМПАС видимым

kompas.Visible:=true;

На рисунке ниже показан результат работы этой программы.

Источник: Норсеев Сергей, «РАЗРАБОТКА ПРИЛОЖЕНИЙ ПОД КОМПАС В DELPHI»

По теме:

  • Комментарии