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

0

Параметры копирования элементов детали по концентрической сетке (ksCircularCopyDefinition)

Интерфейс ksCircularCopyDefinition служит для описания параметров копирования элементов детали по концентрической сетке. Рассмотрим свойства интерфейса ksCircularCopyDefinition.

count1 – количество копий в радиальном направлении.

count2 – количество копий в кольцевом направлении.

factor1 – указывает на то как следует интерпретировать значение свойства step1. Если значение свойства factor1 равно TRUE, то свойство step1 устанавливает расстояние между крайними копиями в радиальном направлении. Если же значение свойства factor2 равно FALSE, то свойство step1 устанавливает расстояние между двумя соседними копиями в радиальном направлении.

factor2 – аналогично свойству factor1 но, применительно к свойству step2 в кольцевом направлении. Расстояния в этом направлении указываются в градусах.

geomArray – указывает нужно перестраивать копии. Если значение этого свойства равно TRUE, то копии не перестраиваются. Это приводит к ускорению выполнения операции, но в случае копирования скруглений и фасок возможно появление ошибок. Если же значение свойства geomArray равно FALSE, то все копии перестраиваются заново.

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

осуществляется в прямом направлении.

step1 – зависит от значения свойства factor1.

step2 – зависит от значения свойства factor2.

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

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

GetAxis() – возвращает интерфейс ksEntity, описывающий ось, установленную методом SetAxis.

GetOperationArray()1 – возвращает интерфейс ksEntityCollection (см. главу 63) массива элементов подлежащих копированию. Каждый элемент в этом массиве описывается интерфейсом ksEntity.

SetCopyParamAlongDir – устанавливает параметры копирования в кольцевом направлении. Этот метод используется для установки значений

1   В документации КОМПАС  данный метод описан как OerationArray(),  однако в  модуле ksTLB.pas он представлен именно как GetOperationArray().

некоторых свойств интерфейса ksCircularCopyDefinition. Ниже представлен прототип этого метода.

SetCopyParamAlongDir(

count: Integer;  //свойство count2 step: Double;    //свойство step2 factor: WordBool; //свойство factor2 dir: WordBool    //свойство inverce

): WordBool

В  случае  успеха  метод  SetCopyParamAlongDir  возвращает  значение TRUE.

Пример

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeXOZ = 2;

o3d_planeYOZ = 3;

o3d_sketch  = 5;

o3d_axis2Planes = 9;

o3d_planeOffset = 14;

o3d_baseExtrusion = 24;

o3d_bossExtrusion = 25;

o3d_circularCopy = 36;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntityCollection: ksEntityCollection;

EntityPlaneXOY,EntityPlaneXOZ,EntityPlaneYOZ:ksEntity; EntitySketch,EntityPlaneOffset,EntityAxis: ksEntity;

EntityExtrusion,EntityBossExtrusion,EntityCircularCopy: ksEntity;

SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

BaseExtrusionDefinition: ksBaseExtrusionDefinition; PlaneOffsetDefinition: ksPlaneOffsetDefinition; BossExtrusionDefinition: ksBossExtrusionDefinition;

Axis2PlanesDefinition: ksAxis2PlanesDefinition; CircularCopyDefinition: ksCircularCopyDefinition;

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

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

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

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

//Эскиз для операции выдавливания

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneXOY);

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

EntitySketch.Create();

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

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

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

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

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

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

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

BaseExtrusionDefinition.SetSketch(EntitySketch);

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

EntityExtrusion.Create();

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

//Смещенная плоскость

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

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

EntityPlaneOffset:=ksEntity(Part.NewEntity(o3d_planeOffset));

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset.GetDefinition());

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

PlaneOffsetDefinition.direction:=TRUE;

//Смещение

PlaneOffsetDefinition.offset := 10;

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

PlaneOffsetDefinition.SetPlane(EntityPlaneXOY);

//Создаем смещенную плоскость

EntityPlaneOffset.Create();

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

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

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

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

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

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

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

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

SketchDefinition.SetPlane(EntityPlaneOffset);

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

EntitySketch.Create();

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

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

//Строим окружность Document2D.ksCircle(-30,-30,5,1);

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

SketchDefinition.EndEdit();

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

//Приклеивание выдавливанием

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

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

EntityBossExtrusion:=ksEntity(Part.NewEntity(o3d_bossExtrusion));

//Получаем интерфейс параметров операции "приклеивание выдавливанием" BossExtrusionDefinition:=KsBossExtrusionDefinition(EntityBossExtrusion.GetDefinition());

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

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

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

BossExtrusionDefinition.SetSketch(EntitySketch);

//Cоздаем операцию "приклеивание выдавливанием"

EntityBossExtrusion.Create();

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

//Ось на пересечении двух плоскостей

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

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

EntityAxis:=ksEntity(Part.NewEntity(o3d_axis2Planes));

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

Axis2PlanesDefinition:=ksAxis2PlanesDefinition(EntityAxis.GetDefinition());

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

Axis2PlanesDefinition.SetPlane(1,EntityPlaneXOZ); Axis2PlanesDefinition.SetPlane(2,EntityPlaneYOZ);

//Создаем ось

EntityAxis.Create();

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

//Операция копирования по концентрической сетке

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

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

EntityCircularCopy:=ksEntity(Part.NewEntity(o3d_circularCopy));

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

CircularCopyDefinition:=ksCircularCopyDefinition(EntityCircularCopy.GetDefinition());

//Количество копий в радиальном направлении

CircularCopyDefinition.count1:=1;

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

CircularCopyDefinition.SetAxis(EntityAxis);

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

CircularCopyDefinition.SetCopyParamAlongDir(8,45,FALSE,FALSE);

//Получаем массив копируемых элементов

EntityCollection:=ksEntityCollection(CircularCopyDefinition.GetOperationArray());

EntityCollection.Clear();

//Заполняем массив копируемыъ элементов

EntityCollection.Add(EntityBossExtrusion);

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

EntityCircularCopy.Create();

end;

//Делаем плоскости невидимыми Document3D.hideAllPlanes:=TRUE;

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

Document3D.hideAllAxis:=TRUE;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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