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

0

Параметры операции «сечение эскизом» (ksCutBySketchDefinition)

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

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

свойства FALSE, то имеет место обратное направление.

chooseType1 – область применения операции. Значение данного свойства аналогично значению свойства chooseType интерфейса ksCutByPlane (см. главу 69).

Рассмотрим методы интерфейса ksCutBySketch.

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

эскиз.

SetSketch   –   устанавливает   новый    секущий   эскиз.   В   качестве

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

В новых версиях КОМПАС (11 и 13) к данным методам добавился еще один ChooseBodies(). В КОМПАС 8 его нет. Поэтому рассматривать его мы не будем.

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_baseExtrusion = 24;

o3d_cutBySketch = 51;

dtNormal = 0;

etBlind  = 0;

vm_Shaded = 3;

var

kompas: KompasObject; Document3D: ksDocument3D; Part: ksPart; EntityPlaneXOY:ksEntity; EntitySketch: ksEntity;

EntityExtrusion,EntityCutBySketch: ksEntity;

SketchDefinition: ksSketchDefinition;

Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition; CutBySketchDefinition: ksCutBySketchDefinition;

1 Данное свойство было добавлено в новых версиях КОМПАСа (11 и 13). В КОМПАС 8 его нет.

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

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

//Эскиз

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

BaseExtrusionDefinition.directionType:=dtNormal;

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

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

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

BaseExtrusionDefinition.SetSketch(EntitySketch);

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

EntityExtrusion.Create();

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

//Эскиз

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch.Create();

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

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

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

Document2D.ksLineSeg(20,20,20,50,1);

Document2D.ksLineSeg(20,20,50,20,1);

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

SketchDefinition.EndEdit();

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

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

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

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

EntityCutBySketch:=ksEntity(Part.NewEntity(o3d_cutBySketch));

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

CutBySketchDefinition:=ksCutBySketchDefinition(EntityCutBySketch.GetDefinition());

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

CutBySketchDefinition.direction:=TRUE;

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

CutBySketchDefinition.SetSketch(EntitySketch);

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

EntityCutBySketch.Create();

end;

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

Document3D.hideAllPlanes:=TRUE;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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