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

0

Параметры кинематической операции вырезания (ksCutEvolutionDefinition)

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

Единственное отличие интерфейса ksCutEvolutionDefinition от ksBaseEvolutionDefinition  состоит  в  том,  что  у  первого  появилось  одно

дополнительное свойство по сравнению со вторым.

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

Во всем остальном интерфейсы ksCutEvolutionDefinition и ksBaseEvolutionDefinition идентичны друг другу.

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeXOZ = 2;

o3d_planeYOZ = 3;

o3d_sketch  = 5;

o3d_baseExtrusion = 24;

o3d_cutEvolution = 47;

dtNormal = 0;

etBlind = 0;

vm_Shaded = 3;

var

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

EntitySketch1,EntitySketch2,EntitySketch3:ksEntity; EntityPlaneXOY,EntityPlaneYOZ,EntityPlaneXOZ:ksEntity; EntityExtrusion: ksEntity;

EntityCutEvolution: ksEntity; EntityCollection: ksEntityCollection;

SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

ExtrusionDefinition: ksBaseExtrusionDefinition; CutEvolutionDefinition: ksCutEvolutionDefinition;

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

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

EntityPlaneYOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

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

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

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

//Эскиз 1

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch1.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

ExtrusionDefinition.directionType:=dtNormal;

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

ExtrusionDefinition.SetSideParam(TRUE,etBlind,80,0, TRUE);

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

ExtrusionDefinition.SetSketch(EntitySketch1);

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

EntityExtrusion.Create();

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

//Эскиз 2 (сечение)

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneYOZ);

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

EntitySketch2.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

//Эскиз 3 (траектория)

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOZ);

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

EntitySketch3.Create();

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

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

//Строим траекторию

Document2D.ksLineSeg(0,-20,30,-20,1);

Document2D.ksArcByPoint(30,-40,20,30,-20,50,-40,-1,1);

Document2D.ksLineSeg(50,-40,50,-80,1);

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

SketchDefinition.EndEdit();

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

//Кинематическая операция вырезания

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

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

EntityCutEvolution:=ksEntity(Part.NewEntity(o3d_cutEvolution));

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

CutEvolutionDefinition:=ksCutEvolutionDefinition(EntityCutEvolution.GetDefinition());

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

CutEvolutionDefinition.cut:=TRUE;

//Тип движения

CutEvolutionDefinition.sketchShiftType:=1;

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

CutEvolutionDefinition.SetSketch(EntitySketch2);

//Получаем массив объектов

EntityCollection:=ksEntityCollection(CutEvolutionDefinition.PathPartArray()); EntityCollection.Clear();

//Добавляем в массив эскиз с траекторией

EntityCollection.Add(EntitySketch3);

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

EntityCutEvolution.Create();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

а справа показан разрез детали, построенной данной программой.

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

По теме:

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