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

0

Параметры зеркального отображения относительно плоскости (ksMirrorCopyAllDefinition)

Согласно документации КОМПАС параметры зеркального отображения относительно плоскости описываются интерфейсом ksMirrorAllDefinition. Однако в модуле ksTLB.pas его нет. Вместо него в этом модуле описан интерфейс ksMirrorCopyAllDefinition с тем же прототипом. В более новых версиях КОМПАС (11 и 13) данная оплошность исправлена.

Свойств у интерфейса ksMirrorCopyAllDefinition нет. Поэтому сразу перейдем к рассмотрению его методов.

SetPlane – согласно документации устанавливает плоскость отражения. Но,  как  показывает  эксперимент,  для  правильного  выполнения  операции

отображения здесь должна быть указана не плоскость, а грань, через которую проходит плоскость отражения. Созданная копия детали «приклеивается» к указанной грани исходной детали. Интерфейс грани (ksEntity) передается в качестве единственного параметра данного метода. В случае успеха метод возвращает значение TRUE.

GetPlane() – возвращает интерфейс (ksEntity) плоскости (грани), установленной методом SetPlane.

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_face =  6;

o3d_baseExtrusion = 24;

o3d_mirrorAllOperation = 49;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntityCollection: ksEntityCollection; EntitySketch,EntityPlane: ksEntity;

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

BaseExtrusionDefinition: ksBaseExtrusionDefinition; MirrorAllDefinition: ksMirrorCopyAllDefinition;

begin

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

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

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

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

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

Document3D.Create(FALSE,true);

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

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

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

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

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

//Эскиз

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlane);

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

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.SetSideParam(TRUE,etBlind,20,30,TRUE);

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

BaseExtrusionDefinition.SetSketch(EntitySketch);

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

EntityExtrusion.Create();

//Получаем массив граней детали EntityCollection:=ksEntityCollection(Part.EntityCollection(o3d_face));

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

//Зеркальное отображение относительно плоскости

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

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

EntityMirror:=ksEntity(Part.NewEntity(o3d_mirrorAllOperation));

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

MirrorAllDefinition:=ksMirrorCopyAllDefinition(EntityMirror.GetDefinition());

//Устанавливаем грань

MirrorAllDefinition.SetPlane(EntityCollection.GetByIndex(1));

//Создаем зеркальное отображение

EntityMirror.Create();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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