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

0

Параметры операции «вырезание вращением» (ksCutRotatedDefinition)

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

Интерфейс ksCutRotatedDefinition очень поход на интерфейс ksBaseRotatedDefinition (см. главу 58). Но, в отличие от последнего имеет

одно дополнительное свойство.

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

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeXOZ = 2;

o3d_sketch  = 5;

o3d_baseExtrusion = 24;

o3d_cutRotated = 29;

dtNormal = 0;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntitySketch1, EntitySketch2: ksEntity; EntityPlaneXOY, EntityPlaneXOZ:ksEntity;

EntityExtrusion, EntityCutRotated: ksEntity; SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition; CutRotatedDefinition: ksCutRotatedDefinition;

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

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

//Эскиз 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,15,1);

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

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

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

BaseExtrusionDefinition.SetSketch(EntitySketch1);

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

EntityExtrusion.Create();

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

//Эскиз 2

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPLaneXOZ);

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

EntitySketch2.Create();

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

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

//Строим прямоугольник, которым будем "вырезать" Document2D.ksLineSeg(10,-15,10,-60,1); Document2D.ksLineSeg(10,-15,30,-15,1); Document2D.ksLineSeg(30,-15,30,-60,1); Document2D.ksLineSeg(30,-60,10,-60,1);

//Строим ось

Document2D.ksLineSeg(0,-60,0,-15,3);

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

SketchDefinition.EndEdit();

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

//Операция "вырезание вращением"

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

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

EntityCutRotated:=ksEntity(Part.NewEntity(o3d_cutRotated));

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

CutRotatedDefinition:=ksCutRotatedDefinition(EntityCutRotated.GetDefinition());

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

CutRotatedDefinition.directionType:=dtNormal;

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

CutRotatedDefinition.cut:=TRUE;

//Устанавливаем параметры вращения

CutRotatedDefinition.SetSideParam(TRUE,360);

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

CutRotatedDefinition.SetSketch(EntitySketch2);

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

EntityCutRotated.Create();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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