Главная » Delphi, OLE, САПР » Фаска – КОМПАС в DELPHI

0

Параметры фаски (ksChamferDefinition)

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

tangent – признак продолжения фаски по касательным ребрам. Если значение   данного   свойства   равно   TRUE,   то   фаска   продолжается   по

касательным  ребрам.  Если  же  значение  этого  свойства  равно  FALSE,  то фаска не продолжается по касательным ребрам.

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

array_()1  – возвращает интерфейс массива ksEntityCollection(см. главу

63) граней или ребер, на которых строится фаска. Каждая грань или ребро в этом массиве описываются интерфейсом ksEntity.

SetChamferParam – устанавливает основные параметры фаски. Ниже представлен прототип этого метода.

SetChamferParam(

transfer: WordBool; //признак направления фаски

distance1: Double; //длина первого катета distance2: Double  //длина второго катета

): WordBool;

Параметр transfer определяет, какой катет считать первым, а какой вторым. Если его значение равно TRUE, то distance1 – это первый катет, а distance2 – второй катет. Если же значение параметра transfer равно FALSE, то distance1 – это второй катет, а distance2 – первый катет.

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

GetChamferParam – позволяет получить основные параметры фаски. Имеет тот же прототип, что и метод SetChamferParam но, с одним отличием: ко всем параметрам применен квалификатор var.

Пример

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

1  В документации КОМПАС данный метод описан как array() (без знака подчеркивания на конце). А в модуле ksTLB он описан как array_() (со знаком подчеркивания на конце).

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_sketch  = 5;

o3d_face = 6;

o3d_baseExtrusion = 24;

o3d_chamfer = 33;

etBlind  = 0;

vm_Shaded = 3;

var

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

EntitySketch, EntityPlaneXOY, EntityExtrusion: ksEntity; EntityChamfer: ksEntity;

EntityCollectionChamfer,EntityCollectionPart:ksEntityCollection; SketchDefinition: ksSketchDefinition;

Document2D : ksDocument2D;

ExtrusionDefinition: ksBaseExtrusionDefinition; ChamferDefinition: ksChamferDefinition;

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(0,0,15,1);

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

SketchDefinition.EndEdit();

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

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

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

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

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

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

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

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

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

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

ExtrusionDefinition.SetSketch(EntitySketch);

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

EntityExtrusion.Create();

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

//Фаска

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

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

EntityChamfer:=ksEntity(Part.NewEntity(o3d_chamfer));

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

ChamferDefinition:=ksChamferDefinition(EntityChamfer.GetDefinition());

//Не продолжать по касательным ребрам

ChamferDefinition.tangent:=FALSE;

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

ChamferDefinition.SetChamferParam(TRUE,8,8);

//Получаем массив граней детали

EntityCollectionPart:=ksEntityCollection(Part.EntityCollection(o3d_face));

//Получаем массив граней, на которых будет строиться фаска

EntityCollectionChamfer:=ksEntityCollection(ChamferDefinition.array_());

EntityCollectionChamfer.Clear();

//Заполняем массив граней, на которых будет строится фаска

EntityCollectionChamfer.Add(EntityCollectionPart.GetByIndex(2));

//Создаем фаску

EntityChamfer.Create();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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