Главная » Delphi, OLE, САПР » Операция выдавливания – КОМПАС в DELPHI

0

 

Параметры выдавливания (ksBaseExtrusionDefinition)

В том случае, если интерфейс ksEntity описывает объект «базовая операция выдавливания» (o3d_baseExtrusion), то его метод GetDefinition() возвращает интерфейс ksBaseExtrusionDefinition. У данного интерфейса всего одно свойство.

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

Направление1

Числовое значение

Описание

dtNormal

0

прямое направление (для

тонкой стенки наружу)

dtReverse

1

обратное направление (для

тонкой стенки внутрь)

dtBoth

2

в обе стороны

dtMiddlePlane

3

от средней плоскости

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

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

SetSideParam – установить параметры выдавливания. Ниже приведен прототип этого метода.

SetSideParam(

side1: WordBool;      //Направление выдавливания

type_: Smallint;      //Тип выдавливания depth: Double;        //глубина выдавливания draftValue: Double;   //угол уклона draftOutward: WordBool //направление уклона

): WordBool;

Рассмотрим параметры этого метода более подробно.

side1 – направление выдавливания. Если значение данного параметра равно TRUE, то строится прямое выдавливание, если же значение этого свойства равно FALSE, то строится обратное выдавливание.

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

1  К сожалению, в модуле ksConstTLB данные константы не представлены, поэтому здесь я привожу их численные значения.


Тип выдавливания1

Числовое значение

Описание

etBlind

0

строго на глубину

etThroughAll

1

через всю деталь

etUpToVertexTo

2

на расстояние до вершины

etUpToVertexFrom

3

на расстояние за вершину

etUpToSurfaceTo

4

на расстояние до поверхности

etUpToSurfaceFrom

5

на расстояние за поверхность

etUpToNearSurface

6

до ближайшей поверхности

depth – глубина выдавливания. В том случае, если параметр type_ принимает значение etUpToVertexTo, или etUpToVertexFrom, или etUpToSurfaceTo, или etUpToSurfaceFrom, то данный параметр (depth) интерпретируется как глубина, вычитаемая или добавляемая к расстоянию до указанного объекта.

draftValue – угол уклона. Он измеряется между нормалью к плоскости эскиза операции выдавливания и линией, вдоль которой «выдавливается» эскиз.

draftOutward – направление уклона. Если значение этого параметра равно TRUE, то имеет место уклон наружу (получается перевернутый усеченный конус), если же значение этого параметра равно FALSE, то имеет

место уклон внутрь (обычный усеченный конус).

В случае успеха метод SetSideParam возвращает значение TRUE, а в случае ошибки – значение FALSE.

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

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_baseExtrusion = 24;

etBlind  = 0;

vm_Shaded = 3;

……………………………………………

var

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

1  К сожалению, в модуле ksConstTLB данные константы не представлены, поэтому здесь я привожу их численные значения

EntityDraw, EntityPlane, EntityExtrusion: ksEntity; SketchDefinition: ksSketchDefinition;

Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition;

………………………………………………

begin

………………………………………………

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

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

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

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

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

Document3D.Create(FALSE,true);

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

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

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

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlane);

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

EntityDraw.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

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

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

BaseExtrusionDefinition.SetSketch(EntityDraw);

//Создаем операцию выдавливания EntityExtrusion.Create();

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

end;

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

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

По теме:

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