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

0

Параметры ребра жесткости (ksRibDefinition)

Интерфейс ksRibDefinition служит для описания параметров ребра жесткости. Этот интерфейс возвращает метод GetDefinition() интерфейса ksEntity, описывающего ребро жесткости. Рассмотрим свойства интерфейса ksRibDefinition.

angle – угол уклона граней ребра жесткости. Уклон граней всегда осуществляется наружу.

index – индекс отрезка (кривой) в эскизе ребра жесткости, который определяет направление уклона граней ребра жесткости. Все линии в эскизе пронумерованы, начиная с нуля.

side – направление формирования ребра жесткости. Допустимые значения данного свойства представлены в таблице ниже.

Значение

Описание

0

прямое направление в плоскости эскиза

1

обратное направление в плоскости эскиза

2

прямое направление ортогонально эскизу

3

обратное направление ортогонально эскизу

Теперь рассмотрим основные методы интерфейса ksRibDefinition.

GetSketch() – возвращает интерфейс ksEntity, описывающий эскиз ребра жесткости.

SetSketch – устанавливает новый эскиз ребра жесткости. В качестве единственного параметра принимает интерфейс ksEntity, описывающий устанавливаемый эскиз. В случае успеха данный метод возвращает значение TRUE.

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeXOZ = 2;

o3d_sketch  = 5;

o3d_planeOffset = 14;

o3d_baseExtrusion = 24;

o3d_bossExtrusion = 25;

o3d_ribOperation = 44;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntityPlaneXOY,EntityPlaneXOZ,EntityPlaneOffset:ksEntity; EntitySketch,EntityRib: ksEntity; EntityExtrusion,EntityBossExtrusion:ksEntity; SketchDefinition: ksSketchDefinition;

Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition; PlaneOffsetDefinition: ksPlaneOffsetDefinition;

BossExtrusionDefinition: ksBossExtrusionDefinition; RibDefinition: ksRibDefinition;

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

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

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

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

//Эскиз для операции выдавливания

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

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

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

BaseExtrusionDefinition.SetSketch(EntitySketch);

//Создаем операцию выдавливания

EntityExtrusion.Create();

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

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

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

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

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

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

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

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

PlaneOffsetDefinition.direction:=TRUE;

//Смещение

PlaneOffsetDefinition.offset := 20;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

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

EntityPlaneOffset.Create();

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

//Эскиз для операции "приклеивание выдавливанием"

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

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

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

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

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

//Устанавливаем смещенную плоскость базовой для эскиза SketchDefinition.SetPlane(EntityPlaneOffset);

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

EntitySketch.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

//Приклеивание выдавливанием

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

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

EntityBossExtrusion:=ksEntity(Part.NewEntity(o3d_bossExtrusion));

//Получаем интерфейс параметров операции "приклеивание выдавливанием" BossExtrusionDefinition:=KsBossExtrusionDefinition(EntityBossExtrusion.GetDefinition());

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

BossExtrusionDefinition.SetSideParam(TRUE, etBlind,50,0,TRUE);

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

BossExtrusionDefinition.SetSketch(EntitySketch);

//Cоздаем операцию "приклеивание выдавливанием"

EntityBossExtrusion.Create();

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

//Эскиз для ребра жесткости

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOZ);

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

EntitySketch.Create();

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

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

//Строим сам эскиз

Document2D.ksLineSeg(45,-20,20,-65,1);

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

SketchDefinition.EndEdit();

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

//Ребро жесткости

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

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

EntityRib:=ksEntity(Part.NewEntity(o3d_ribOperation));

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

RibDefinition:=ksRibDefinition(EntityRib.GetDefinition());

//Угол уклона граней ребра жесткости

RibDefinition.angle:=0;

//Первое ребро эскиза

RibDefinition.index:=0;

//Обратное направление в плоскости эскиза

RibDefinition.side:=1;

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

RibDefinition.SetSketch(EntitySketch);

//Создаем ребро жесткости

EntityRib.Create();

end;

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

Document3D.hideAllPlanes:=TRUE;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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