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

0

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

Параметры операции «приклеивание по сечениям» описываются интерфейсом ksBossLoftDefinition. Его возвращает метод GetDefinition() интерфейса ksEntity, описывающую данную операцию.

Интерфейс ksBossLoftDefinition полностью аналогичен интерфейсу ksBaseLoftDefinition (см. главу 63).

Пример

Ниже представлен ключевой фрагмент исходного текста программы, демонстрирующей использование этой операции.

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_planeOffset = 14;

o3d_baseExtrusion = 24;

o3d_bossLoft = 31;

dtNormal = 0;

etBlind  = 0;

vm_Shaded = 3;

var

kompas: KompasObject; Document3D: ksDocument3D; Part: ksPart;

EntitySketch1,EntitySketch2,EntitySketch3,EntitySketch4:ksEntity; EntityPlaneXOY: ksEntity;

EntityPlaneOffset1,EntityPlaneOffset2,EntityPlaneOffset3:ksEntity; EntityBaseExtrusion,EntityBossLoft: ksEntity;

EntityCollection: ksEntityCollection;

SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition; PlaneOffsetDefinition: ksPlaneOffsetDefinition; BossLoftDefinition: ksBossLoftDefinition;

begin

//Подключаемся к КОМПАСу

kompas:=KompasObject(CreateOleObject(‘Kompas.Application.5′));

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

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

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

Document3D.Create(FALSE,true);

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

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

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

EntityPlaneXOY:=ksEntity(Part.GetDefaultEntity(o3d_planeXOY));

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

//Эскиз 1

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

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

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

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

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

//Устанавливаем плоскость XOY базовой для эскиза

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch1.Create();

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

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

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

Document2D.ksCircle(0,0,30,1);

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

BaseExtrusionDefinition:=ksBaseExtrusionDefinition(EntityBaseExtrusion.GetDefinition());

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

BaseExtrusionDefinition.directionType:=dtNormal;

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

BaseExtrusionDefinition.SetSideParam(TRUE,etBlind,20,0,TRUE);

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

BaseExtrusionDefinition.SetSketch(EntitySketch1);

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

EntityBaseExtrusion.Create();

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

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

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

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

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

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

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

//Направление смещения – прямое

PlaneOffsetDefinition.direction:=TRUE;

//Смещение

PlaneOffsetDefinition.offset := 20;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

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

EntityPlaneOffset1.Create();

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

//Эскиз 2

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

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

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

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

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

//Устанавливаем смещенную плоскость базовой для эскиза

SketchDefinition.SetPlane(EntityPlaneOffset1);

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

EntitySketch2.Create();

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

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

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

Document2D.ksCircle(0,0,30,1);

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

//Направление смещения – прямое

PlaneOffsetDefinition.direction := TRUE;

//Смещение

PlaneOffsetDefinition.offset := 40;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

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

EntityPlaneOffset2.Create();

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

//эскиз 3

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

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

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

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

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

//Устанавливаем смещенную плоскость базовой для эскиза

SketchDefinition.SetPlane(EntityPlaneOffset2);

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

EntitySketch3.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

//Направление смещения – прямое

PlaneOffsetDefinition.direction := TRUE;

//Смещение

PlaneOffsetDefinition.offset := 60;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

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

EntityPlaneOffset3.Create();

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

//эскиз 4

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

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

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

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

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

//Устанавливаем смещенную плоскость базовой для эскиза

SketchDefinition.SetPlane(EntityPlaneOffset3);

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

EntitySketch4.Create();

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

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

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

Document2D.ksCircle(0,0,25,1);

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

SketchDefinition.EndEdit();

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

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

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

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

EntityBossLoft := ksEntity(Part.NewEntity(o3d_bossLoft));

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

BossLoftDefinition:=ksBossLoftDefinition(EntityBossLoft.GetDefinition());

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

BossLoftDefinition.SetLoftParam(FALSE,TRUE,TRUE);

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

EntityCollection:=ksEntityCollection(BossLoftDefinition.Sketchs());

//Очищаем массив объектов

EntityCollection.Clear();

//Добавляем в массив созданные ранее эскизы

EntityCollection.Add(EntitySketch2);

EntityCollection.Add(EntitySketch3); EntityCollection.Add(EntitySketch4);

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

EntityBossLoft.Create();

end;

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

Document3D.hideAllPlanes:=TRUE;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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