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

0

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

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

Интерфейс ksCutLoftDefinition очень похож на ksBaseLoftDefinition (см. главу 63). В отличие от последнего к нему добавилось всего одно свойство.

cut – определяет характер операции. Если значение этого свойства равно TRUE, то имеет место вычитание объектов (классическое вырезание). Если же значение этого свойства равно FALSE, то имеет место пересечение объектов.

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

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_planeOffset = 14;

o3d_baseExtrusion = 24;

o3d_cutLoft = 32;

dtNormal = 0;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntitySketch1,EntitySketch2,EntitySketch3,EntitySketch4:ksEntity;

EntityPlaneXOY: ksEntity; EntityPlaneOffset1,EntityPlaneOffset2:ksEntity; EntityBaseExtrusion,EntityCutLoft: ksEntity; EntityCollection: ksEntityCollection; SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition;

PlaneOffsetDefinition: ksPlaneOffsetDefinition; CutLoftDefinition: ksCutLoftDefinition;

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,40,0,TRUE);

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

BaseExtrusionDefinition.SetSketch(EntitySketch1);

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

EntityBaseExtrusion.Create();

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

//Эскиз 2

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch2.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

PlaneOffsetDefinition.direction:=TRUE;

//Смещение

PlaneOffsetDefinition.offset := 20;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

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

EntityPlaneOffset1.Create();

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

//эскиз 3

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneOffset1);

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

EntitySketch3.Create();

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

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

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

Document2D.ksCircle(0,0,10,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();

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

//эскиз 4

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneOffset2);

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

EntitySketch4.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

EntityCutLoft := ksEntity(Part.NewEntity(o3d_cutLoft));

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

CutLoftDefinition:=ksCutLoftDefinition(EntityCutLoft.GetDefinition());

//Вычитание объектов

CutLoftDefinition.cut:=TRUE;

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

CutLoftDefinition.SetLoftParam(FALSE,TRUE,TRUE);

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

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

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

EntityCollection.Clear();

//Добавляем в массив созданные ранее эскизы EntityCollection.Add(EntitySketch2); EntityCollection.Add(EntitySketch3);

EntityCollection.Add(EntitySketch4);

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

EntityCutLoft.Create();

end;

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

Document3D.hideAllPlanes:=TRUE;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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